diff --git a/.eslintignore b/.eslintignore index cb12fd758ac..c27af7f91f7 100644 --- a/.eslintignore +++ b/.eslintignore @@ -9,4 +9,5 @@ jest.config.js jest.preprocessor.js W3cWebsocket.js packages/**/rollup.config.js +packages/**/node_modules angular-patch.js diff --git a/.travis.yml b/.travis.yml index 989cf849e59..13990b1a372 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,9 +12,6 @@ addons: - ubuntu-toolchain-r-test packages: - g++-4.8 -env: - matrix: - - CXX=g++-4.8 TEST_SUITE=test before_script: - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start diff --git a/jest.config.js b/jest.config.js index 46063bcc7d8..42b12b0e165 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,6 +1,15 @@ +// TODO: Improve tests and add the branch property to the coverageThreshold config. const config = { - verbose: true, notifyMode: 'success-change', + collectCoverage: true, + coverageDirectory: './coverage/', + coverageThreshold: { + global: { + functions: 80, + lines: 80, + statements: 80 + } + }, notify: true, clearMocks: true, resetMocks: true, @@ -9,7 +18,6 @@ const config = { transform: { '^.+\\.js$': '/../../jest.preprocessor.js' }, - transformIgnorePatterns: ['node_modules/(?!(underscore-es)/)'], bail: true }; diff --git a/jest.preprocessor.js b/jest.preprocessor.js index f8343c7d6a7..56a68407d47 100644 --- a/jest.preprocessor.js +++ b/jest.preprocessor.js @@ -5,7 +5,12 @@ module.exports = require('babel-jest').createTransformer({ plugins: [ '@babel/plugin-proposal-export-default-from', '@babel/plugin-proposal-export-namespace-from', - '@babel/plugin-transform-runtime' + '@babel/plugin-transform-runtime', + ['istanbul', { + 'exclude': [ + 'dist' + ] + }] ] } } diff --git a/package-lock.json b/package-lock.json index c21b70f398c..baa12469726 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2365,11 +2365,6 @@ "integrity": "sha512-nsqTN6zUcm9xtdJiM9OvOJ5EF0kOI8f1Zuug27O/rgtxCRJHGqncSWfCMZUP852dCKPsDsYXGvBhxfRjDBkF5Q==", "dev": true }, - "@types/parsimmon": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" - }, "JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", @@ -4193,15 +4188,6 @@ } } }, - "definitelytyped-header-parser": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", - "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", - "requires": { - "@types/parsimmon": "^1.3.0", - "parsimmon": "^1.2.0" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -10176,7 +10162,8 @@ "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "pascalcase": { "version": "0.1.1", diff --git a/package.json b/package.json index 37b0629516e..ebfd2a3f070 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,12 @@ { "name": "web3", "namespace": "ethereum", - "version": "1.0.0-beta.46", + "version": "1.0.0-beta.48", "description": "Ethereum JavaScript API wrapper repository", "license": "LGPL-3.0", "main": "./packages/web3/src/index.js", "directories": { - "doc": "./doc", - "test": "./test" + "doc": "./doc" }, "scripts": { "clean": "lerna clean", @@ -15,10 +14,12 @@ "bootstrap": "lerna bootstrap", "install:all": "lerna add", "remove:all": "lerna exec npm uninstall", + "install:dev:all": "lerna exec npm install --save-dev", "publish": "npm run clean && npm run bootstrap && npm run travis && lerna publish", "build": "lerna run build", "test": "lerna run test", - "test:coverage": "lerna run test -- -- --coverage && istanbul-combine -d coverage -r lcov -r html ./packages/**/coverage-final.json", + "test:coverage": "lerna run test -- --coverage && npm run istanbulCombine", + "istanbulCombine": "istanbul-combine -d coverage -r lcov -r html ./packages/**/coverage-final.json", "dtslint": "lerna run dtslint", "docs": "cd docs; make html;", "lint": "eslint --cache --fix .", @@ -83,7 +84,7 @@ "@types/node": "^10.12.30", "babel-core": "^7.0.0-bridge.0", "babel-eslint": "^10.0.1", - "babel-jest": "23.6.0", + "babel-jest": "^23.6.0", "coveralls": "^3.0.3", "eslint": "^5.15.1", "eslint-config-prettier": "^3.6.0", @@ -96,9 +97,8 @@ "eslint-plugin-standard": "^4.0.0", "eslint-plugin-unicorn": "^6.0.1", "istanbul-combine": "^0.3.0", - "jest": "23.6.0", + "jest": "^23.6.0", "lerna": "^3.13.1", - "parsimmon": "^1.12.0", "prettier": "1.14.3", "regenerator-runtime": "^0.13.1", "rollup": "^0.67.4", diff --git a/packages/web3-bzz/package-lock.json b/packages/web3-bzz/package-lock.json index ef4cadc668f..cab80ea6e0b 100644 --- a/packages/web3-bzz/package-lock.json +++ b/packages/web3-bzz/package-lock.json @@ -20,7 +20,8 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "accepts": { "version": "1.3.5", @@ -45,17 +46,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -68,7 +72,7 @@ "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", "requires": { "safer-buffer": "~2.1.0" } @@ -81,7 +85,7 @@ "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + "integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=" }, "asynckit": { "version": "0.4.0", @@ -96,12 +100,13 @@ "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=" }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -111,12 +116,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -129,6 +136,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -138,12 +146,13 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "base64-js": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM=" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -156,7 +165,7 @@ "bl": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "integrity": "sha1-oWCRFxcQPAdBDO9j71Gzl8Alr5w=", "requires": { "readable-stream": "^2.3.5", "safe-buffer": "^5.1.1" @@ -165,12 +174,12 @@ "bluebird": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" + "integrity": "sha1-fQHG+WFsmlGrD4xUmnnf5uwz76c=" }, "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=" }, "body-parser": { "version": "1.18.3", @@ -193,6 +202,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -215,7 +225,7 @@ "buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "integrity": "sha1-3Vf6DxCaxZxgJHkETcp7iz0LcdY=", "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" @@ -224,7 +234,7 @@ "buffer-alloc": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "integrity": "sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=", "requires": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" @@ -233,7 +243,7 @@ "buffer-alloc-unsafe": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + "integrity": "sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=" }, "buffer-crc32": { "version": "0.2.13", @@ -253,7 +263,8 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "bytes": { "version": "3.0.0", @@ -263,7 +274,8 @@ "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", @@ -274,6 +286,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -284,6 +297,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -292,6 +306,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -301,12 +316,13 @@ "chownr": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" + "integrity": "sha1-VHJri4//TfBTxCGH6AH7RBLfFJQ=" }, "cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -316,12 +332,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -329,12 +347,13 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "integrity": "sha1-LR0kMXr7ir6V1tLAsHtXgTU52Cg=", "requires": { "delayed-stream": "~1.0.0" } @@ -342,12 +361,14 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "content-disposition": { "version": "0.5.2", @@ -357,7 +378,7 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" }, "cookie": { "version": "0.3.1", @@ -377,7 +398,7 @@ "cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "integrity": "sha1-6sEdpRWS3Ya58G9uesKTs9+HXSk=", "requires": { "object-assign": "^4", "vary": "^1" @@ -387,6 +408,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -406,7 +428,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -414,7 +436,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decode-uri-component": { "version": "0.2.0", @@ -447,7 +470,7 @@ "decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "integrity": "sha1-cYy9P8sWIJcW5womuE57pFkuWvE=", "requires": { "file-type": "^5.2.0", "is-stream": "^1.1.0", @@ -457,7 +480,7 @@ "decompress-tarbz2": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "integrity": "sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=", "requires": { "decompress-tar": "^4.1.0", "file-type": "^6.1.0", @@ -469,14 +492,14 @@ "file-type": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" + "integrity": "sha1-5QzXXTVv/tTjBtxPW89Sp5kDqRk=" } } }, "decompress-targz": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "integrity": "sha1-wJvDXE0R894J8tLaU+neI+fOHu4=", "requires": { "decompress-tar": "^4.1.1", "file-type": "^5.2.0", @@ -505,6 +528,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -528,7 +552,8 @@ "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dom-walk": { "version": "0.1.1", @@ -539,6 +564,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -546,17 +572,18 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "duplexer3": { @@ -581,7 +608,7 @@ "elliptic": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "integrity": "sha1-wtC3d2kRuGcixjLDwGxg8vgZk5o=", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -600,7 +627,7 @@ "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=", "requires": { "once": "^1.4.0" } @@ -613,17 +640,20 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "etag": { "version": "1.8.1", @@ -648,6 +678,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -662,6 +693,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -671,7 +703,7 @@ "express": { "version": "4.16.4", "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "integrity": "sha1-/d72GSYQniTFFeqX/S8b2/Yt8S4=", "requires": { "accepts": "~1.3.5", "array-flatten": "1.1.1", @@ -708,14 +740,14 @@ "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic=" } } }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" }, "extsprintf": { "version": "1.3.0", @@ -748,7 +780,7 @@ "finalhandler": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "integrity": "sha1-7r9O2EAHnIP0JJA4ydcDAIMBsQU=", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -762,7 +794,7 @@ "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic=" } } }, @@ -770,6 +802,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -777,7 +810,7 @@ "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "integrity": "sha1-abRH6IoKXTLD5whPPxcQA0shN24=", "requires": { "is-callable": "^1.1.3" } @@ -790,7 +823,7 @@ "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -810,12 +843,13 @@ "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + "integrity": "sha1-a+Dem+mYzhavivwkSXue6bfM2a0=" }, "fs-extra": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -825,7 +859,7 @@ "fs-minipass": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "integrity": "sha1-BsJ3IYRU7CiN93raVKA7hwKqy50=", "requires": { "minipass": "^2.2.1" } @@ -833,12 +867,14 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "2.3.1", @@ -861,6 +897,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -882,7 +919,7 @@ "got": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "integrity": "sha1-BUUP2ECU5rvqVvRRpDqcKJFmOFo=", "requires": { "decompress-response": "^3.2.0", "duplexer3": "^0.1.4", @@ -910,7 +947,7 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA=" }, "graceful-readlink": { "version": "1.0.1", @@ -925,7 +962,7 @@ "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=", "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -935,6 +972,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -942,24 +980,26 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-symbol-support-x": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" + "integrity": "sha1-FAn5i8ACR9pF2mfO4KNvKC/yZFU=" }, "has-to-string-tag-x": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "integrity": "sha1-oEWrOD17SyASoAFIqwql8pAETU0=", "requires": { "has-symbol-support-x": "^1.4.1" } @@ -967,7 +1007,7 @@ "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -1007,7 +1047,7 @@ "iconv-lite": { "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "integrity": "sha1-KXhx9jvlB63Pv8pxXQzQ7thOmmM=", "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -1015,12 +1055,13 @@ "ieee754": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" + "integrity": "sha1-UL8k5bnIu5ivSWTJQc2wkY2ntgs=" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -1034,7 +1075,8 @@ "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "ipaddr.js": { "version": "1.8.0", @@ -1044,12 +1086,13 @@ "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "integrity": "sha1-HhrfIZ4e62hNaR+dagX/DTCiTXU=" }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-function": { "version": "1.0.1", @@ -1094,7 +1137,8 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", @@ -1104,7 +1148,7 @@ "isurl": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "integrity": "sha1-sn9PSfPNqj6kSgpbfzRi5u3DnWc=", "requires": { "has-to-string-tag-x": "^1.2.0", "is-object": "^1.0.1" @@ -1118,12 +1162,14 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1142,7 +1188,7 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" }, "json-stringify-safe": { "version": "5.0.1", @@ -1181,6 +1227,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -1189,6 +1236,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -1197,17 +1245,17 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=" }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "integrity": "sha1-b54wtHCE2XGnyCD/FabFFnt0wm8=" }, "make-dir": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=", "requires": { "pify": "^3.0.0" }, @@ -1223,6 +1271,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } @@ -1233,12 +1282,13 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, @@ -1255,7 +1305,7 @@ "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=" }, "mime-db": { "version": "1.37.0", @@ -1271,14 +1321,15 @@ } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "integrity": "sha1-SSNTiHju9CBjy4o+OweYeBSHqxs=" }, "min-document": { "version": "2.19.0", @@ -1291,7 +1342,7 @@ "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=" }, "minimalistic-crypto-utils": { "version": "1.0.1", @@ -1302,6 +1353,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1314,7 +1366,7 @@ "minipass": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "integrity": "sha1-ys6+SSAiSX9law8PUeJoKp7S2Eg=", "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -1323,7 +1375,7 @@ "minizlib": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "integrity": "sha1-3SfqYTYkPHyIBoToZyuzpF/ZthQ=", "requires": { "minipass": "^2.2.1" } @@ -1372,12 +1424,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -1385,12 +1439,13 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=" }, "object-assign": { "version": "4.1.1", @@ -1417,6 +1472,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -1426,12 +1482,13 @@ "p-cancelable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" + "integrity": "sha1-ueEjgAvOu3rBOkeb4ZW1B7mNMPo=" }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", @@ -1441,12 +1498,14 @@ "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -1455,6 +1514,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -1470,7 +1530,8 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parse-headers": { "version": "2.0.1", @@ -1489,27 +1550,32 @@ "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "path-to-regexp": { "version": "0.1.7", @@ -1557,12 +1623,12 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=" }, "proxy-addr": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "integrity": "sha1-7PxzO/Iv+Mb0B/onUye5q2fki5M=", "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.8.0" @@ -1571,12 +1637,13 @@ "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha1-6aqG0BAbWxBcvpOsa3hM1UcnYYQ=" }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -1585,17 +1652,17 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=" }, "query-string": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "integrity": "sha1-p4wBK3HBfgXy4/ojGd0zBoLvs8s=", "requires": { "decode-uri-component": "^0.2.0", "object-assign": "^4.1.0", @@ -1610,7 +1677,7 @@ "raw-body": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "integrity": "sha1-GzJOzmtXBuFThVvBFIxlu39uoMM=", "requires": { "bytes": "3.0.0", "http-errors": "1.6.3", @@ -1621,7 +1688,7 @@ "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -1635,12 +1702,12 @@ "regenerator-runtime": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + "integrity": "sha1-+hpxVEdkwDb4xJsToIsllMn4oN4=" }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=", "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1668,6 +1735,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -1676,6 +1744,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -1685,17 +1754,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -1703,12 +1775,12 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" }, "seek-bzip": { "version": "1.0.5", @@ -1731,12 +1803,13 @@ "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "integrity": "sha1-bsyh4PjBVtFBWXVZhI32RzCmu8E=", "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -1756,14 +1829,14 @@ "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic=" } } }, "serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "integrity": "sha1-CV6Ecv1bRiN9tQzkhqQ/S4bGzsE=", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -1774,7 +1847,7 @@ "servify": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", - "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "integrity": "sha1-FCq3vuHx0DO2bQcHCGCFsXwG25U=", "requires": { "body-parser": "^1.16.0", "cors": "^2.8.1", @@ -1786,7 +1859,8 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "setimmediate": { "version": "1.0.5", @@ -1796,7 +1870,7 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" }, "sha3": { "version": "1.2.2", @@ -1810,6 +1884,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -1817,12 +1892,14 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "simple-concat": { "version": "1.0.0", @@ -1832,7 +1909,7 @@ "simple-get": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", - "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "integrity": "sha1-DiLpHUV12HYgYgvJEwjVenf0S10=", "requires": { "decompress-response": "^3.3.0", "once": "^1.3.1", @@ -1842,12 +1919,13 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -1868,7 +1946,8 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "strict-uri-encode": { "version": "1.1.0", @@ -1879,6 +1958,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -1887,7 +1967,7 @@ "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", "requires": { "safe-buffer": "~5.1.0" } @@ -1896,6 +1976,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -1903,7 +1984,7 @@ "strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", - "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "integrity": "sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=", "requires": { "is-natural-number": "^4.0.1" } @@ -1911,17 +1992,20 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "swarm-js": { "version": "0.1.39", @@ -1957,7 +2041,7 @@ "tar": { "version": "4.4.8", "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "integrity": "sha1-sZ7sP94qluZGZt+f20DFyhvDdH0=", "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", @@ -1971,7 +2055,7 @@ "tar-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "integrity": "sha1-jqVdqzeXIlPZqa+Q/c1VmuQ1xVU=", "requires": { "bl": "^1.0.0", "buffer-alloc": "^1.2.0", @@ -1995,12 +2079,12 @@ "to-buffer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", - "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + "integrity": "sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA=" }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=", "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -2021,12 +2105,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -2040,13 +2126,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -2067,21 +2154,22 @@ "type-is": { "version": "1.6.16", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "integrity": "sha1-+JzjQVQcZysl7nrjxz3uOyvlAZQ=", "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.18" } }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + "integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw=" }, "unbzip2-stream": { "version": "1.3.1", @@ -2112,7 +2200,7 @@ "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=" }, "unpipe": { "version": "1.0.0", @@ -2122,7 +2210,7 @@ "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", "requires": { "punycode": "^2.1.0" } @@ -2158,7 +2246,7 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=" }, "vary": { "version": "1.1.2", @@ -2179,6 +2267,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -2186,12 +2275,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -2200,12 +2291,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2214,6 +2307,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2224,6 +2318,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2238,7 +2333,7 @@ "ws": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "integrity": "sha1-8c+E/i1ekB686U767OeF8YeiKPI=", "requires": { "async-limiter": "~1.0.0", "safe-buffer": "~5.1.0", @@ -2248,7 +2343,7 @@ "xhr": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", - "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", + "integrity": "sha1-vtjRZ21co2EIZnaSt0sxbEluSd0=", "requires": { "global": "~4.3.0", "is-function": "^1.0.1", @@ -2259,7 +2354,7 @@ "xhr-request": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "integrity": "sha1-9KfBhoufGYcjRE2C3K4xdkPy4u0=", "requires": { "buffer-to-arraybuffer": "^0.0.5", "object-assign": "^4.1.1", @@ -2286,17 +2381,19 @@ "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yallist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + "integrity": "sha1-tLBJ4xS+VF486AIjbWzSLNkcPek=" }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -2316,6 +2413,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-bzz/package.json b/packages/web3-bzz/package.json index 0d760e922b6..f0bf7da48b6 100644 --- a/packages/web3-bzz/package.json +++ b/packages/web3-bzz/package.json @@ -18,7 +18,6 @@ "dependencies": { "@babel/runtime": "^7.3.1", "@types/node": "^10.12.18", - "dtslint": "0.5.4", "lodash": "^4.17.11", "swarm-js": "^0.1.39" }, diff --git a/packages/web3-core-helpers/package-lock.json b/packages/web3-core-helpers/package-lock.json index 263b554aa47..3e92543c023 100644 --- a/packages/web3-core-helpers/package-lock.json +++ b/packages/web3-core-helpers/package-lock.json @@ -15,12 +15,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -31,17 +33,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -50,6 +55,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -57,27 +63,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -87,12 +98,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -105,6 +118,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -114,12 +128,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -128,6 +144,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -136,22 +153,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -162,6 +183,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -170,6 +192,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -180,6 +203,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -189,12 +213,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -202,12 +228,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -215,22 +243,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -243,6 +275,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -250,12 +283,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -264,17 +299,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -282,23 +320,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -308,6 +348,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -315,22 +356,26 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -344,27 +389,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -372,12 +422,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -388,6 +440,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -397,17 +450,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -416,6 +472,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -424,6 +481,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -436,17 +494,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -456,6 +517,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -463,19 +525,22 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -486,6 +551,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -494,47 +560,56 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -543,27 +618,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -572,6 +652,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -583,6 +664,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -591,6 +673,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -599,48 +682,54 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=" }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -648,12 +737,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -661,12 +752,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -674,17 +767,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -693,6 +789,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -702,22 +799,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -726,6 +827,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -733,47 +835,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -782,22 +893,25 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + "integrity": "sha1-+hpxVEdkwDb4xJsToIsllMn4oN4=" }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -824,12 +938,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -841,6 +957,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -849,6 +966,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -858,17 +976,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -876,27 +997,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -904,22 +1030,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -935,12 +1065,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -950,6 +1082,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -957,22 +1090,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -981,12 +1118,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1000,13 +1139,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1015,6 +1155,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1022,22 +1163,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1045,12 +1190,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1061,6 +1208,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1068,12 +1216,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1082,12 +1232,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1096,6 +1248,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1106,6 +1259,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1115,17 +1269,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1145,6 +1302,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-core-helpers/package.json b/packages/web3-core-helpers/package.json index 7aa198609a4..59ed037002f 100644 --- a/packages/web3-core-helpers/package.json +++ b/packages/web3-core-helpers/package.json @@ -17,7 +17,6 @@ }, "dependencies": { "@babel/runtime": "^7.3.1", - "dtslint": "0.5.4", "lodash": "^4.17.11", "web3-eth-iban": "1.0.0-beta.48", "web3-utils": "1.0.0-beta.48" diff --git a/packages/web3-core-helpers/types/tests/formatters-test.ts b/packages/web3-core-helpers/types/tests/formatters-test.ts index c421c4a5ee2..8e695470b31 100644 --- a/packages/web3-core-helpers/types/tests/formatters-test.ts +++ b/packages/web3-core-helpers/types/tests/formatters-test.ts @@ -19,7 +19,6 @@ import {AbstractWeb3Module} from 'web3-core'; import {formatters} from 'web3-core-helpers'; -import {ProvidersModuleFactory} from 'web3-providers'; // $ExpectType number formatters.outputBigNumberFormatter(100); @@ -34,12 +33,7 @@ formatters.inputAddressFormatter('0x0'); formatters.isPredefinedBlockNumber('latest'); // $ExpectType string -formatters.inputDefaultBlockNumberFormatter('0x0', new AbstractWeb3Module( - 'http://localhost:8545', - new ProvidersModuleFactory(), - {}, - {} -)); +formatters.inputDefaultBlockNumberFormatter('0x0', new AbstractWeb3Module('http://localhost:8545')); // $ExpectType string | number formatters.inputBlockNumberFormatter('0x0'); diff --git a/packages/web3-core-method/README.md b/packages/web3-core-method/README.md index bdbc2913b8b..fd538adeb04 100644 --- a/packages/web3-core-method/README.md +++ b/packages/web3-core-method/README.md @@ -10,97 +10,6 @@ The Method module abstracts the JSON-RPC method and is used within most [web3.js npm install web3-core-method ``` -## Exported classes - - ``` js - MethodModuleFactory - AbstractMethod - AbstractMethodFactory - - /** - * Methods - */ - - // Network - GetProtocolVersionMethod - VersionMethod - ListeningMethod - PeerCountMethod - - // Node - GetNodeInfoMethod - GetCoinbaseMethod - IsMiningMethod - GetHashrateMethod - IsSyncingMethod - GetGasPriceMethod - SubmitWorkMethod - GetWorkMethod - - // Account - GetAccountsMethod - GetBalanceMethod - GetTransactionCountMethod - RequestAccountsMethod - - // Block - GetBlockNumberMethod - GetBlockMethod - GetUncleMethod - GetBlockTransactionCountMethod - GetBlockUncleCountMethod - - // Transaction - GetTransactionMethod - GetTransactionFromBlockMethod - GetTransactionReceipt - SendRawTransactionMethod - SignTransactionMethod - SendTransactionMethod - - // Global - GetCodeMethod - SignMethod - CallMethod - GetStorageAtMethod - EstimateGasMethod - GetPastLogsMethod - - // Personal - EcRecoverMethod - ImportRawKeyMethod - ListAccountsMethod - LockAccountMethod - NewAccountMethod - PersonalSendTransactionMethod - PersonalSignMethod - PersonalSignTransactionMethod - UnlockAccountMethod - - // SHH - AddPrivateKeyMethod - AddSymKeyMethod - DeleteKeyPairMethod - DeleteMessageFilterMethod - DeleteSymKeyMethod - GenerateSymKeyFromPasswordMethod - GetFilterMessagesMethod - GetInfoMethod - GetPrivateKeyMethod - GetPublicKeyMethod - GetSymKeyMethod - HasKeyPairMethod - HasSymKeyMethod - MarkTrustedPeerMethod - NewKeyPairMethod - NewMessageFilterMethod - NewSymKeyMethod - PostMethod - SetMaxMessageSizeMethod - SetMinPoWMethod - ShhVersionMethod -``` - ## Types All the typescript typings are placed in the types folder. diff --git a/packages/web3-core-method/jest.config.js b/packages/web3-core-method/jest.config.js index 0bc758cec34..e81ea4f1a57 100644 --- a/packages/web3-core-method/jest.config.js +++ b/packages/web3-core-method/jest.config.js @@ -6,8 +6,6 @@ module.exports = jestConfig({ 'AbstractWeb3Module': 'web3-core', 'Utils': 'web3-utils', 'formatters': 'web3-core-helpers', - 'PromiEvent': 'web3-core-promievent', - 'Subscription': 'web3-core-subscriptions', - 'SubscriptionsFactory': 'web3-core-subscriptions', - 'AbstractSubscription': 'web3-core-subscriptions' + 'AbstractSubscription': 'web3-core-subscriptions', + 'NewHeadsSubscription': 'web3-core-subscriptions' }); diff --git a/packages/web3-core-promievent/src/PromiEvent.js b/packages/web3-core-method/lib/PromiEvent.js similarity index 86% rename from packages/web3-core-promievent/src/PromiEvent.js rename to packages/web3-core-method/lib/PromiEvent.js index ae1e78c966a..107f14aba71 100644 --- a/packages/web3-core-promievent/src/PromiEvent.js +++ b/packages/web3-core-method/lib/PromiEvent.js @@ -16,14 +16,13 @@ */ /** * @file PromiEvent.js - * @author Samuel Furter + * @author Fabian Vogelsteller , Samuel Furter * @date 2018 */ import EventEmitter from 'eventemitter3'; -// TODO: Remove this module and use the EventEmitter or Promise separately. This kind of object could be implemented in -// TODO: the AbstractSendMethod. I think the better way would be a API with just Observable and Promise objects. +// TODO: add handleSuccess() and handleError() method instead of having them in the send method class export default class PromiEvent { /** * @constructor diff --git a/packages/web3-core-method/lib/factories/AbstractMethodFactory.js b/packages/web3-core-method/lib/factories/AbstractMethodFactory.js index 21524a1b802..96d6e9826e8 100644 --- a/packages/web3-core-method/lib/factories/AbstractMethodFactory.js +++ b/packages/web3-core-method/lib/factories/AbstractMethodFactory.js @@ -20,20 +20,19 @@ * @date 2018 */ -import SendRawTransactionMethod from '../../src/methods/transaction/SendRawTransactionMethod'; -import GetTransactionCountMethod from '../../src/methods/account/GetTransactionCountMethod'; -import ChainIdMethod from '../../src/methods/network/ChainIdMethod'; +import {NewHeadsSubscription} from 'web3-core-subscriptions'; +import GetBlockByNumberMethod from '../../src/methods/block/GetBlockByNumberMethod'; +import GetTransactionReceiptMethod from '../../src/methods/transaction/GetTransactionReceiptMethod'; +import TransactionObserver from '../../src/observers/TransactionObserver'; export default class AbstractMethodFactory { /** - * @param {MethodModuleFactory} methodModuleFactory * @param {Utils} utils * @param {Object} formatters * * @constructor */ - constructor(methodModuleFactory, utils, formatters) { - this.methodModuleFactory = methodModuleFactory; + constructor(utils, formatters) { this.utils = utils; this.formatters = formatters; this._methods = null; @@ -79,41 +78,41 @@ export default class AbstractMethodFactory { } /** - * TODO: Find a cleaner way for the dependency resolution here. - * * Returns an MethodModel * * @param {String} name + * @param {AbstractWeb3Module} moduleInstance * * @returns {AbstractMethod} */ - createMethod(name) { + createMethod(name, moduleInstance) { const method = this.methods[name]; - /* eslint-disable new-cap */ - switch (method.Type) { - case 'CALL': - return new method(this.utils, this.formatters); - case 'SEND': - if (method.name === 'SendTransactionMethod') { - const transactionConfirmationWorkflow = this.methodModuleFactory.createTransactionConfirmationWorkflow(); + if (method.Type === 'observed-transaction-method') { + let timeout = moduleInstance.transactionBlockTimeout; + const providerName = moduleInstance.currentProvider.constructor.name; - return new method( - this.utils, - this.formatters, - transactionConfirmationWorkflow, - new SendRawTransactionMethod(this.utils, this.formatters, transactionConfirmationWorkflow), - new ChainIdMethod(this.utils, this.formatters), - new GetTransactionCountMethod(this.utils, this.formatters) - ); - } + if (providerName === 'HttpProvider' || providerName === 'CustomProvider') { + timeout = moduleInstance.transactionPollingTimeout; + } - return new method( - this.utils, - this.formatters, - this.methodModuleFactory.createTransactionConfirmationWorkflow() - ); + // eslint-disable-next-line new-cap + return new method( + this.utils, + this.formatters, + moduleInstance, + new TransactionObserver( + moduleInstance.currentProvider, + timeout, + moduleInstance.transactionConfirmationBlocks, + new GetTransactionReceiptMethod(this.utils, this.formatters, moduleInstance), + new GetBlockByNumberMethod(this.utils, this.formatters, moduleInstance), + new NewHeadsSubscription(this.utils, this.formatters, moduleInstance) + ) + ); } - /* eslint-enable new-cap */ + + // eslint-disable-next-line new-cap + return new method(this.utils, this.formatters, moduleInstance); } } diff --git a/packages/web3-core-method/lib/methods/AbstractMethod.js b/packages/web3-core-method/lib/methods/AbstractMethod.js index fe7cdba9445..3a6d5d3009b 100644 --- a/packages/web3-core-method/lib/methods/AbstractMethod.js +++ b/packages/web3-core-method/lib/methods/AbstractMethod.js @@ -23,7 +23,6 @@ import isFunction from 'lodash/isFunction'; import isString from 'lodash/isString'; import cloneDeep from 'lodash/cloneDeep'; -import {PromiEvent} from 'web3-core-promievent'; export default class AbstractMethod { /** @@ -31,13 +30,14 @@ export default class AbstractMethod { * @param {Number} parametersAmount * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(rpcMethod, parametersAmount, utils, formatters) { + constructor(rpcMethod, parametersAmount, utils, formatters, moduleInstance) { this.utils = utils; this.formatters = formatters; - this.promiEvent = new PromiEvent(); + this.moduleInstance = moduleInstance; this._arguments = { parameters: [] }; @@ -68,15 +68,42 @@ export default class AbstractMethod { } /** - * Checks which command should be executed + * Sends a JSON-RPC call request * * @method execute * - * @param {AbstractWeb3Module} moduleInstance - * - * @returns {Promise|PromiEvent|String} + * @callback callback callback(error, result) + * @returns {Promise} */ - execute(moduleInstance) {} + async execute() { + this.beforeExecution(this.moduleInstance); + + if (this.parameters.length !== this.parametersAmount) { + throw new Error( + `Invalid Arguments length: expected: ${this.parametersAmount}, given: ${this.parameters.length}` + ); + } + + try { + let response = await this.moduleInstance.currentProvider.send(this.rpcMethod, this.parameters); + + if (response) { + response = this.afterExecution(response); + } + + if (this.callback) { + this.callback(false, response); + } + + return response; + } catch (error) { + if (this.callback) { + this.callback(error, null); + } + + throw error; + } + } /** * Setter for the rpcMethod property @@ -169,11 +196,11 @@ export default class AbstractMethod { /** * Setter for the arguments property * - * @property arguments + * @method setArguments * * @param {IArguments} args */ - set arguments(args) { + setArguments(args) { let parameters = cloneDeep([...args]); let callback = null; @@ -194,11 +221,11 @@ export default class AbstractMethod { /** * Getter for the arguments property * - * @property arguments + * @property getArguments * * @returns {{callback: Function|null, parameters: Array}} */ - get arguments() { + getArguments() { return this._arguments; } @@ -212,6 +239,6 @@ export default class AbstractMethod { * @returns {Boolean} */ isHash(parameter) { - return isString(parameter) && parameter.indexOf('0x') === 0; + return isString(parameter) && parameter.startsWith('0x'); } } diff --git a/packages/web3-core-method/lib/methods/AbstractSendMethod.js b/packages/web3-core-method/lib/methods/AbstractSendMethod.js deleted file mode 100644 index c7636f65d33..00000000000 --- a/packages/web3-core-method/lib/methods/AbstractSendMethod.js +++ /dev/null @@ -1,94 +0,0 @@ -/* - This file is part of web3.js. - - web3.js is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - web3.js is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with web3.js. If not, see . -*/ -/** - * @file AbstractSendMethod.js - * @author Samuel Furter - * @date 2018 - */ - -import AbstractMethod from './AbstractMethod'; - -export default class AbstractSendMethod extends AbstractMethod { - /** - * @param {String} rpcMethod - * @param {Number} parametersAmount - * @param {Utils} utils - * @param {Object} formatters - * @param {TransactionConfirmationWorkflow} transactionConfirmationWorkflow - * - * @constructor - */ - constructor(rpcMethod, parametersAmount, utils, formatters, transactionConfirmationWorkflow) { - super(rpcMethod, parametersAmount, utils, formatters); - this.transactionConfirmationWorkflow = transactionConfirmationWorkflow; - } - - /** - * Returns the commandType of this Method - * - * @property CommandType - * - * @returns {String} - */ - static get Type() { - return 'SEND'; - } - - /** - * Sends the request and returns a PromiEvent Object - * - * @method execute - * - * @param {AbstractWeb3Module} moduleInstance - * @param {PromiEvent} promiEvent - * - * @callback callback callback(error, result) - * @returns {PromiEvent} - */ - execute(moduleInstance, promiEvent) { - this.beforeExecution(moduleInstance); - - if (this.parameters.length !== this.parametersAmount) { - throw new Error( - `Invalid Arguments length: expected: ${this.parametersAmount}, given: ${this.parameters.length}` - ); - } - - moduleInstance.currentProvider - .send(this.rpcMethod, this.parameters) - .then((response) => { - this.transactionConfirmationWorkflow.execute(this, moduleInstance, response, promiEvent); - - if (this.callback) { - this.callback(false, response); - } - - promiEvent.emit('transactionHash', response); - }) - .catch((error) => { - if (this.callback) { - this.callback(error, null); - } - - promiEvent.reject(error); - promiEvent.emit('error', error); - promiEvent.removeAllListeners(); - }); - - return promiEvent; - } -} diff --git a/packages/web3-core-method/src/methods/block/GetBlockMethod.js b/packages/web3-core-method/lib/methods/block/AbstractGetBlockMethod.js similarity index 83% rename from packages/web3-core-method/src/methods/block/GetBlockMethod.js rename to packages/web3-core-method/lib/methods/block/AbstractGetBlockMethod.js index 0e0effce97b..882a8351a22 100644 --- a/packages/web3-core-method/src/methods/block/GetBlockMethod.js +++ b/packages/web3-core-method/lib/methods/block/AbstractGetBlockMethod.js @@ -15,23 +15,25 @@ along with web3.js. If not, see . */ /** - * @file GetBlockMethod.js + * @file AbstractGetBlockMethod.js * @author Samuel Furter * @date 2018 */ import isFunction from 'lodash/isFunction'; -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetBlockMethod extends AbstractCallMethod { +export default class AbstractGetBlockMethod extends AbstractMethod { /** + * @param {String} rpcMethod * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getBlockByNumber', 2, utils, formatters); + constructor(rpcMethod, utils, formatters, moduleInstance) { + super(rpcMethod, 2, utils, formatters, moduleInstance); } /** @@ -42,10 +44,6 @@ export default class GetBlockMethod extends AbstractCallMethod { * @param {AbstractWeb3Module} moduleInstance - The package where the method is called from for example Eth. */ beforeExecution(moduleInstance) { - if (this.isHash(this.parameters[0])) { - this.rpcMethod = 'eth_getBlockByHash'; - } - this.parameters[0] = this.formatters.inputBlockNumberFormatter(this.parameters[0]); // Optional second parameter 'returnTransactionObjects' could also be the callback diff --git a/packages/web3-core-method/src/methods/block/GetBlockUncleCountMethod.js b/packages/web3-core-method/lib/methods/block/AbstractGetBlockTransactionCountMethod.js similarity index 77% rename from packages/web3-core-method/src/methods/block/GetBlockUncleCountMethod.js rename to packages/web3-core-method/lib/methods/block/AbstractGetBlockTransactionCountMethod.js index 2d0db4c122a..45a593f9327 100644 --- a/packages/web3-core-method/src/methods/block/GetBlockUncleCountMethod.js +++ b/packages/web3-core-method/lib/methods/block/AbstractGetBlockTransactionCountMethod.js @@ -15,22 +15,24 @@ along with web3.js. If not, see . */ /** - * @file GetBlockUncleCountMethod.js + * @file AbstractGetBlockTransactionCountMethod.js * @author Samuel Furter * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetBlockUncleCountMethod extends AbstractCallMethod { +export default class AbstractGetBlockTransactionCountMethod extends AbstractMethod { /** + * @param {String} rpcMethod * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getUncleCountByBlockNumber', 1, utils, formatters); + constructor(rpcMethod, utils, formatters, moduleInstance) { + super(rpcMethod, 1, utils, formatters, moduleInstance); } /** @@ -41,10 +43,6 @@ export default class GetBlockUncleCountMethod extends AbstractCallMethod { * @param {AbstractWeb3Module} moduleInstance */ beforeExecution(moduleInstance) { - if (this.isHash(this.parameters[0])) { - this.rpcMethod = 'eth_getUncleCountByBlockHash'; - } - this.parameters[0] = this.formatters.inputBlockNumberFormatter(this.parameters[0]); } diff --git a/packages/web3-core-method/src/methods/block/GetBlockTransactionCountMethod.js b/packages/web3-core-method/lib/methods/block/AbstractGetBlockUncleCountMethod.js similarity index 76% rename from packages/web3-core-method/src/methods/block/GetBlockTransactionCountMethod.js rename to packages/web3-core-method/lib/methods/block/AbstractGetBlockUncleCountMethod.js index 1e09bbf9feb..d28d0a48e27 100644 --- a/packages/web3-core-method/src/methods/block/GetBlockTransactionCountMethod.js +++ b/packages/web3-core-method/lib/methods/block/AbstractGetBlockUncleCountMethod.js @@ -15,22 +15,24 @@ along with web3.js. If not, see . */ /** - * @file GetBlockTransactionCountMethod.js + * @file AbstractGetBlockUncleCountMethod.js * @author Samuel Furter * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetBlockTransactionCountMethod extends AbstractCallMethod { +export default class AbstractGetBlockUncleCountMethod extends AbstractMethod { /** + * @param {String} rpcMethod * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getBlockTransactionCountByNumber', 1, utils, formatters); + constructor(rpcMethod, utils, formatters, moduleInstance) { + super(rpcMethod, 1, utils, formatters, moduleInstance); } /** @@ -41,10 +43,6 @@ export default class GetBlockTransactionCountMethod extends AbstractCallMethod { * @param {AbstractWeb3Module} moduleInstance */ beforeExecution(moduleInstance) { - if (this.isHash(this.parameters[0])) { - this.rpcMethod = 'eth_getBlockTransactionCountByHash'; - } - this.parameters[0] = this.formatters.inputBlockNumberFormatter(this.parameters[0]); } diff --git a/packages/web3-core-method/src/methods/block/GetUncleMethod.js b/packages/web3-core-method/lib/methods/block/AbstractGetUncleMethod.js similarity index 79% rename from packages/web3-core-method/src/methods/block/GetUncleMethod.js rename to packages/web3-core-method/lib/methods/block/AbstractGetUncleMethod.js index b74cbcf2cd4..d1ff707787d 100644 --- a/packages/web3-core-method/src/methods/block/GetUncleMethod.js +++ b/packages/web3-core-method/lib/methods/block/AbstractGetUncleMethod.js @@ -15,22 +15,24 @@ along with web3.js. If not, see . */ /** - * @file GetUncleMethod.js + * @file AbstractGetUncleMethod.js * @author Samuel Furter * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetUncleMethod extends AbstractCallMethod { +export default class AbstractGetUncleMethod extends AbstractMethod { /** + * @param {String} rpcMethod * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getUncleByBlockNumberAndIndex', 2, utils, formatters); + constructor(rpcMethod, utils, formatters, moduleInstance) { + super(rpcMethod, 2, utils, formatters, moduleInstance); } /** @@ -41,10 +43,6 @@ export default class GetUncleMethod extends AbstractCallMethod { * @param {AbstractWeb3Module} moduleInstance */ beforeExecution(moduleInstance) { - if (this.isHash(this.parameters[0])) { - this.rpcMethod = 'eth_getUncleByBlockHashAndIndex'; - } - this.parameters[0] = this.formatters.inputBlockNumberFormatter(this.parameters[0]); this.parameters[1] = this.utils.numberToHex(this.parameters[1]); } diff --git a/packages/web3-core-method/src/methods/transaction/GetTransactionFromBlockMethod.js b/packages/web3-core-method/lib/methods/transaction/AbstractGetTransactionFromBlockMethod.js similarity index 78% rename from packages/web3-core-method/src/methods/transaction/GetTransactionFromBlockMethod.js rename to packages/web3-core-method/lib/methods/transaction/AbstractGetTransactionFromBlockMethod.js index 9bf649a726a..cd6530dbd9b 100644 --- a/packages/web3-core-method/src/methods/transaction/GetTransactionFromBlockMethod.js +++ b/packages/web3-core-method/lib/methods/transaction/AbstractGetTransactionFromBlockMethod.js @@ -15,22 +15,24 @@ along with web3.js. If not, see . */ /** - * @file GetTransactionFromBlockMethod.js + * @file AbstractGetTransactionFromBlockMethod.js * @author Samuel Furter * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetTransactionFromBlockMethod extends AbstractCallMethod { +export default class AbstractGetTransactionFromBlockMethod extends AbstractMethod { /** + * @param {String} rpcMethod * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getTransactionByBlockNumberAndIndex', 2, utils, formatters); + constructor(rpcMethod, utils, formatters, moduleInstance) { + super(rpcMethod, 2, utils, formatters, moduleInstance); } /** @@ -41,10 +43,6 @@ export default class GetTransactionFromBlockMethod extends AbstractCallMethod { * @param {AbstractWeb3Module} moduleInstance - The package where the method is called from for example Eth. */ beforeExecution(moduleInstance) { - if (this.isHash(this.parameters[0])) { - this.rpcMethod = 'eth_getTransactionByBlockHashAndIndex'; - } - this.parameters[0] = this.formatters.inputBlockNumberFormatter(this.parameters[0]); this.parameters[1] = this.utils.numberToHex(this.parameters[1]); } diff --git a/packages/web3-core-method/lib/methods/transaction/AbstractObservedTransactionMethod.js b/packages/web3-core-method/lib/methods/transaction/AbstractObservedTransactionMethod.js new file mode 100644 index 00000000000..29319ac8aef --- /dev/null +++ b/packages/web3-core-method/lib/methods/transaction/AbstractObservedTransactionMethod.js @@ -0,0 +1,177 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file AbstractObservedTransactionMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import PromiEvent from '../../PromiEvent'; +import AbstractMethod from '../AbstractMethod'; + +export default class AbstractObservedTransactionMethod extends AbstractMethod { + /** + * @param {String} rpcMethod + * @param {Number} parametersAmount + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * @param {TransactionObserver} transactionObserver + * + * @constructor + */ + constructor(rpcMethod, parametersAmount, utils, formatters, moduleInstance, transactionObserver) { + super(rpcMethod, parametersAmount, utils, formatters, moduleInstance); + + this.transactionObserver = transactionObserver; + this.promiEvent = new PromiEvent(); + } + + /** + * This type will be used in the AbstractMethodFactory. + * + * @returns {String} + */ + static get Type() { + return 'observed-transaction-method'; + } + + /** + * Sends the request and returns a PromiEvent Object + * + * @method execute + * + * + * @callback callback callback(error, result) + * @returns {PromiEvent} + */ + execute() { + this.beforeExecution(this.moduleInstance); + + this.moduleInstance.currentProvider + .send(this.rpcMethod, this.parameters) + .then((transactionHash) => { + let confirmations, receipt; + + if (this.callback) { + this.callback(false, transactionHash); + + return; + } + + this.promiEvent.emit('transactionHash', transactionHash); + + const transactionConfirmationSubscription = this.transactionObserver.observe(transactionHash).subscribe( + (transactionConfirmation) => { + confirmations = transactionConfirmation.confirmations; + receipt = transactionConfirmation.receipt; + + if (this.hasRevertReceiptStatus(receipt)) { + this.handleError( + new Error( + `Transaction has been reverted by the EVM:\n${JSON.stringify(receipt, null, 2)}` + ), + receipt, + confirmations + ); + + transactionConfirmationSubscription.unsubscribe(); + + return; + } + + if (receipt.outOfGas) { + this.handleError( + new Error( + `Transaction ran out of gas. Please provide more gas:\n${JSON.stringify( + receipt, + null, + 2 + )}` + ), + receipt, + confirmations + ); + + transactionConfirmationSubscription.unsubscribe(); + + return; + } + + this.promiEvent.emit('confirmation', confirmations, this.afterExecution(receipt)); + }, + (error) => { + this.handleError(error, receipt, confirmations); + }, + () => { + if (this.promiEvent.listenerCount('receipt') > 0) { + this.promiEvent.emit('receipt', this.afterExecution(receipt)); + this.promiEvent.removeAllListeners(); + + return; + } + + this.promiEvent.resolve(this.afterExecution(receipt)); + } + ); + }) + .catch((error) => { + if (this.callback) { + this.callback(error, null); + + return; + } + + this.handleError(error, false, 0); + }); + + return this.promiEvent; + } + + /** + * This methods calls the correct error methods of the PromiEvent object. + * + * @method handleError + * + * @param {Error} error + * @param {Object} receipt + * @param {Number} confirmations + */ + handleError(error, receipt, confirmations) { + if (this.promiEvent.listenerCount('error') > 0) { + this.promiEvent.emit('error', error, receipt, confirmations); + this.promiEvent.removeAllListeners(); + + return; + } + + this.promiEvent.reject(error); + } + + /** + * Checks if the status property has a revert state + * + * @method hasRevertReceiptStatus + * + * @param {Object} receipt + * + * @returns {Boolean} + */ + hasRevertReceiptStatus(receipt) { + return Boolean(parseInt(receipt.status)) === false && receipt.status !== undefined && receipt.status !== null; + } +} diff --git a/packages/web3-core-method/package-lock.json b/packages/web3-core-method/package-lock.json index 6c675cd3716..51ff135d61f 100644 --- a/packages/web3-core-method/package-lock.json +++ b/packages/web3-core-method/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@babel/runtime": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz", - "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz", + "integrity": "sha1-c9ErqBnjZfz3/RUq7VbW35fSHIM=", "requires": { "regenerator-runtime": "^0.12.0" } @@ -15,12 +15,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -31,17 +33,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -50,6 +55,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -57,27 +63,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -87,12 +98,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -105,6 +118,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -114,12 +128,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -128,6 +144,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -136,22 +153,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -162,6 +183,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -170,6 +192,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -180,6 +203,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -189,12 +213,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -202,12 +228,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -215,22 +243,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -243,6 +275,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -250,12 +283,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -264,17 +299,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -282,23 +320,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -308,6 +348,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -315,27 +356,31 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "eventemitter3": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" + "integrity": "sha1-CQtNbNvWRe0Qv3UNS1QHlC17oWM=" }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -349,27 +394,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -377,12 +427,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -393,6 +445,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -402,17 +455,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -421,6 +477,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -429,6 +486,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -441,17 +499,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -461,6 +522,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -468,19 +530,22 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -491,6 +556,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -499,47 +565,56 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -548,27 +623,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -577,6 +657,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -588,6 +669,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -596,6 +678,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -604,48 +687,54 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=" }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -653,12 +742,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -666,12 +757,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -679,17 +772,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -698,6 +794,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -707,22 +804,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -731,6 +832,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -738,47 +840,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -787,22 +898,25 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + "integrity": "sha1-+hpxVEdkwDb4xJsToIsllMn4oN4=" }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -829,12 +943,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -846,6 +962,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -854,6 +971,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -863,45 +981,62 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha1-87sP572n+2nerAwW8XtQsLh5BQQ=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -909,22 +1044,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -940,12 +1079,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -955,6 +1096,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -962,22 +1104,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -986,12 +1132,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha1-1+TdeSRdhUKMTX5IIqeZF5VMooY=", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1005,13 +1153,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1020,6 +1169,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1027,22 +1177,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1050,12 +1204,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1066,6 +1222,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1073,12 +1230,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1087,12 +1246,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1101,6 +1262,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1111,6 +1273,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1120,17 +1283,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1150,6 +1316,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-core-method/package.json b/packages/web3-core-method/package.json index bebfa0ba600..fd9c10667d7 100644 --- a/packages/web3-core-method/package.json +++ b/packages/web3-core-method/package.json @@ -2,7 +2,7 @@ "name": "web3-core-method", "namespace": "ethereum", "version": "1.0.0-beta.48", - "description": "Handles the JSON-RPC methods. This package is internally used by web3.", + "description": "Handles the JSON-RPC methods. This package is also internally used by web3.", "repository": "https://github.com/ethereum/web3.js/tree/1.0/packages/web3-core-method", "license": "LGPL-3.0", "main": "dist/web3-core-method.cjs.js", @@ -18,18 +18,17 @@ "types": "types", "dependencies": { "@babel/runtime": "^7.3.1", - "dtslint": "0.5.4", "eventemitter3": "3.1.0", - "lodash": "^4.17.11", - "web3-core": "1.0.0-beta.48", - "web3-core-helpers": "1.0.0-beta.48", - "web3-core-promievent": "1.0.0-beta.48", - "web3-core-subscriptions": "1.0.0-beta.48", - "web3-utils": "1.0.0-beta.48" + "lodash": "^4.17.11" }, "devDependencies": { + "rxjs": "^6.4.0", "dtslint": "^0.4.2", - "web3-providers": "1.0.0-beta.48" + "web3-providers": "1.0.0-beta.48", + "web3-utils": "1.0.0-beta.48", + "web3-core": "1.0.0-beta.48", + "web3-core-subscriptions": "1.0.0-beta.48", + "web3-core-helpers": "1.0.0-beta.48" }, "files": [ "dist", diff --git a/packages/web3-core-method/src/factories/ModuleFactory.js b/packages/web3-core-method/src/factories/ModuleFactory.js deleted file mode 100644 index d35fb4b6791..00000000000 --- a/packages/web3-core-method/src/factories/ModuleFactory.js +++ /dev/null @@ -1,106 +0,0 @@ -/* - This file is part of web3.js. - - web3.js is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - web3.js is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with web3.js. If not, see . -*/ -/** - * @file ModuleFactory.js - * @author Samuel Furter - * @date 2018 - */ - -import TransactionConfirmationWorkflow from '../workflows/TransactionConfirmationWorkflow'; -import TransactionReceiptValidator from '../validators/TransactionReceiptValidator'; -import NewHeadsWatcher from '../watchers/NewHeadsWatcher'; -import MethodProxy from '../proxy/MethodProxy'; -import GetTransactionReceiptMethod from '../methods/transaction/GetTransactionReceiptMethod'; -import SendRawTransactionMethod from '../methods/transaction/SendRawTransactionMethod'; - -export default class ModuleFactory { - /** - * @param {SubscriptionsFactory} subscriptionsFactory - * @param {Utils} utils - * @param {Object} formatters - * - * @constructor - */ - constructor(subscriptionsFactory, utils, formatters) { - this.subscriptionsFactory = subscriptionsFactory; - this.formatters = formatters; - this.utils = utils; - } - - /** - * Returns the MethodProxy object - * - * @method createMethodProxy - * - * @param {AbstractWeb3Module} target - * @param {AbstractMethodFactory} methodFactory - * - * @returns {MethodProxy} - */ - createMethodProxy(target, methodFactory) { - return new MethodProxy(target, methodFactory); - } - - /** - * Returns the TransactionConfirmationWorkflow object - * - * @method createTransactionConfirmationWorkflow - * - * @returns {TransactionConfirmationWorkflow} - */ - createTransactionConfirmationWorkflow() { - return new TransactionConfirmationWorkflow( - this.createTransactionReceiptValidator(), - this.createNewHeadsWatcher(), - new GetTransactionReceiptMethod(this.utils, this.formatters) - ); - } - - /** - * TODO: Create TransactionReceipt object e.g.: "TransactionReceipt.from(response)" - * Returns the TransactionReceiptValidator object - * - * @method createTransactionReceiptValidator - * - * @returns {TransactionReceiptValidator} - */ - createTransactionReceiptValidator() { - return new TransactionReceiptValidator(); - } - - /** - * Returns the NewHeadsWatcher object - * - * @method createNewHeadsWatcher - * - * @returns {NewHeadsWatcher} - */ - createNewHeadsWatcher() { - return new NewHeadsWatcher(this.subscriptionsFactory); - } - - /** - * Returns the SendRawTransactionMethod object - * - * @method createSendRawTransactionMethod - * - * @returns {SendRawTransactionMethod} - */ - createSendRawTransactionMethod() { - return new SendRawTransactionMethod(this.utils, this.formatters, this.createTransactionConfirmationWorkflow()); - } -} diff --git a/packages/web3-core-method/src/index.js b/packages/web3-core-method/src/index.js index b50db0f8497..b1521c07083 100644 --- a/packages/web3-core-method/src/index.js +++ b/packages/web3-core-method/src/index.js @@ -15,32 +15,16 @@ along with web3.js. If not, see . */ /** - * TODO: Overthink the handling of PromiEvent its just wrong to do it over injection. - * TODO: Watching transactions with an Observable would solve it. - * * @file index.js * @author Samuel Furter * @date 2018 */ -import ModuleFactory from './factories/ModuleFactory'; -import {SubscriptionsFactory} from 'web3-core-subscriptions'; -import {formatters} from 'web3-core-helpers'; -import * as Utils from 'web3-utils'; - -/** - * Returns the ModuleFactory of the method module - * - * @returns {ModuleFactory} - * - * @constructor - */ -export const MethodModuleFactory = () => { - return new ModuleFactory(new SubscriptionsFactory(), Utils, formatters); -}; - -export AbstractMethod from '../lib/methods/AbstractMethod'; +export PromiEvent from '../lib/PromiEvent'; export AbstractMethodFactory from '../lib/factories/AbstractMethodFactory'; +export AbstractMethod from '../lib/methods/AbstractMethod'; +export MethodProxy from './proxy/MethodProxy'; +export TransactionObserver from './observers/TransactionObserver'; // Network export GetProtocolVersionMethod from './methods/network/GetProtocolVersionMethod'; @@ -66,16 +50,28 @@ export GetTransactionCountMethod from './methods/account/GetTransactionCountMeth export RequestAccountsMethod from './methods/account/RequestAccountsMethod'; // Block +export AbstractGetBlockMethod from '../lib/methods/block/AbstractGetBlockMethod'; +export AbstractGetUncleMethod from '../lib/methods/block/AbstractGetUncleMethod'; +export AbstractGetBlockTransactionCountMethod from '../lib/methods/block/AbstractGetBlockTransactionCountMethod'; +export AbstractGetBlockUncleCountMethod from '../lib/methods/block/AbstractGetBlockUncleCountMethod'; +export GetBlockByHashMethod from './methods/block/GetBlockByHashMethod'; +export GetBlockByNumberMethod from './methods/block/GetBlockByNumberMethod'; export GetBlockNumberMethod from './methods/block/GetBlockNumberMethod'; -export GetBlockMethod from './methods/block/GetBlockMethod'; -export GetUncleMethod from './methods/block/GetUncleMethod'; -export GetBlockTransactionCountMethod from './methods/block/GetBlockTransactionCountMethod'; -export GetBlockUncleCountMethod from './methods/block/GetBlockUncleCountMethod'; +export GetBlockTransactionCountByHashMethod from './methods/block/GetBlockTransactionCountByHashMethod'; +export GetBlockTransactionCountByNumberMethod from './methods/block/GetBlockTransactionCountByNumberMethod'; +export GetBlockUncleCountByBlockHashMethod from './methods/block/GetBlockUncleCountByBlockHashMethod'; +export GetBlockUncleCountByBlockNumberMethod from './methods/block/GetBlockUncleCountByBlockNumberMethod'; +export GetUncleByBlockHashAndIndexMethod from './methods/block/GetUncleByBlockHashAndIndexMethod'; +export GetUncleByBlockNumberAndIndexMethod from './methods/block/GetUncleByBlockNumberAndIndexMethod'; // Transaction +export AbstractGetTransactionFromBlockMethod from '../lib/methods/transaction/AbstractGetTransactionFromBlockMethod'; +export AbstractObservedTransactionMethod from '../lib/methods/transaction/AbstractObservedTransactionMethod'; +export EthSendTransactionMethod from './methods/transaction/EthSendTransactionMethod'; export GetTransactionMethod from './methods/transaction/GetTransactionMethod'; -export GetTransactionFromBlockMethod from './methods/transaction/GetTransactionFromBlockMethod'; -export GetTransactionReceipt from './methods/transaction/GetTransactionReceiptMethod'; +export GetTransactionByBlockHashAndIndexMethod from './methods/transaction/GetTransactionByBlockHashAndIndexMethod'; +export GetTransactionByBlockNumberAndIndexMethod from './methods/transaction/GetTransactionByBlockNumberAndIndexMethod'; +export GetTransactionReceiptMethod from './methods/transaction/GetTransactionReceiptMethod'; export SendRawTransactionMethod from './methods/transaction/SendRawTransactionMethod'; export SignTransactionMethod from './methods/transaction/SignTransactionMethod'; export SendTransactionMethod from './methods/transaction/SendTransactionMethod'; diff --git a/packages/web3-core-method/src/methods/CallMethod.js b/packages/web3-core-method/src/methods/CallMethod.js index 65283ea88da..58f27d7a8b9 100644 --- a/packages/web3-core-method/src/methods/CallMethod.js +++ b/packages/web3-core-method/src/methods/CallMethod.js @@ -21,17 +21,18 @@ */ import isFunction from 'lodash/isFunction'; -import AbstractCallMethod from '../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../lib/methods/AbstractMethod'; -export default class CallMethod extends AbstractCallMethod { +export default class CallMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_call', 2, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_call', 2, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/EstimateGasMethod.js b/packages/web3-core-method/src/methods/EstimateGasMethod.js index b1d9d9b66cf..4075d9d601f 100644 --- a/packages/web3-core-method/src/methods/EstimateGasMethod.js +++ b/packages/web3-core-method/src/methods/EstimateGasMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../lib/methods/AbstractMethod'; -export default class EstimateGasMethod extends AbstractCallMethod { +export default class EstimateGasMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_estimateGas', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_estimateGas', 1, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/GetCodeMethod.js b/packages/web3-core-method/src/methods/GetCodeMethod.js index 89ccebbfa1e..63bf775e09c 100644 --- a/packages/web3-core-method/src/methods/GetCodeMethod.js +++ b/packages/web3-core-method/src/methods/GetCodeMethod.js @@ -21,17 +21,18 @@ */ import isFunction from 'lodash/isFunction'; -import AbstractCallMethod from '../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../lib/methods/AbstractMethod'; -export default class GetCodeMethod extends AbstractCallMethod { +export default class GetCodeMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getCode', 2, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_getCode', 2, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/GetPastLogsMethod.js b/packages/web3-core-method/src/methods/GetPastLogsMethod.js index d4a40dc2268..fb9cc009550 100644 --- a/packages/web3-core-method/src/methods/GetPastLogsMethod.js +++ b/packages/web3-core-method/src/methods/GetPastLogsMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../lib/methods/AbstractMethod'; -export default class GetPastLogsMethod extends AbstractCallMethod { +export default class GetPastLogsMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getLogs', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_getLogs', 1, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/GetStorageAtMethod.js b/packages/web3-core-method/src/methods/GetStorageAtMethod.js index c0f29c9e999..3b25d87e036 100644 --- a/packages/web3-core-method/src/methods/GetStorageAtMethod.js +++ b/packages/web3-core-method/src/methods/GetStorageAtMethod.js @@ -21,17 +21,18 @@ */ import isFunction from 'lodash/isFunction'; -import AbstractCallMethod from '../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../lib/methods/AbstractMethod'; -export default class GetStorageAtMethod extends AbstractCallMethod { +export default class GetStorageAtMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getStorageAt', 3, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_getStorageAt', 3, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/SignMethod.js b/packages/web3-core-method/src/methods/SignMethod.js index e995e34bd74..34a0973ce0a 100644 --- a/packages/web3-core-method/src/methods/SignMethod.js +++ b/packages/web3-core-method/src/methods/SignMethod.js @@ -20,68 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../lib/methods/AbstractMethod'; -// TODO: Move local signing logic to the eth module -export default class SignMethod extends AbstractCallMethod { +export default class SignMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters - * - * @constructor - */ - constructor(utils, formatters) { - super('eth_sign', 2, utils, formatters); - } - - /** - * Sends a JSON-RPC call request - * - * @method execute - * - * @param {AbstractWeb3Module} moduleInstance - * - * @callback callback callback(error, result) - * @returns {Promise} - */ - execute(moduleInstance) { - if (this.hasAccount(moduleInstance)) { - return this.signLocally(moduleInstance); - } - - return super.execute(moduleInstance); - } - - /** - * Signs the message on the client. - * - * @method signLocally - * * @param {AbstractWeb3Module} moduleInstance * - * @returns {Promise} + * @constructor */ - async signLocally(moduleInstance) { - try { - this.beforeExecution(moduleInstance); - - let signedMessage = moduleInstance.accounts.sign( - this.parameters[0], - moduleInstance.accounts.wallet[this.parameters[1]].address - ); - - if (this.callback) { - this.callback(false, signedMessage); - } - - return signedMessage; - } catch (error) { - if (this.callback) { - this.callback(error, null); - } - - throw error; - } + constructor(utils, formatters, moduleInstance) { + super('eth_sign', 2, utils, formatters, moduleInstance); } /** @@ -95,21 +45,4 @@ export default class SignMethod extends AbstractCallMethod { this.parameters[0] = this.formatters.inputSignFormatter(this.parameters[0]); this.parameters[1] = this.formatters.inputAddressFormatter(this.parameters[1]); } - - /** - * Checks if the current account is unlocked - * - * @method hasAccount - * - * @param {AbstractWeb3Module} moduleInstance - * - * @returns {Boolean} - */ - hasAccount(moduleInstance) { - return ( - moduleInstance.accounts && - moduleInstance.accounts.accountsIndex > 0 && - moduleInstance.accounts.wallet[this.parameters[1]] - ); - } } diff --git a/packages/web3-core-method/src/methods/account/GetAccountsMethod.js b/packages/web3-core-method/src/methods/account/GetAccountsMethod.js index 44c981baf4d..32e2d4c7d36 100644 --- a/packages/web3-core-method/src/methods/account/GetAccountsMethod.js +++ b/packages/web3-core-method/src/methods/account/GetAccountsMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetAccountsMethod extends AbstractCallMethod { +export default class GetAccountsMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_accounts', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_accounts', 0, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/account/GetBalanceMethod.js b/packages/web3-core-method/src/methods/account/GetBalanceMethod.js index 63b36498dca..ef01b128caa 100644 --- a/packages/web3-core-method/src/methods/account/GetBalanceMethod.js +++ b/packages/web3-core-method/src/methods/account/GetBalanceMethod.js @@ -21,17 +21,18 @@ */ import isFunction from 'lodash/isFunction'; -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetBalanceMethod extends AbstractCallMethod { +export default class GetBalanceMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getBalance', 2, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_getBalance', 2, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/account/GetTransactionCountMethod.js b/packages/web3-core-method/src/methods/account/GetTransactionCountMethod.js index 35cb6b325bc..78a6f6df9e0 100644 --- a/packages/web3-core-method/src/methods/account/GetTransactionCountMethod.js +++ b/packages/web3-core-method/src/methods/account/GetTransactionCountMethod.js @@ -21,17 +21,18 @@ */ import isFunction from 'lodash/isFunction'; -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetTransactionCountMethod extends AbstractCallMethod { +export default class GetTransactionCountMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getTransactionCount', 2, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_getTransactionCount', 2, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/account/RequestAccountsMethod.js b/packages/web3-core-method/src/methods/account/RequestAccountsMethod.js index b036d6ceeb9..2007dc697e1 100644 --- a/packages/web3-core-method/src/methods/account/RequestAccountsMethod.js +++ b/packages/web3-core-method/src/methods/account/RequestAccountsMethod.js @@ -17,13 +17,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class RequestAccountsMethod extends AbstractCallMethod { +export default class RequestAccountsMethod extends AbstractMethod { /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * * @constructor */ - constructor() { - super('eth_requestAccounts', 0, null, null); + constructor(utils, formatters, moduleInstance) { + super('eth_requestAccounts', 0, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-subscriptions/src/factories/SubscriptionsModuleFactory.js b/packages/web3-core-method/src/methods/block/GetBlockByHashMethod.js similarity index 64% rename from packages/web3-core-subscriptions/src/factories/SubscriptionsModuleFactory.js rename to packages/web3-core-method/src/methods/block/GetBlockByHashMethod.js index 3706e333c06..cd1bf7e4a3a 100644 --- a/packages/web3-core-subscriptions/src/factories/SubscriptionsModuleFactory.js +++ b/packages/web3-core-method/src/methods/block/GetBlockByHashMethod.js @@ -15,25 +15,22 @@ along with web3.js. If not, see . */ /** - * @file SubscriptionsFactory.js - * @authors: Samuel Furter + * @file GetBlockByHashMethod.js + * @author Samuel Furter * @date 2018 */ -import SubscriptionsFactory from './SubscriptionsFactory'; +import AbstractGetBlockMethod from '../../../lib/methods/block/AbstractGetBlockMethod'; -export default class SubscriptionsModuleFactory { +export default class GetBlockByHashMethod extends AbstractGetBlockMethod { /** - * Returns an object of type SubscriptionsFactory - * - * @method createSubscriptionsFactory - * * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * - * @returns {SubscriptionsFactory} + * @constructor */ - createSubscriptionsFactory(utils, formatters) { - return new SubscriptionsFactory(utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_getBlockByHash', utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-promievent/src/index.js b/packages/web3-core-method/src/methods/block/GetBlockByNumberMethod.js similarity index 61% rename from packages/web3-core-promievent/src/index.js rename to packages/web3-core-method/src/methods/block/GetBlockByNumberMethod.js index ad79cbfe209..00cf66d9817 100644 --- a/packages/web3-core-promievent/src/index.js +++ b/packages/web3-core-method/src/methods/block/GetBlockByNumberMethod.js @@ -15,9 +15,22 @@ along with web3.js. If not, see . */ /** - * @file index.js + * @file GetBlockByNumberMethod.js * @author Samuel Furter * @date 2018 */ -export PromiEvent from './PromiEvent'; +import AbstractGetBlockMethod from '../../../lib/methods/block/AbstractGetBlockMethod'; + +export default class GetBlockByNumberMethod extends AbstractGetBlockMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getBlockByNumber', utils, formatters, moduleInstance); + } +} diff --git a/packages/web3-core-method/src/methods/block/GetBlockNumberMethod.js b/packages/web3-core-method/src/methods/block/GetBlockNumberMethod.js index f2846b410d2..4821106797c 100644 --- a/packages/web3-core-method/src/methods/block/GetBlockNumberMethod.js +++ b/packages/web3-core-method/src/methods/block/GetBlockNumberMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetBlockNumberMethod extends AbstractCallMethod { +export default class GetBlockNumberMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_blockNumber', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_blockNumber', 0, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/block/GetBlockTransactionCountByHashMethod.js b/packages/web3-core-method/src/methods/block/GetBlockTransactionCountByHashMethod.js new file mode 100644 index 00000000000..dcb6405b236 --- /dev/null +++ b/packages/web3-core-method/src/methods/block/GetBlockTransactionCountByHashMethod.js @@ -0,0 +1,36 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetBlockTransactionCountByHashMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import AbstractGetBlockTransactionCountMethod from '../../../lib/methods/block/AbstractGetBlockTransactionCountMethod'; + +export default class GetBlockTransactionCountByHashMethod extends AbstractGetBlockTransactionCountMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getBlockTransactionCountByHash', utils, formatters, moduleInstance); + } +} diff --git a/packages/web3-core-method/src/methods/block/GetBlockTransactionCountByNumberMethod.js b/packages/web3-core-method/src/methods/block/GetBlockTransactionCountByNumberMethod.js new file mode 100644 index 00000000000..57e36b98171 --- /dev/null +++ b/packages/web3-core-method/src/methods/block/GetBlockTransactionCountByNumberMethod.js @@ -0,0 +1,36 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetBlockTransactionCountByNumberMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import AbstractGetBlockTransactionCountMethod from '../../../lib/methods/block/AbstractGetBlockTransactionCountMethod'; + +export default class GetBlockTransactionCountByNumberMethod extends AbstractGetBlockTransactionCountMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getBlockTransactionCountByNumber', utils, formatters, moduleInstance); + } +} diff --git a/packages/web3-core-method/src/methods/block/GetBlockUncleCountByBlockHashMethod.js b/packages/web3-core-method/src/methods/block/GetBlockUncleCountByBlockHashMethod.js new file mode 100644 index 00000000000..31ce0122919 --- /dev/null +++ b/packages/web3-core-method/src/methods/block/GetBlockUncleCountByBlockHashMethod.js @@ -0,0 +1,36 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetBlockUncleCountByBlockHashMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import AbstractGetBlockUncleCountMethod from '../../../lib/methods/block/AbstractGetBlockUncleCountMethod'; + +export default class GetBlockUncleCountByBlockHashMethod extends AbstractGetBlockUncleCountMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getUncleCountByBlockHash', utils, formatters, moduleInstance); + } +} diff --git a/packages/web3-core-method/src/methods/block/GetBlockUncleCountByBlockNumberMethod.js b/packages/web3-core-method/src/methods/block/GetBlockUncleCountByBlockNumberMethod.js new file mode 100644 index 00000000000..3fbe82afc3f --- /dev/null +++ b/packages/web3-core-method/src/methods/block/GetBlockUncleCountByBlockNumberMethod.js @@ -0,0 +1,36 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetBlockUncleCountByNumberMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import AbstractGetBlockUncleCountMethod from '../../../lib/methods/block/AbstractGetBlockUncleCountMethod'; + +export default class GetBlockUncleCountByBlockNumberMethod extends AbstractGetBlockUncleCountMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getUncleCountByBlockNumber', utils, formatters, moduleInstance); + } +} diff --git a/packages/web3-core-method/src/methods/block/GetUncleByBlockHashAndIndexMethod.js b/packages/web3-core-method/src/methods/block/GetUncleByBlockHashAndIndexMethod.js new file mode 100644 index 00000000000..d8c523be75a --- /dev/null +++ b/packages/web3-core-method/src/methods/block/GetUncleByBlockHashAndIndexMethod.js @@ -0,0 +1,36 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetUncleByBlockHashAndIndexMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import AbstractGetUncleMethod from '../../../lib/methods/block/AbstractGetUncleMethod'; + +export default class GetUncleByBlockHashAndIndexMethod extends AbstractGetUncleMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getUncleByBlockHashAndIndex', utils, formatters, moduleInstance); + } +} diff --git a/packages/web3-core-method/src/methods/block/GetUncleByBlockNumberAndIndexMethod.js b/packages/web3-core-method/src/methods/block/GetUncleByBlockNumberAndIndexMethod.js new file mode 100644 index 00000000000..dddd364b1f9 --- /dev/null +++ b/packages/web3-core-method/src/methods/block/GetUncleByBlockNumberAndIndexMethod.js @@ -0,0 +1,36 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetUncleByBlockNumberAndIndexMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import AbstractGetUncleMethod from '../../../lib/methods/block/AbstractGetUncleMethod'; + +export default class GetUncleByBlockNumberAndIndexMethod extends AbstractGetUncleMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getUncleByBlockNumberAndIndex', utils, formatters, moduleInstance); + } +} diff --git a/packages/web3-core-method/src/methods/network/ChainIdMethod.js b/packages/web3-core-method/src/methods/network/ChainIdMethod.js index d2a972defbe..a9ba4614478 100644 --- a/packages/web3-core-method/src/methods/network/ChainIdMethod.js +++ b/packages/web3-core-method/src/methods/network/ChainIdMethod.js @@ -15,22 +15,23 @@ along with web3.js. If not, see . */ /** - * @file ListeningMethod.js + * @file ChainIdMethod.js * @author Samuel Furter * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class ChainIdMethod extends AbstractCallMethod { +export default class ChainIdMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_chainId', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_chainId', 0, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/network/GetProtocolVersionMethod.js b/packages/web3-core-method/src/methods/network/GetProtocolVersionMethod.js index 13b5869884c..3624ab67338 100644 --- a/packages/web3-core-method/src/methods/network/GetProtocolVersionMethod.js +++ b/packages/web3-core-method/src/methods/network/GetProtocolVersionMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetProtocolVersionMethod extends AbstractCallMethod { +export default class GetProtocolVersionMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_protocolVersion', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_protocolVersion', 0, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/network/ListeningMethod.js b/packages/web3-core-method/src/methods/network/ListeningMethod.js index 46882b1df72..4900c3b04c9 100644 --- a/packages/web3-core-method/src/methods/network/ListeningMethod.js +++ b/packages/web3-core-method/src/methods/network/ListeningMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class ListeningMethod extends AbstractCallMethod { +export default class ListeningMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('net_listening', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('net_listening', 0, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/network/PeerCountMethod.js b/packages/web3-core-method/src/methods/network/PeerCountMethod.js index 73aa289c0b1..37673c3f1cf 100644 --- a/packages/web3-core-method/src/methods/network/PeerCountMethod.js +++ b/packages/web3-core-method/src/methods/network/PeerCountMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class PeerCountMethod extends AbstractCallMethod { +export default class PeerCountMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('net_peerCount', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('net_peerCount', 0, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/network/VersionMethod.js b/packages/web3-core-method/src/methods/network/VersionMethod.js index 65641bfcffe..2529f97c6cf 100644 --- a/packages/web3-core-method/src/methods/network/VersionMethod.js +++ b/packages/web3-core-method/src/methods/network/VersionMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class VersionMethod extends AbstractCallMethod { +export default class VersionMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('net_version', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('net_version', 0, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/node/GetCoinbaseMethod.js b/packages/web3-core-method/src/methods/node/GetCoinbaseMethod.js index a7830924011..3289ba44ce2 100644 --- a/packages/web3-core-method/src/methods/node/GetCoinbaseMethod.js +++ b/packages/web3-core-method/src/methods/node/GetCoinbaseMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetCoinbaseMethod extends AbstractCallMethod { +export default class GetCoinbaseMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_coinbase', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_coinbase', 0, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/node/GetGasPriceMethod.js b/packages/web3-core-method/src/methods/node/GetGasPriceMethod.js index ab3db88cdd3..2691db47a22 100644 --- a/packages/web3-core-method/src/methods/node/GetGasPriceMethod.js +++ b/packages/web3-core-method/src/methods/node/GetGasPriceMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetGasPriceMethod extends AbstractCallMethod { +export default class GetGasPriceMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_gasPrice', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_gasPrice', 0, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/node/GetHashrateMethod.js b/packages/web3-core-method/src/methods/node/GetHashrateMethod.js index 4ea7f85d8bc..b71da1e8617 100644 --- a/packages/web3-core-method/src/methods/node/GetHashrateMethod.js +++ b/packages/web3-core-method/src/methods/node/GetHashrateMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetHashrateMethod extends AbstractCallMethod { +export default class GetHashrateMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_hashrate', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_hashrate', 0, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/node/GetNodeInfoMethod.js b/packages/web3-core-method/src/methods/node/GetNodeInfoMethod.js index 750ec353511..05a87536045 100644 --- a/packages/web3-core-method/src/methods/node/GetNodeInfoMethod.js +++ b/packages/web3-core-method/src/methods/node/GetNodeInfoMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetNodeInfoMethod extends AbstractCallMethod { +export default class GetNodeInfoMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('web3_clientVersion', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('web3_clientVersion', 0, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/node/GetWorkMethod.js b/packages/web3-core-method/src/methods/node/GetWorkMethod.js index 9bbd6929d90..a00c429e7d1 100644 --- a/packages/web3-core-method/src/methods/node/GetWorkMethod.js +++ b/packages/web3-core-method/src/methods/node/GetWorkMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetWorkMethod extends AbstractCallMethod { +export default class GetWorkMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getWork', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_getWork', 0, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/node/IsMiningMethod.js b/packages/web3-core-method/src/methods/node/IsMiningMethod.js index 70d69a9a5fa..4ed9b23ea14 100644 --- a/packages/web3-core-method/src/methods/node/IsMiningMethod.js +++ b/packages/web3-core-method/src/methods/node/IsMiningMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class IsMiningMethod extends AbstractCallMethod { +export default class IsMiningMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_mining', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_mining', 0, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/node/IsSyncingMethod.js b/packages/web3-core-method/src/methods/node/IsSyncingMethod.js index 8481891d80a..4096a20fca9 100644 --- a/packages/web3-core-method/src/methods/node/IsSyncingMethod.js +++ b/packages/web3-core-method/src/methods/node/IsSyncingMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class IsSyncingMethod extends AbstractCallMethod { +export default class IsSyncingMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_syncing', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_syncing', 0, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/node/SubmitWorkMethod.js b/packages/web3-core-method/src/methods/node/SubmitWorkMethod.js index 9feed3c53ca..c290b29708a 100644 --- a/packages/web3-core-method/src/methods/node/SubmitWorkMethod.js +++ b/packages/web3-core-method/src/methods/node/SubmitWorkMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class SubmitWorkMethod extends AbstractCallMethod { +export default class SubmitWorkMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_submitWork', 3, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_submitWork', 3, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/personal/EcRecoverMethod.js b/packages/web3-core-method/src/methods/personal/EcRecoverMethod.js index 9af7c9a97da..3d54e9d2221 100644 --- a/packages/web3-core-method/src/methods/personal/EcRecoverMethod.js +++ b/packages/web3-core-method/src/methods/personal/EcRecoverMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class EcRecoverMethod extends AbstractCallMethod { +export default class EcRecoverMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('personal_ecRecover', 3, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('personal_ecRecover', 3, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/personal/ImportRawKeyMethod.js b/packages/web3-core-method/src/methods/personal/ImportRawKeyMethod.js index 6e92e1c63da..44605b46ec1 100644 --- a/packages/web3-core-method/src/methods/personal/ImportRawKeyMethod.js +++ b/packages/web3-core-method/src/methods/personal/ImportRawKeyMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class ImportRawKeyMethod extends AbstractCallMethod { +export default class ImportRawKeyMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('personal_importRawKey', 2, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('personal_importRawKey', 2, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/personal/ListAccountsMethod.js b/packages/web3-core-method/src/methods/personal/ListAccountsMethod.js index b7e042b575b..3ef83f46f64 100644 --- a/packages/web3-core-method/src/methods/personal/ListAccountsMethod.js +++ b/packages/web3-core-method/src/methods/personal/ListAccountsMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class ListAccountsMethod extends AbstractCallMethod { +export default class ListAccountsMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('personal_listAccounts', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('personal_listAccounts', 0, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/personal/LockAccountMethod.js b/packages/web3-core-method/src/methods/personal/LockAccountMethod.js index 2cf9df7a0bf..da2be2a12c4 100644 --- a/packages/web3-core-method/src/methods/personal/LockAccountMethod.js +++ b/packages/web3-core-method/src/methods/personal/LockAccountMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class LockAccountMethod extends AbstractCallMethod { +export default class LockAccountMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('personal_lockAccount', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('personal_lockAccount', 1, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/personal/NewAccountMethod.js b/packages/web3-core-method/src/methods/personal/NewAccountMethod.js index 801ed78612d..3176494b4b9 100644 --- a/packages/web3-core-method/src/methods/personal/NewAccountMethod.js +++ b/packages/web3-core-method/src/methods/personal/NewAccountMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class NewAccountMethod extends AbstractCallMethod { +export default class NewAccountMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('personal_newAccount', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('personal_newAccount', 1, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/personal/PersonalSendTransactionMethod.js b/packages/web3-core-method/src/methods/personal/PersonalSendTransactionMethod.js index de58728d2f2..6dbbd5c8932 100644 --- a/packages/web3-core-method/src/methods/personal/PersonalSendTransactionMethod.js +++ b/packages/web3-core-method/src/methods/personal/PersonalSendTransactionMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class PersonalSendTransactionMethod extends AbstractCallMethod { +export default class PersonalSendTransactionMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('personal_sendTransaction', 2, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('personal_sendTransaction', 2, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/personal/PersonalSignMethod.js b/packages/web3-core-method/src/methods/personal/PersonalSignMethod.js index 52563b35e8b..3f2251d4f92 100644 --- a/packages/web3-core-method/src/methods/personal/PersonalSignMethod.js +++ b/packages/web3-core-method/src/methods/personal/PersonalSignMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class PersonalSignMethod extends AbstractCallMethod { +export default class PersonalSignMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('personal_sign', 3, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('personal_sign', 3, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/personal/PersonalSignTransactionMethod.js b/packages/web3-core-method/src/methods/personal/PersonalSignTransactionMethod.js index 92e11b91a46..5efa4a3bac2 100644 --- a/packages/web3-core-method/src/methods/personal/PersonalSignTransactionMethod.js +++ b/packages/web3-core-method/src/methods/personal/PersonalSignTransactionMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class PersonalSignTransactionMethod extends AbstractCallMethod { +export default class PersonalSignTransactionMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('personal_signTransaction', 2, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('personal_signTransaction', 2, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/personal/UnlockAccountMethod.js b/packages/web3-core-method/src/methods/personal/UnlockAccountMethod.js index ae8a2da0cb5..3b76ea2a901 100644 --- a/packages/web3-core-method/src/methods/personal/UnlockAccountMethod.js +++ b/packages/web3-core-method/src/methods/personal/UnlockAccountMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class UnlockAccountMethod extends AbstractCallMethod { +export default class UnlockAccountMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('personal_unlockAccount', 3, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('personal_unlockAccount', 3, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/shh/AddPrivateKeyMethod.js b/packages/web3-core-method/src/methods/shh/AddPrivateKeyMethod.js index 1481961d0a2..6fb2d43427e 100644 --- a/packages/web3-core-method/src/methods/shh/AddPrivateKeyMethod.js +++ b/packages/web3-core-method/src/methods/shh/AddPrivateKeyMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class AddPrivateKeyMethod extends AbstractCallMethod { +export default class AddPrivateKeyMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_addPrivateKey', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_addPrivateKey', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/AddSymKeyMethod.js b/packages/web3-core-method/src/methods/shh/AddSymKeyMethod.js index 952b12b2fb9..a9b23307f68 100644 --- a/packages/web3-core-method/src/methods/shh/AddSymKeyMethod.js +++ b/packages/web3-core-method/src/methods/shh/AddSymKeyMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class AddSymKeyMethod extends AbstractCallMethod { +export default class AddSymKeyMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_addSymKey', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_addSymKey', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/DeleteKeyPairMethod.js b/packages/web3-core-method/src/methods/shh/DeleteKeyPairMethod.js index 2c878c44a95..85e8dfa1fc8 100644 --- a/packages/web3-core-method/src/methods/shh/DeleteKeyPairMethod.js +++ b/packages/web3-core-method/src/methods/shh/DeleteKeyPairMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class DeleteKeyPairMethod extends AbstractCallMethod { +export default class DeleteKeyPairMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_deleteKeyPair', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_deleteKeyPair', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/DeleteMessageFilterMethod.js b/packages/web3-core-method/src/methods/shh/DeleteMessageFilterMethod.js index a5bbef8234b..6be1495d3ac 100644 --- a/packages/web3-core-method/src/methods/shh/DeleteMessageFilterMethod.js +++ b/packages/web3-core-method/src/methods/shh/DeleteMessageFilterMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class DeleteMessageFilterMethod extends AbstractCallMethod { +export default class DeleteMessageFilterMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_deleteMessageFilter', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_deleteMessageFilter', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/DeleteSymKeyMethod.js b/packages/web3-core-method/src/methods/shh/DeleteSymKeyMethod.js index 0755ef24dfe..d309c1f2ce0 100644 --- a/packages/web3-core-method/src/methods/shh/DeleteSymKeyMethod.js +++ b/packages/web3-core-method/src/methods/shh/DeleteSymKeyMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class DeleteSymKeyMethod extends AbstractCallMethod { +export default class DeleteSymKeyMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_deleteSymKey', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_deleteSymKey', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/GenerateSymKeyFromPasswordMethod.js b/packages/web3-core-method/src/methods/shh/GenerateSymKeyFromPasswordMethod.js index 8846133a0b1..5ece91699ae 100644 --- a/packages/web3-core-method/src/methods/shh/GenerateSymKeyFromPasswordMethod.js +++ b/packages/web3-core-method/src/methods/shh/GenerateSymKeyFromPasswordMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GenerateSymKeyFromPasswordMethod extends AbstractCallMethod { +export default class GenerateSymKeyFromPasswordMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_generateSymKeyFromPassword', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_generateSymKeyFromPassword', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/GetFilterMessagesMethod.js b/packages/web3-core-method/src/methods/shh/GetFilterMessagesMethod.js index 800372ba8c4..b9adee699b9 100644 --- a/packages/web3-core-method/src/methods/shh/GetFilterMessagesMethod.js +++ b/packages/web3-core-method/src/methods/shh/GetFilterMessagesMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetFilterMessagesMethod extends AbstractCallMethod { +export default class GetFilterMessagesMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_getFilterMessages', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_getFilterMessages', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/GetInfoMethod.js b/packages/web3-core-method/src/methods/shh/GetInfoMethod.js index 3188a29f562..228156bd681 100644 --- a/packages/web3-core-method/src/methods/shh/GetInfoMethod.js +++ b/packages/web3-core-method/src/methods/shh/GetInfoMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetInfoMethod extends AbstractCallMethod { +export default class GetInfoMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_info', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_info', 0, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/GetPrivateKeyMethod.js b/packages/web3-core-method/src/methods/shh/GetPrivateKeyMethod.js index 4d20ac18ac0..cdfeb8859e0 100644 --- a/packages/web3-core-method/src/methods/shh/GetPrivateKeyMethod.js +++ b/packages/web3-core-method/src/methods/shh/GetPrivateKeyMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetPrivateKeyMethod extends AbstractCallMethod { +export default class GetPrivateKeyMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_getPrivateKey', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_getPrivateKey', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/GetPublicKeyMethod.js b/packages/web3-core-method/src/methods/shh/GetPublicKeyMethod.js index 6dd9c70dada..d0c3b5e5cb9 100644 --- a/packages/web3-core-method/src/methods/shh/GetPublicKeyMethod.js +++ b/packages/web3-core-method/src/methods/shh/GetPublicKeyMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetPublicKeyMethod extends AbstractCallMethod { +export default class GetPublicKeyMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_getPublicKey', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_getPublicKey', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/GetSymKeyMethod.js b/packages/web3-core-method/src/methods/shh/GetSymKeyMethod.js index 842ac1b1866..c491c3a0e65 100644 --- a/packages/web3-core-method/src/methods/shh/GetSymKeyMethod.js +++ b/packages/web3-core-method/src/methods/shh/GetSymKeyMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetSymKeyMethod extends AbstractCallMethod { +export default class GetSymKeyMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_getSymKey', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_getSymKey', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/HasKeyPairMethod.js b/packages/web3-core-method/src/methods/shh/HasKeyPairMethod.js index 40517756e90..c2a7e8637fe 100644 --- a/packages/web3-core-method/src/methods/shh/HasKeyPairMethod.js +++ b/packages/web3-core-method/src/methods/shh/HasKeyPairMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class HasKeyPairMethod extends AbstractCallMethod { +export default class HasKeyPairMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_hasKeyPair', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_hasKeyPair', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/HasSymKeyMethod.js b/packages/web3-core-method/src/methods/shh/HasSymKeyMethod.js index ba604062e6d..4510b2df815 100644 --- a/packages/web3-core-method/src/methods/shh/HasSymKeyMethod.js +++ b/packages/web3-core-method/src/methods/shh/HasSymKeyMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class HasSymKeyMethod extends AbstractCallMethod { +export default class HasSymKeyMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_hasSymKey', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_hasSymKey', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/MarkTrustedPeerMethod.js b/packages/web3-core-method/src/methods/shh/MarkTrustedPeerMethod.js index a15bd464186..642cc32b4e1 100644 --- a/packages/web3-core-method/src/methods/shh/MarkTrustedPeerMethod.js +++ b/packages/web3-core-method/src/methods/shh/MarkTrustedPeerMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class MarkTrustedPeerMethod extends AbstractCallMethod { +export default class MarkTrustedPeerMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_markTrustedPeer', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_markTrustedPeer', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/NewKeyPairMethod.js b/packages/web3-core-method/src/methods/shh/NewKeyPairMethod.js index 0a4ff1458de..c817c632ac1 100644 --- a/packages/web3-core-method/src/methods/shh/NewKeyPairMethod.js +++ b/packages/web3-core-method/src/methods/shh/NewKeyPairMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class NewKeyPairMethod extends AbstractCallMethod { +export default class NewKeyPairMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_newKeyPair', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_newKeyPair', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/NewMessageFilterMethod.js b/packages/web3-core-method/src/methods/shh/NewMessageFilterMethod.js index 45be78f0ea6..29b6fee7e89 100644 --- a/packages/web3-core-method/src/methods/shh/NewMessageFilterMethod.js +++ b/packages/web3-core-method/src/methods/shh/NewMessageFilterMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class NewMessageFilterMethod extends AbstractCallMethod { +export default class NewMessageFilterMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_newMessageFilter', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_newMessageFilter', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/NewSymKeyMethod.js b/packages/web3-core-method/src/methods/shh/NewSymKeyMethod.js index b0886f7bdaa..2bf141e974c 100644 --- a/packages/web3-core-method/src/methods/shh/NewSymKeyMethod.js +++ b/packages/web3-core-method/src/methods/shh/NewSymKeyMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class NewSymKeyMethod extends AbstractCallMethod { +export default class NewSymKeyMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_newSymKey', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_newSymKey', 0, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/PostMethod.js b/packages/web3-core-method/src/methods/shh/PostMethod.js index b8c4a40927d..885c9c158d7 100644 --- a/packages/web3-core-method/src/methods/shh/PostMethod.js +++ b/packages/web3-core-method/src/methods/shh/PostMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class PostMethod extends AbstractCallMethod { +export default class PostMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_post', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_post', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/SetMaxMessageSizeMethod.js b/packages/web3-core-method/src/methods/shh/SetMaxMessageSizeMethod.js index c92a4c3a6d9..1d72de139f9 100644 --- a/packages/web3-core-method/src/methods/shh/SetMaxMessageSizeMethod.js +++ b/packages/web3-core-method/src/methods/shh/SetMaxMessageSizeMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class SetMaxMessageSizeMethod extends AbstractCallMethod { +export default class SetMaxMessageSizeMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_setMaxMessageSize', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_setMaxMessageSize', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/SetMinPoWMethod.js b/packages/web3-core-method/src/methods/shh/SetMinPoWMethod.js index f6ad6aa85c0..40e4e45cea3 100644 --- a/packages/web3-core-method/src/methods/shh/SetMinPoWMethod.js +++ b/packages/web3-core-method/src/methods/shh/SetMinPoWMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class SetMinPoWMethod extends AbstractCallMethod { +export default class SetMinPoWMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_setMinPoW', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_setMinPoW', 1, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/shh/ShhVersionMethod.js b/packages/web3-core-method/src/methods/shh/ShhVersionMethod.js index a02b8d3da51..ab628f4f991 100644 --- a/packages/web3-core-method/src/methods/shh/ShhVersionMethod.js +++ b/packages/web3-core-method/src/methods/shh/ShhVersionMethod.js @@ -20,16 +20,17 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class ShhVersionMethod extends AbstractCallMethod { +export default class ShhVersionMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('shh_version', 0, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('shh_version', 0, utils, formatters, moduleInstance); } } diff --git a/packages/web3-core-method/src/methods/transaction/EthSendTransactionMethod.js b/packages/web3-core-method/src/methods/transaction/EthSendTransactionMethod.js new file mode 100644 index 00000000000..56a7b13d048 --- /dev/null +++ b/packages/web3-core-method/src/methods/transaction/EthSendTransactionMethod.js @@ -0,0 +1,176 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file EthSendTransactionMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import SendTransactionMethod from './SendTransactionMethod'; + +export default class EthSendTransactionMethod extends SendTransactionMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * @param {TransactionObserver} transactionObserver + * @param {ChainIdMethod} chainIdMethod + * @param {GetTransactionCountMethod} getTransactionCountMethod + * @param {SendRawTransactionMethod} sendRawTransactionMethod + * + * @constructor + */ + constructor( + utils, + formatters, + moduleInstance, + transactionObserver, + chainIdMethod, + getTransactionCountMethod, + sendRawTransactionMethod + ) { + super(utils, formatters, moduleInstance, transactionObserver); + + this.chainIdMethod = chainIdMethod; + this.getTransactionCountMethod = getTransactionCountMethod; + this.sendRawTransactionMethod = sendRawTransactionMethod; + } + + /** + * Checks if gasPrice is set, sends the request and returns a PromiEvent Object + * + * @method execute + * + * @callback callback callback(error, result) + * @returns {PromiEvent} + */ + execute() { + if (!this.parameters[0].gas && this.moduleInstance.defaultGas) { + this.parameters[0]['gas'] = this.moduleInstance.defaultGas; + } + + if (!this.parameters[0].gasPrice) { + if (!this.moduleInstance.defaultGasPrice) { + this.moduleInstance.currentProvider.send('eth_gasPrice', []).then((gasPrice) => { + this.parameters[0].gasPrice = gasPrice; + + this.execute(); + }); + + return this.promiEvent; + } + + this.parameters[0]['gasPrice'] = this.moduleInstance.defaultGasPrice; + } + + if (this.hasAccounts() && this.isDefaultSigner()) { + if (this.moduleInstance.accounts.wallet[this.parameters[0].from]) { + this.sendRawTransaction(this.moduleInstance.accounts.wallet[this.parameters[0].from].privateKey).catch( + (error) => { + if (this.callback) { + this.callback(error, null); + } + + this.promiEvent.reject(error); + this.promiEvent.emit('error', error); + this.promiEvent.removeAllListeners(); + } + ); + + return this.promiEvent; + } + } + + if (this.hasCustomSigner()) { + this.sendRawTransaction().catch((error) => { + if (this.callback) { + this.callback(error, null); + } + + this.promiEvent.reject(error); + this.promiEvent.emit('error', error); + this.promiEvent.removeAllListeners(); + }); + + return this.promiEvent; + } + + return super.execute(); + } + + /** + * Signs the transaction and executes the SendRawTransaction method. + * + * @method sendRawTransaction + * + * @param {String} privateKey + * + * @returns {PromiEvent} + */ + async sendRawTransaction(privateKey = null) { + if (!this.parameters[0].chainId) { + this.parameters[0].chainId = await this.chainIdMethod.execute(); + } + + if (!this.parameters[0].nonce && this.parameters[0].nonce !== 0) { + this.getTransactionCountMethod.parameters = [this.parameters[0].from]; + + this.parameters[0].nonce = await this.getTransactionCountMethod.execute(); + } + + const response = await this.moduleInstance.transactionSigner.sign(this.parameters[0], privateKey); + + this.sendRawTransactionMethod.parameters = [response.rawTransaction]; + this.sendRawTransactionMethod.callback = this.callback; + this.sendRawTransactionMethod.promiEvent = this.promiEvent; + + return this.sendRawTransactionMethod.execute(); + } + + /** + * Checks if the current module has decrypted accounts + * + * @method isDefaultSigner + * + * @returns {Boolean} + */ + isDefaultSigner() { + return this.moduleInstance.transactionSigner.constructor.name === 'TransactionSigner'; + } + + /** + * Checks if the current module has decrypted accounts + * + * @method hasAccounts + * + * @returns {Boolean} + */ + hasAccounts() { + return this.moduleInstance.accounts && this.moduleInstance.accounts.accountsIndex > 0; + } + + /** + * Checks if a custom signer is given. + * + * @method hasCustomerSigner + * + * @returns {Boolean} + */ + hasCustomSigner() { + return this.moduleInstance.transactionSigner.constructor.name !== 'TransactionSigner'; + } +} diff --git a/packages/web3-core-method/src/methods/transaction/GetTransactionByBlockHashAndIndexMethod.js b/packages/web3-core-method/src/methods/transaction/GetTransactionByBlockHashAndIndexMethod.js new file mode 100644 index 00000000000..7699b18926f --- /dev/null +++ b/packages/web3-core-method/src/methods/transaction/GetTransactionByBlockHashAndIndexMethod.js @@ -0,0 +1,36 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetTransactionByBlockHashAndIndexMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import AbstractGetTransactionFromBlockMethod from '../../../lib/methods/transaction/AbstractGetTransactionFromBlockMethod'; + +export default class GetTransactionByBlockHashAndIndexMethod extends AbstractGetTransactionFromBlockMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getTransactionByBlockHashAndIndex', utils, formatters, moduleInstance); + } +} diff --git a/packages/web3-core-method/src/methods/transaction/GetTransactionByBlockNumberAndIndexMethod.js b/packages/web3-core-method/src/methods/transaction/GetTransactionByBlockNumberAndIndexMethod.js new file mode 100644 index 00000000000..e5e9fc265a5 --- /dev/null +++ b/packages/web3-core-method/src/methods/transaction/GetTransactionByBlockNumberAndIndexMethod.js @@ -0,0 +1,36 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetTransactionByBlockNumberAndIndexMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import AbstractGetTransactionFromBlockMethod from '../../../lib/methods/transaction/AbstractGetTransactionFromBlockMethod'; + +export default class GetTransactionByBlockNumberAndIndexMethod extends AbstractGetTransactionFromBlockMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getTransactionByBlockNumberAndIndex', utils, formatters, moduleInstance); + } +} diff --git a/packages/web3-core-method/src/methods/transaction/GetTransactionMethod.js b/packages/web3-core-method/src/methods/transaction/GetTransactionMethod.js index 4c65a022c58..7cc35723e22 100644 --- a/packages/web3-core-method/src/methods/transaction/GetTransactionMethod.js +++ b/packages/web3-core-method/src/methods/transaction/GetTransactionMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetTransactionMethod extends AbstractCallMethod { +export default class GetTransactionMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getTransactionByHash', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_getTransactionByHash', 1, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/transaction/GetTransactionReceiptMethod.js b/packages/web3-core-method/src/methods/transaction/GetTransactionReceiptMethod.js index 15939c46643..61567698051 100644 --- a/packages/web3-core-method/src/methods/transaction/GetTransactionReceiptMethod.js +++ b/packages/web3-core-method/src/methods/transaction/GetTransactionReceiptMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class GetTransactionReceiptMethod extends AbstractCallMethod { +export default class GetTransactionReceiptMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_getTransactionReceipt', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_getTransactionReceipt', 1, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/methods/transaction/SendRawTransactionMethod.js b/packages/web3-core-method/src/methods/transaction/SendRawTransactionMethod.js index fa9577d1f2c..ecfeaaf9ce8 100644 --- a/packages/web3-core-method/src/methods/transaction/SendRawTransactionMethod.js +++ b/packages/web3-core-method/src/methods/transaction/SendRawTransactionMethod.js @@ -15,21 +15,23 @@ along with web3.js. If not, see . */ /** - * @file SendRawTransactionMethod.js @author Samuel Furter + * @file SendRawTransactionMethod.js + * @author Samuel Furter * @date 2018 */ -import AbstractSendMethod from '../../../lib/methods/AbstractSendMethod'; +import AbstractObservedTransactionMethod from '../../../lib/methods/transaction/AbstractObservedTransactionMethod'; -export default class SendRawTransactionMethod extends AbstractSendMethod { +export default class SendRawTransactionMethod extends AbstractObservedTransactionMethod { /** * @param {Utils} utils * @param {Object} formatters - * @param {TransactionConfirmationWorkflow} transactionConfirmationWorkflow + * @param {AbstractWeb3Module} moduleInstance + * @param {TransactionObserver} transactionObserver * * @constructor */ - constructor(utils, formatters, transactionConfirmationWorkflow) { - super('eth_sendRawTransaction', 1, utils, formatters, transactionConfirmationWorkflow); + constructor(utils, formatters, moduleInstance, transactionObserver) { + super('eth_sendRawTransaction', 1, utils, formatters, moduleInstance, transactionObserver); } } diff --git a/packages/web3-core-method/src/methods/transaction/SendTransactionMethod.js b/packages/web3-core-method/src/methods/transaction/SendTransactionMethod.js index 970ea92c91d..1505dc64386 100644 --- a/packages/web3-core-method/src/methods/transaction/SendTransactionMethod.js +++ b/packages/web3-core-method/src/methods/transaction/SendTransactionMethod.js @@ -20,32 +20,19 @@ * @date 2018 */ -import AbstractSendMethod from '../../../lib/methods/AbstractSendMethod'; +import AbstractObservedTransactionMethod from '../../../lib/methods/transaction/AbstractObservedTransactionMethod'; -// TODO: Clean up this method and move the signing and observing logic to the eth module -export default class SendTransactionMethod extends AbstractSendMethod { +export default class SendTransactionMethod extends AbstractObservedTransactionMethod { /** * @param {Utils} utils * @param {Object} formatters - * @param {TransactionConfirmationWorkflow} transactionConfirmationWorkflow - * @param {SendRawTransactionMethod} sendRawTransactionMethod - * @param {ChainIdMethod} chainIdMethod - * @param {GetTransactionCountMethod} getTransactionCountMethod + * @param {AbstractWeb3Module} moduleInstance + * @param {TransactionObserver} transactionObserver * * @constructor */ - constructor( - utils, - formatters, - transactionConfirmationWorkflow, - sendRawTransactionMethod, - chainIdMethod, - getTransactionCountMethod - ) { - super('eth_sendTransaction', 1, utils, formatters, transactionConfirmationWorkflow); - this.sendRawTransactionMethod = sendRawTransactionMethod; - this.chainIdMethod = chainIdMethod; - this.getTransactionCountMethod = getTransactionCountMethod; + constructor(utils, formatters, moduleInstance, transactionObserver) { + super('eth_sendTransaction', 1, utils, formatters, moduleInstance, transactionObserver); } /** @@ -58,137 +45,4 @@ export default class SendTransactionMethod extends AbstractSendMethod { beforeExecution(moduleInstance) { this.parameters[0] = this.formatters.inputTransactionFormatter(this.parameters[0], moduleInstance); } - - /** - * Checks if gasPrice is set, sends the request and returns a PromiEvent Object - * - * @method execute - * - * @param {Eth} moduleInstance - * @param {PromiEvent} promiEvent - * - * @callback callback callback(error, result) - * @returns {PromiEvent} - */ - execute(moduleInstance, promiEvent) { - if (!this.parameters[0].gas && moduleInstance.defaultGas) { - this.parameters[0]['gas'] = moduleInstance.defaultGas; - } - - if (!this.parameters[0].gasPrice) { - if (!moduleInstance.defaultGasPrice) { - moduleInstance.currentProvider.send('eth_gasPrice', []).then((gasPrice) => { - this.parameters[0].gasPrice = gasPrice; - - this.execute(moduleInstance, promiEvent); - }); - - return promiEvent; - } - - this.parameters[0]['gasPrice'] = moduleInstance.defaultGasPrice; - } - - if (this.hasAccounts(moduleInstance) && this.isDefaultSigner(moduleInstance)) { - if (moduleInstance.accounts.wallet[this.parameters[0].from]) { - this.sendRawTransaction( - moduleInstance.accounts.wallet[this.parameters[0].from].privateKey, - promiEvent, - moduleInstance - ).catch((error) => { - if (this.callback) { - this.callback(error, null); - } - - promiEvent.reject(error); - promiEvent.emit('error', error); - promiEvent.removeAllListeners(); - }); - - return promiEvent; - } - } - - if (this.hasCustomSigner(moduleInstance)) { - this.sendRawTransaction(null, promiEvent, moduleInstance).catch((error) => { - if (this.callback) { - this.callback(error, null); - } - - promiEvent.reject(error); - promiEvent.emit('error', error); - promiEvent.removeAllListeners(); - }); - - return promiEvent; - } - - super.execute(moduleInstance, promiEvent); - - return promiEvent; - } - - /** - * Signs the transaction and executes the SendRawTransaction method. - * - * @method sendRawTransaction - * - * @param {String} privateKey - * @param {PromiEvent} promiEvent - * @param {Eth} moduleInstance - */ - async sendRawTransaction(privateKey, promiEvent, moduleInstance) { - if (!this.parameters[0].chainId) { - this.parameters[0].chainId = await this.chainIdMethod.execute(moduleInstance); - } - - if (!this.parameters[0].nonce && this.parameters[0].nonce !== 0) { - this.getTransactionCountMethod.parameters = [this.parameters[0].from]; - this.parameters[0].nonce = await this.getTransactionCountMethod.execute(moduleInstance); - } - - const response = await moduleInstance.transactionSigner.sign(this.parameters[0], privateKey); - this.sendRawTransactionMethod.parameters = [response.rawTransaction]; - this.sendRawTransactionMethod.callback = this.callback; - this.sendRawTransactionMethod.execute(moduleInstance, promiEvent); - } - - /** - * Checks if the current module has decrypted accounts - * - * @method isDefaultSigner - * - * @param {AbstractWeb3Module} moduleInstance - * - * @returns {Boolean} - */ - isDefaultSigner(moduleInstance) { - return moduleInstance.transactionSigner.constructor.name === 'TransactionSigner'; - } - - /** - * Checks if the current module has decrypted accounts - * - * @method hasAccounts - * - * @param {AbstractWeb3Module} moduleInstance - * - * @returns {Boolean} - */ - hasAccounts(moduleInstance) { - return moduleInstance.accounts && moduleInstance.accounts.accountsIndex > 0; - } - - /** - * Checks if a custom signer is given. - * - * @method hasCustomerSigner - * - * @param {AbstractWeb3Module} moduleInstance - * - * @returns {Boolean} - */ - hasCustomSigner(moduleInstance) { - return moduleInstance.transactionSigner.constructor.name !== 'TransactionSigner'; - } } diff --git a/packages/web3-core-method/src/methods/transaction/SignTransactionMethod.js b/packages/web3-core-method/src/methods/transaction/SignTransactionMethod.js index ba59a20b557..30c1bfccecd 100644 --- a/packages/web3-core-method/src/methods/transaction/SignTransactionMethod.js +++ b/packages/web3-core-method/src/methods/transaction/SignTransactionMethod.js @@ -20,17 +20,18 @@ * @date 2018 */ -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; -export default class SignTransactionMethod extends AbstractCallMethod { +export default class SignTransactionMethod extends AbstractMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(utils, formatters) { - super('eth_signTransaction', 1, utils, formatters); + constructor(utils, formatters, moduleInstance) { + super('eth_signTransaction', 1, utils, formatters, moduleInstance); } /** diff --git a/packages/web3-core-method/src/observers/TransactionObserver.js b/packages/web3-core-method/src/observers/TransactionObserver.js new file mode 100644 index 00000000000..8ef12e3caa6 --- /dev/null +++ b/packages/web3-core-method/src/observers/TransactionObserver.js @@ -0,0 +1,302 @@ +/* + This file is part of web3.js. + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file TransactionObserver.js + * @author Samuel Furter + * @date 2019 + */ + +import {Observable} from 'rxjs'; + +export default class TransactionObserver { + /** + * @param {AbstractSocketProvider|HttpProvider|CustomProvider} provider + * @param {Number} timeout + * @param {Number} blockConfirmations + * @param {GetTransactionReceiptMethod} getTransactionReceiptMethod + * @param {GetBlockByNumberMethod} getBlockByNumberMethod + * @param {NewHeadsSubscription} newHeadsSubscription + * + * @constructor + */ + constructor( + provider, + timeout, + blockConfirmations, + getTransactionReceiptMethod, + getBlockByNumberMethod, + newHeadsSubscription + ) { + this.provider = provider; + this.timeout = timeout; + this.blockConfirmations = blockConfirmations; + this.getTransactionReceiptMethod = getTransactionReceiptMethod; + this.getBlockByNumberMethod = getBlockByNumberMethod; + this.newHeadsSubscription = newHeadsSubscription; + + this.blockNumbers = []; + this.lastBlock = false; + this.confirmations = 0; + this.confirmationChecks = 0; + this.interval = false; + } + + /** + * Observes the transaction by the given transactionHash + * + * @method observe + * + * @param {String} transactionHash + * + * @returns {Observable} + */ + observe(transactionHash) { + return Observable.create((observer) => { + if (this.isSocketBasedProvider()) { + this.startSocketObserver(transactionHash, observer); + } else { + this.startHttpObserver(transactionHash, observer); + } + }); + } + + /** + * Observes the transaction with the newHeads subscriptions which sends the eth_getTransactionReceipt method on each item + * + * @method startSocketObserver + * + * @param {String} transactionHash + * @param {Observer} observer + */ + startSocketObserver(transactionHash, observer) { + this.newHeadsSubscription.subscribe(async (error, newHead) => { + try { + if (observer.closed) { + await this.newHeadsSubscription.unsubscribe(); + + return; + } + + if (error) { + throw error; + } + + this.getTransactionReceiptMethod.parameters = [transactionHash]; + const receipt = await this.getTransactionReceiptMethod.execute(); + + if (!this.blockNumbers.includes(newHead.number)) { + if (receipt) { + this.confirmations++; + this.emitNext(receipt, observer); + + if (this.isConfirmed()) { + await this.newHeadsSubscription.unsubscribe(); + observer.complete(); + } + } + + this.blockNumbers.push(newHead.number); + this.confirmationChecks++; + + if (this.isTimeoutTimeExceeded()) { + await this.newHeadsSubscription.unsubscribe(); + + this.emitError( + new Error( + 'Timeout exceeded during the transaction confirmation process. Be aware the transaction could still get confirmed!' + ), + receipt, + observer + ); + } + } + } catch (error2) { + this.emitError(error2, false, observer); + } + }); + } + + /** + * Observes the transaction with sending eth_getTransactionReceipt and checking if there is really a new block + * + * @method checkOverHttp + * + * @param {String} transactionHash + * @param {Observer} observer + */ + startHttpObserver(transactionHash, observer) { + const interval = setInterval(async () => { + try { + if (observer.closed) { + clearInterval(interval); + + return; + } + + this.getTransactionReceiptMethod.parameters = [transactionHash]; + + const receipt = await this.getTransactionReceiptMethod.execute(); + + if (receipt) { + if (this.lastBlock) { + const block = await this.getBlockByNumber(this.increaseBlockNumber(this.lastBlock.number)); + + if (block && this.isValidConfirmation(block)) { + this.lastBlock = block; + this.confirmations++; + this.emitNext(receipt, observer); + } + } else { + this.lastBlock = await this.getBlockByNumber(receipt.blockNumber); + this.confirmations++; + this.emitNext(receipt, observer); + } + + if (this.isConfirmed()) { + clearInterval(interval); + observer.complete(); + } + } + + this.confirmationChecks++; + + if (this.isTimeoutTimeExceeded()) { + clearInterval(interval); + + this.emitError( + new Error( + 'Timeout exceeded during the transaction confirmation process. Be aware the transaction could still get confirmed!' + ), + receipt, + observer + ); + } + } catch (error) { + clearInterval(interval); + this.emitError(error, false, observer); + } + }, 1000); + } + + /** + * Calls the next callback method of the Observer + * + * @method emitNext + * + * @param {Object} receipt + * @param {Observer} observer + */ + emitNext(receipt, observer) { + observer.next({receipt, confirmations: this.confirmations}); + } + + /** + * Calls the error callback method of the Observer + * + * @method emitError + * + * @param {Error} error + * @param {Object} receipt + * @param {Observer} observer + */ + emitError(error, receipt, observer) { + observer.error({ + error, + receipt, + confirmations: this.confirmations, + confirmationChecks: this.confirmationChecks + }); + } + + /** + * Returns a block by the given blockHash + * + * @method getBlockByHash + * + * @param {String} blockHash + * + * @returns {Promise} + */ + getBlockByNumber(blockHash) { + this.getBlockByNumberMethod.parameters = [blockHash]; + + return this.getBlockByNumberMethod.execute(); + } + + /** + * Checks if enough confirmations happened + * + * @method isConfirmed + * + * + * @returns {Boolean} + */ + isConfirmed() { + return this.confirmations === this.blockConfirmations; + } + + /** + * Checks if the new block counts as confirmation + * + * @method isValidConfirmation + * + * @param {Object} block + * + * @returns {Boolean} + */ + isValidConfirmation(block) { + return this.lastBlock.hash === block.parentHash && this.lastBlock.number !== block.number; + } + + /** + * Checks if the timeout time is reached + * + * @method isTimeoutTimeExceeded + * + * @returns {Boolean} + */ + isTimeoutTimeExceeded() { + return this.confirmationChecks === this.timeout; + } + + /** + * Checks if the given provider is a socket based provider. + * + * @method isSocketBasedProvider + * + * @returns {Boolean} + */ + isSocketBasedProvider() { + switch (this.provider.constructor.name) { + case 'CustomProvider': + case 'HttpProvider': + return false; + default: + return true; + } + } + + /** + * Increases the blockNumber hash by one. + * + * @method increaseBlockNumber + * + * @param {String} blockNumber + * + * @returns {String} + */ + increaseBlockNumber(blockNumber) { + return '0x' + (parseInt(blockNumber, 16) + 1).toString(16); + } +} diff --git a/packages/web3-core-method/src/proxy/MethodProxy.js b/packages/web3-core-method/src/proxy/MethodProxy.js index 515a2ecf2ac..babd71bc72d 100644 --- a/packages/web3-core-method/src/proxy/MethodProxy.js +++ b/packages/web3-core-method/src/proxy/MethodProxy.js @@ -20,8 +20,6 @@ * @date 2018 */ -import {PromiEvent} from 'web3-core-promievent'; - export default class MethodProxy { /** * @param {AbstractWeb3Module} target @@ -45,23 +43,19 @@ export default class MethodProxy { ); } - const method = methodFactory.createMethod(name); + const method = methodFactory.createMethod(name, target); /* eslint-disable no-inner-declarations */ function anonymousFunction() { - method.arguments = arguments; - - if (method.Type === 'CALL') { - return method.execute(target); - } + method.setArguments(arguments); - return method.execute(target, new PromiEvent()); + return method.execute(); } /* eslint-enable no-inner-declarations */ anonymousFunction.method = method; anonymousFunction.request = function() { - method.arguments = arguments; + method.setArguments(arguments); return method; }; diff --git a/packages/web3-core-method/src/validators/TransactionReceiptValidator.js b/packages/web3-core-method/src/validators/TransactionReceiptValidator.js deleted file mode 100644 index 352f20f5f72..00000000000 --- a/packages/web3-core-method/src/validators/TransactionReceiptValidator.js +++ /dev/null @@ -1,74 +0,0 @@ -/* - This file is part of web3.js. - - web3.js is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - web3.js is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with web3.js. If not, see . -*/ -/** - * @file TransactionReceiptValidator.js - * @author Samuel Furter - * @date 2018 - */ - -export default class TransactionReceiptValidator { - /** - * Validates the receipt - * - * @method validate - * - * @param {Object} receipt - * @param {AbstractMethod} method - * - * @returns {Error|Boolean} - */ - validate(receipt, method) { - const receiptJSON = JSON.stringify(receipt, null, 2); - - if (!this.isValidGasUsage(receipt, method)) { - return new Error(`Transaction ran out of gas. Please provide more gas:\n${receiptJSON}`); - } - - if (!this.isValidReceiptStatus(receipt)) { - return new Error(`Transaction has been reverted by the EVM:\n${receiptJSON}`); - } - - return true; - } - - /** - * Checks if receipt status is valid - * - * @method isValidReceiptStatus - * - * @param {Object} receipt - * - * @returns {Boolean} - */ - isValidReceiptStatus(receipt) { - return receipt.status === true || typeof receipt.status === 'undefined' || receipt.status === null; - } - - /** - * Checks it is a valid gas usage - * - * @method isValidGasUsage - * - * @param {Object} receipt - * @param {AbstractMethod} method - * - * @returns {Boolean} - */ - isValidGasUsage(receipt, method) { - return !receipt.outOfGas && method.utils.hexToNumber(method.parameters[0].gas) !== receipt.gasUsed; - } -} diff --git a/packages/web3-core-method/src/watchers/NewHeadsWatcher.js b/packages/web3-core-method/src/watchers/NewHeadsWatcher.js deleted file mode 100644 index 820d584bb08..00000000000 --- a/packages/web3-core-method/src/watchers/NewHeadsWatcher.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - This file is part of web3.js. - - web3.js is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - web3.js is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with web3.js. If not, see . -*/ -/** - * @file NewHeadsWatcher.js - * @author Samuel Furter - * @date 2018 - */ - -import EventEmitter from 'eventemitter3'; - -export default class NewHeadsWatcher extends EventEmitter { - /** - * @param {SubscriptionsFactory} subscriptionsFactory - * - * @constructor - */ - constructor(subscriptionsFactory) { - super(); - this.subscriptionsFactory = subscriptionsFactory; - this.confirmationInterval = null; - this.confirmationSubscription = null; - this.isPolling = false; - } - - /** - * Starts subscription on newHeads if supported or creates an interval to get the newHeads - * - * @method watch - * - * @param {AbstractWeb3Module} moduleInstance - * - * @returns {NewHeadsWatcher} - */ - watch(moduleInstance) { - const providerName = moduleInstance.currentProvider.constructor.name; - - if (providerName !== 'HttpProvider' && providerName !== 'CustomProvider') { - this.confirmationSubscription = this.subscriptionsFactory - .createNewHeadsSubscription(moduleInstance) - .subscribe(() => { - this.emit('newHead'); - }); - - return this; - } - - this.isPolling = true; - this.confirmationInterval = setInterval(() => { - this.emit('newHead'); - }, 1000); - - return this; - } - - /** - * Clears the interval and unsubscribes the subscription - * - * @method stop - */ - stop() { - if (this.confirmationSubscription) { - this.confirmationSubscription.unsubscribe(); - } - - if (this.confirmationInterval) { - clearInterval(this.confirmationInterval); - } - - this.removeAllListeners('newHead'); - } -} diff --git a/packages/web3-core-method/src/workflows/TransactionConfirmationWorkflow.js b/packages/web3-core-method/src/workflows/TransactionConfirmationWorkflow.js deleted file mode 100644 index d85820fdfd0..00000000000 --- a/packages/web3-core-method/src/workflows/TransactionConfirmationWorkflow.js +++ /dev/null @@ -1,209 +0,0 @@ -/* - This file is part of web3.js. - - web3.js is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - web3.js is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with web3.js. If not, see . -*/ -/** - * @file TransactionConfirmationWorkflow.js - * @author Samuel Furter - * @date 2018 - */ - -export default class TransactionConfirmationWorkflow { - /** - * @param {TransactionReceiptValidator} transactionReceiptValidator - * @param {NewHeadsWatcher} newHeadsWatcher - * @param {GetTransactionReceiptMethod} getTransactionReceiptMethod - * - * @constructor - */ - constructor(transactionReceiptValidator, newHeadsWatcher, getTransactionReceiptMethod) { - this.transactionReceiptValidator = transactionReceiptValidator; - this.newHeadsWatcher = newHeadsWatcher; - this.timeoutCounter = 0; - this.confirmationsCounter = 0; - this.getTransactionReceiptMethod = getTransactionReceiptMethod; - } - - /** - * TODO: Remove callback method here and do it with a promise. - * - * Executes the transaction confirmation workflow - * - * @method execute - * - * @param {AbstractMethod} method - * @param {AbstractWeb3Module} moduleInstance - * @param {String} transactionHash - * @param {PromiEvent} promiEvent - * - * @callback callback callback(error, result) - */ - execute(method, moduleInstance, transactionHash, promiEvent) { - this.getTransactionReceiptMethod.parameters = [transactionHash]; - - this.getTransactionReceiptMethod.execute(moduleInstance).then((receipt) => { - if (receipt && receipt.blockHash) { - const validationResult = this.transactionReceiptValidator.validate(receipt, method); - if (validationResult === true) { - this.handleSuccessState(receipt, method, promiEvent); - - return; - } - - this.handleErrorState(validationResult, method, promiEvent); - - return; - } - - this.newHeadsWatcher.watch(moduleInstance).on('newHead', () => { - this.timeoutCounter++; - if (!this.isTimeoutTimeExceeded(moduleInstance, this.newHeadsWatcher.isPolling)) { - this.getTransactionReceiptMethod.execute(moduleInstance).then((receipt) => { - if (receipt && receipt.blockHash) { - const validationResult = this.transactionReceiptValidator.validate(receipt, method); - - if (validationResult === true) { - this.confirmationsCounter++; - promiEvent.emit('confirmation', this.confirmationsCounter, receipt); - - if (this.isConfirmed(moduleInstance)) { - this.handleSuccessState(receipt, method, promiEvent); - } - - return; - } - - this.handleErrorState(validationResult, method, promiEvent); - } - }); - - return; - } - - let error = new Error( - `Transaction was not mined within ${ - moduleInstance.transactionBlockTimeout - } blocks, please make sure your transaction was properly sent. Be aware that it might still be mined!` - ); - - if (this.newHeadsWatcher.isPolling) { - error = new Error( - `Transaction was not mined within ${ - moduleInstance.transactionPollingTimeout - } seconds, please make sure your transaction was properly sent. Be aware that it might still be mined!` - ); - } - - this.handleErrorState(error, method, promiEvent); - }); - }); - } - - /** - * Checks if the transaction has enough confirmations - * - * @method isConfirmed - * - * @param {AbstractWeb3Module} moduleInstance - * - * @returns {Boolean} - */ - isConfirmed(moduleInstance) { - return this.confirmationsCounter === moduleInstance.transactionConfirmationBlocks; - } - - /** - * Checks if the timeout time is reached - * - * @method isTimeoutTimeExceeded - * - * @param {AbstractWeb3Module} moduleInstance - * @param {Boolean} watcherIsPolling - * - * @returns {Boolean} - */ - isTimeoutTimeExceeded(moduleInstance, watcherIsPolling) { - let timeout = moduleInstance.transactionBlockTimeout; - if (watcherIsPolling) { - timeout = moduleInstance.transactionPollingTimeout; - } - - return this.timeoutCounter > timeout; - } - - /** - * Resolves promise, emits receipt event, calls callback and removes all the listeners. - * - * @method handleSuccessState - * - * @param {Object} receipt - * @param {AbstractMethod} method - * @param {PromiEvent} promiEvent - * - * @callback callback callback(error, result) - */ - handleSuccessState(receipt, method, promiEvent) { - this.timeoutCounter = 0; - this.confirmationsCounter = 0; - this.newHeadsWatcher.stop(); - - if (method.constructor.name === 'ContractDeployMethod') { - if (method.callback) { - method.callback(false, receipt); - } - - promiEvent.resolve(method.afterExecution(receipt)); - promiEvent.emit('receipt', receipt); - promiEvent.removeAllListeners(); - - return; - } - - const mappedReceipt = method.afterExecution(receipt); - - if (method.callback) { - method.callback(false, mappedReceipt); - } - - promiEvent.resolve(mappedReceipt); - promiEvent.emit('receipt', mappedReceipt); - promiEvent.removeAllListeners(); - } - - /** - * Rejects promise, emits error event, calls callback and removes all the listeners. - * - * @method handleErrorState - * - * @param {Error} error - * @param {AbstractMethod} method - * @param {PromiEvent} promiEvent - * - * @callback callback callback(error, result) - */ - handleErrorState(error, method, promiEvent) { - this.timeoutCounter = 0; - this.confirmationsCounter = 0; - this.newHeadsWatcher.stop(); - - if (method.callback) { - method.callback(error, null); - } - - promiEvent.reject(error); - promiEvent.emit('error', error); - promiEvent.removeAllListeners(); - } -} diff --git a/packages/web3-core-method/tests/__mocks__/Accounts.js b/packages/web3-core-method/tests/__mocks__/Accounts.js index 696635aba33..bc70780b763 100644 --- a/packages/web3-core-method/tests/__mocks__/Accounts.js +++ b/packages/web3-core-method/tests/__mocks__/Accounts.js @@ -1,6 +1,3 @@ -/** - * Manual Accounts mock - */ export default class Accounts { constructor() { this.wallet = []; diff --git a/packages/web3-core-method/tests/__mocks__/CustomProvider.js b/packages/web3-core-method/tests/__mocks__/CustomProvider.js index ab604aa0c75..5d0eb401147 100644 --- a/packages/web3-core-method/tests/__mocks__/CustomProvider.js +++ b/packages/web3-core-method/tests/__mocks__/CustomProvider.js @@ -1,6 +1,3 @@ -/** - * Manual CustomProvider mock - */ export default class CustomProvider { constructor() { this.host = 'CustomProvider'; diff --git a/packages/web3-core-method/tests/__mocks__/TransactionSigner.js b/packages/web3-core-method/tests/__mocks__/TransactionSigner.js index c88cae6f7f8..9291a67c46d 100644 --- a/packages/web3-core-method/tests/__mocks__/TransactionSigner.js +++ b/packages/web3-core-method/tests/__mocks__/TransactionSigner.js @@ -1,22 +1,3 @@ -/* - This file is part of web3.js. - web3.js is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - web3.js is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public License - along with web3.js. If not, see . -*/ -/** - * @file TransactionSigner.js - * @author Samuel Furter - * @date 2019 - */ - export default class TransactionSigner { sign() {} } diff --git a/packages/web3-core-promievent/tests/src/PromiEventTest.js b/packages/web3-core-method/tests/lib/PromiEventTest.js similarity index 94% rename from packages/web3-core-promievent/tests/src/PromiEventTest.js rename to packages/web3-core-method/tests/lib/PromiEventTest.js index b8bd8a66dc6..3b765894e48 100644 --- a/packages/web3-core-promievent/tests/src/PromiEventTest.js +++ b/packages/web3-core-method/tests/lib/PromiEventTest.js @@ -1,4 +1,4 @@ -import PromiEvent from '../../src/PromiEvent'; +import PromiEvent from '../../lib/PromiEvent'; /** * PromiEvent test diff --git a/packages/web3-core-method/tests/lib/factories/AbstractMethodFactoryTest.js b/packages/web3-core-method/tests/lib/factories/AbstractMethodFactoryTest.js index 95450763563..d2b1d624432 100644 --- a/packages/web3-core-method/tests/lib/factories/AbstractMethodFactoryTest.js +++ b/packages/web3-core-method/tests/lib/factories/AbstractMethodFactoryTest.js @@ -1,80 +1,116 @@ +import {AbstractWeb3Module} from 'web3-core'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; import AbstractMethodFactory from '../../../lib/factories/AbstractMethodFactory'; -import MethodModuleFactory from '../../../src/factories/ModuleFactory'; -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; -import AbstractSendMethod from '../../../lib/methods/AbstractSendMethod'; -import SendTransactionMethod from '../../../src/methods/transaction/SendTransactionMethod'; -import SignMethod from '../../../src/methods/SignMethod'; +import AbstractObservedTransactionMethod from '../../../lib/methods/transaction/AbstractObservedTransactionMethod'; +import TransactionObserver from '../../../src/observers/TransactionObserver'; +import GetTransactionReceiptMethod from '../../../src/methods/transaction/GetTransactionReceiptMethod'; +import GetBlockByNumberMethod from '../../../src/methods/block/GetBlockByNumberMethod'; +import {NewHeadsSubscription} from 'web3-core-subscriptions'; // Mocks -jest.mock('../../../src/factories/ModuleFactory'); +jest.mock('AbstractWeb3Module'); +jest.mock('NewHeadsSubscription'); +jest.mock('../../../lib/methods/AbstractMethod'); +jest.mock('../../../src/methods/block/GetBlockByNumberMethod'); +jest.mock('../../../src/methods/transaction/GetTransactionReceiptMethod'); +jest.mock('../../../src/observers/TransactionObserver'); /** * AbstractMethodFactory test */ describe('AbstractMethodFactoryTest', () => { - let abstractMethodFactory, methodModuleFactoryMock; + let abstractMethodFactory; beforeEach(() => { - new MethodModuleFactory({}); - methodModuleFactoryMock = MethodModuleFactory.mock.instances[0]; - - abstractMethodFactory = new AbstractMethodFactory(methodModuleFactoryMock, {}, {}); + abstractMethodFactory = new AbstractMethodFactory({}, {}); abstractMethodFactory.methods = { - call: AbstractCallMethod, - send: AbstractSendMethod + send: AbstractMethod, + sendObserved: AbstractObservedTransactionMethod }; }); + it('constructor check', () => { + expect(abstractMethodFactory.utils).toEqual({}); + + expect(abstractMethodFactory.formatters).toEqual({}); + }); + + it('throws an error on calling the methods property if now methods are defined', () => { + abstractMethodFactory.methods = null; + + expect(() => { + // eslint-disable-next-line no-unused-vars + const methods = abstractMethodFactory.methods; + }).toThrow('No methods defined for MethodFactory!'); + }); + it('calls hasMethod and returns true', () => { - abstractMethodFactory = new AbstractMethodFactory({}, {}, {}); + abstractMethodFactory = new AbstractMethodFactory({}, {}); abstractMethodFactory.methods = {call: true}; expect(abstractMethodFactory.hasMethod('call')).toEqual(true); }); it('calls hasMethod and returns false', () => { - abstractMethodFactory = new AbstractMethodFactory({}, {}, {}); + abstractMethodFactory = new AbstractMethodFactory({}, {}); abstractMethodFactory.methods = {}; expect(abstractMethodFactory.hasMethod('call')).toEqual(false); }); - it('calls createMethod and returns AbstractCallMethod', () => { - expect(abstractMethodFactory.hasMethod('call')).toEqual(true); - - expect(abstractMethodFactory.createMethod('call')).toBeInstanceOf(AbstractCallMethod); - }); + it('calls createMethod and returns a object of type AbstractMethod', () => { + new AbstractWeb3Module(); + const moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; - it('calls createMethod and returns AbstractSendMethod', () => { expect(abstractMethodFactory.hasMethod('send')).toEqual(true); - expect(abstractMethodFactory.createMethod('send')).toBeInstanceOf(AbstractSendMethod); + expect(abstractMethodFactory.createMethod('send', moduleInstanceMock)).toBeInstanceOf(AbstractMethod); - expect(methodModuleFactoryMock.createTransactionConfirmationWorkflow).toHaveBeenCalled(); + expect(AbstractMethod).toHaveBeenCalledWith({}, {}, moduleInstanceMock); }); - it('calls createMethod and returns SendTransactionMethod', () => { - abstractMethodFactory = new AbstractMethodFactory(methodModuleFactoryMock, {}, {}); - abstractMethodFactory.methods = { - sendTransaction: SendTransactionMethod - }; + it('calls createMethod and returns a object of type AbstractObservedTransactionMethod', () => { + new AbstractWeb3Module(); + const moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; + moduleInstanceMock.currentProvider = {constructor: {name: 'HttpProvider'}}; + + expect(abstractMethodFactory.hasMethod('sendObserved')).toEqual(true); - expect(abstractMethodFactory.hasMethod('sendTransaction')).toEqual(true); + const observedMethod = abstractMethodFactory.createMethod('sendObserved', moduleInstanceMock); - expect(abstractMethodFactory.createMethod('sendTransaction')).toBeInstanceOf(SendTransactionMethod); + expect(observedMethod).toBeInstanceOf(AbstractObservedTransactionMethod); - expect(methodModuleFactoryMock.createTransactionConfirmationWorkflow).toHaveBeenCalled(); + expect(GetTransactionReceiptMethod).toHaveBeenCalledTimes(1); + + expect(AbstractObservedTransactionMethod).toHaveBeenCalledTimes(1); + + expect(GetBlockByNumberMethod).toHaveBeenCalledTimes(1); + + expect(NewHeadsSubscription).toHaveBeenCalledTimes(1); + + expect(TransactionObserver).toHaveBeenCalledTimes(1); }); - it('calls createMethod and returns SignMethod', () => { - abstractMethodFactory = new AbstractMethodFactory(methodModuleFactoryMock, {}, {}); - abstractMethodFactory.methods = { - sign: SignMethod - }; + it('calls createMethod with a socket provider and returns a object of type AbstractObservedTransactionMethod', () => { + new AbstractWeb3Module(); + const moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; + moduleInstanceMock.currentProvider = {constructor: {name: 'WebsocketProvider'}}; + + expect(abstractMethodFactory.hasMethod('sendObserved')).toEqual(true); + + const observedMethod = abstractMethodFactory.createMethod('sendObserved', moduleInstanceMock); + + expect(observedMethod).toBeInstanceOf(AbstractObservedTransactionMethod); + + expect(GetTransactionReceiptMethod).toHaveBeenCalledTimes(1); + + expect(AbstractObservedTransactionMethod).toHaveBeenCalledTimes(1); + + expect(GetBlockByNumberMethod).toHaveBeenCalledTimes(1); - expect(abstractMethodFactory.hasMethod('sign')).toEqual(true); + expect(NewHeadsSubscription).toHaveBeenCalledTimes(1); - expect(abstractMethodFactory.createMethod('sign')).toBeInstanceOf(SignMethod); + expect(TransactionObserver).toHaveBeenCalledTimes(1); }); }); diff --git a/packages/web3-core-method/tests/lib/methods/AbstractCallMethodTest.js b/packages/web3-core-method/tests/lib/methods/AbstractCallMethodTest.js deleted file mode 100644 index 0c24dc759c4..00000000000 --- a/packages/web3-core-method/tests/lib/methods/AbstractCallMethodTest.js +++ /dev/null @@ -1,102 +0,0 @@ -import {WebsocketProvider} from 'web3-providers'; -import {AbstractWeb3Module} from 'web3-core'; -import * as Utils from 'web3-utils'; -import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; - -// Mocks -jest.mock('WebsocketProvider'); -jest.mock('AbstractWeb3Module'); -jest.mock('Utils'); -jest.mock('formatters'); - -/** - * CallMethodCommand test - */ -describe('AbstractCallMethodTest', () => { - let abstractCallMethod, providerMock, moduleInstanceMock; - - beforeEach(() => { - new WebsocketProvider('host', {}); - providerMock = WebsocketProvider.mock.instances[0]; - providerMock.send = jest.fn(); - - new AbstractWeb3Module(providerMock, {}, {}, {}); - moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; - - abstractCallMethod = new AbstractCallMethod('RPC_METHOD', 0, Utils, formatters); - abstractCallMethod.callback = jest.fn(); - abstractCallMethod.beforeExecution = jest.fn(); - }); - - it('constructor check', () => { - expect(AbstractCallMethod.Type).toEqual('CALL'); - - expect(abstractCallMethod.rpcMethod).toEqual('RPC_METHOD'); - - expect(abstractCallMethod.parametersAmount).toEqual(0); - - expect(abstractCallMethod.utils).toEqual(Utils); - - expect(abstractCallMethod.formatters).toEqual(formatters); - }); - - it('calls execute and returns with the expected value', async () => { - abstractCallMethod.afterExecution = jest.fn(() => { - return '0x00'; - }); - - providerMock.send.mockReturnValueOnce(Promise.resolve('0x0')); - - moduleInstanceMock.currentProvider = providerMock; - - const response = await abstractCallMethod.execute(moduleInstanceMock); - - expect(response).toEqual('0x00'); - - expect(providerMock.send).toHaveBeenCalledWith(abstractCallMethod.rpcMethod, abstractCallMethod.parameters); - - expect(abstractCallMethod.callback).toHaveBeenCalledWith(false, '0x00'); - - expect(abstractCallMethod.beforeExecution).toHaveBeenCalledWith(moduleInstanceMock); - - expect(abstractCallMethod.afterExecution).toHaveBeenCalledWith('0x0'); - }); - - it('calls execute and throws an error on sending the request to the connected node', async () => { - const error = new Error('ERROR ON SEND'); - providerMock.send = jest.fn(() => { - return Promise.reject(error); - }); - - moduleInstanceMock.currentProvider = providerMock; - - try { - await abstractCallMethod.execute(moduleInstanceMock); - } catch (error2) { - expect(error2).toEqual(error); - - expect(providerMock.send).toHaveBeenCalledWith(abstractCallMethod.rpcMethod, abstractCallMethod.parameters); - - expect(abstractCallMethod.callback).toHaveBeenCalledWith(error, null); - - expect(abstractCallMethod.beforeExecution).toHaveBeenCalledWith(moduleInstanceMock); - } - }); - - it('calls execute and it returns null', async () => { - providerMock.send.mockReturnValueOnce(Promise.resolve(null)); - - moduleInstanceMock.currentProvider = providerMock; - - const response = await abstractCallMethod.execute(moduleInstanceMock); - - expect(response).toEqual(null); - - expect(providerMock.send).toHaveBeenCalledWith(abstractCallMethod.rpcMethod, abstractCallMethod.parameters); - - expect(abstractCallMethod.callback).toHaveBeenCalledWith(false, null); - - expect(abstractCallMethod.beforeExecution).toHaveBeenCalledWith(moduleInstanceMock); - }); -}); diff --git a/packages/web3-core-method/tests/lib/methods/AbstractMethodTest.js b/packages/web3-core-method/tests/lib/methods/AbstractMethodTest.js index 9f950382853..28adca380e9 100644 --- a/packages/web3-core-method/tests/lib/methods/AbstractMethodTest.js +++ b/packages/web3-core-method/tests/lib/methods/AbstractMethodTest.js @@ -1,24 +1,34 @@ import * as Utils from 'web3-utils'; +import {WebsocketProvider} from 'web3-providers'; import {formatters} from 'web3-core-helpers'; import AbstractMethod from '../../../lib/methods/AbstractMethod'; // Mocks jest.mock('Utils'); jest.mock('formatters'); +jest.mock('WebsocketProvider'); /** * AbstractMethod test */ describe('AbstractMethodTest', () => { - let abstractMethod; + let abstractMethod, moduleInstanceMock, providerMock, callback; beforeEach(() => { - abstractMethod = new AbstractMethod('RPC_TEST', 0, Utils, formatters); + callback = jest.fn(); + + new WebsocketProvider('host', {}); + providerMock = WebsocketProvider.mock.instances[0]; + providerMock.send = jest.fn(); + + moduleInstanceMock = {}; + + abstractMethod = new AbstractMethod('RPC_TEST', 0, Utils, formatters, moduleInstanceMock); + abstractMethod.callback = callback; + abstractMethod.beforeExecution = jest.fn(); }); it('constructor check', () => { - expect(AbstractMethod.Type).toEqual(undefined); - expect(abstractMethod.rpcMethod).toEqual('RPC_TEST'); expect(abstractMethod.parametersAmount).toEqual(0); @@ -27,26 +37,28 @@ describe('AbstractMethodTest', () => { expect(abstractMethod.formatters).toEqual(formatters); + expect(abstractMethod.moduleInstance).toEqual(moduleInstanceMock); + expect(abstractMethod.parameters).toEqual([]); - expect(abstractMethod.callback).toEqual(undefined); + expect(abstractMethod.callback).toEqual(callback); }); - it('set arguments throws error on missing arguments', () => { + it('setArguments throws error on missing arguments', () => { abstractMethod.parametersAmount = 3; try { - abstractMethod.arguments = []; + abstractMethod.setArguments([]); } catch (error) { expect(error).toBeInstanceOf(Error); } }); - it('set arguments throws error if callback is not of type Function', () => { + it('setArguments throws error if callback is not of type Function', () => { abstractMethod.parametersAmount = 1; try { - abstractMethod.arguments = [true, true]; + abstractMethod.setArguments([true, true]); } catch (error) { expect(error).toBeInstanceOf(Error); } @@ -54,7 +66,7 @@ describe('AbstractMethodTest', () => { it('set arguments without callback', () => { abstractMethod.parametersAmount = 1; - abstractMethod.arguments = [true]; + abstractMethod.setArguments([true]); expect(abstractMethod.parameters).toEqual([true]); @@ -63,7 +75,7 @@ describe('AbstractMethodTest', () => { it('set arguments with callback', () => { abstractMethod.parametersAmount = 1; - abstractMethod.arguments = [true, () => {}]; + abstractMethod.setArguments([true, () => {}]); expect(abstractMethod.parameters).toEqual([true]); @@ -72,9 +84,9 @@ describe('AbstractMethodTest', () => { it('get arguments', () => { abstractMethod.parametersAmount = 1; - abstractMethod.arguments = [true]; + abstractMethod.setArguments([true]); - expect(abstractMethod.arguments).toEqual({callback: null, parameters: [true]}); + expect(abstractMethod.getArguments()).toEqual({callback: null, parameters: [true]}); }); it('set rpcMethod', () => { @@ -99,33 +111,79 @@ describe('AbstractMethodTest', () => { expect(abstractMethod.execute).toBeInstanceOf(Function); }); - it('beforeExecution changes nothing', () => { - abstractMethod.beforeExecution(); + it('afterExecution just returns the value', () => { + expect(abstractMethod.afterExecution('string')).toEqual('string'); + }); - expect(AbstractMethod.Type).toEqual(undefined); + it('isHash returns true', () => { + expect(abstractMethod.isHash('0x0')).toBeTruthy(); + }); - expect(abstractMethod.rpcMethod).toEqual('RPC_TEST'); + it('isHash returns false', () => { + expect(abstractMethod.isHash(100)).toBeFalsy(); + }); - expect(abstractMethod.parametersAmount).toEqual(0); + it('calls execute and returns with the expected value', async () => { + abstractMethod.afterExecution = jest.fn(() => { + return '0x00'; + }); - expect(abstractMethod.utils).toEqual(Utils); + providerMock.send.mockReturnValueOnce(Promise.resolve('0x0')); - expect(abstractMethod.formatters).toEqual(formatters); + moduleInstanceMock.currentProvider = providerMock; - expect(abstractMethod.parameters).toEqual([]); + const response = await abstractMethod.execute(moduleInstanceMock); + + expect(response).toEqual('0x00'); + + expect(providerMock.send).toHaveBeenCalledWith(abstractMethod.rpcMethod, abstractMethod.parameters); - expect(abstractMethod.callback).toEqual(undefined); + expect(abstractMethod.callback).toHaveBeenCalledWith(false, '0x00'); + + expect(abstractMethod.beforeExecution).toHaveBeenCalledWith(moduleInstanceMock); + + expect(abstractMethod.afterExecution).toHaveBeenCalledWith('0x0'); }); - it('afterExecution just returns the value', () => { - expect(abstractMethod.afterExecution('string')).toEqual('string'); + it('calls execute and throws an error on sending the request to the connected node', async () => { + providerMock.send = jest.fn(() => { + return Promise.reject(new Error('ERROR ON SEND')); + }); + + moduleInstanceMock.currentProvider = providerMock; + await expect(abstractMethod.execute(moduleInstanceMock)).rejects.toThrow('ERROR ON SEND'); + + expect(providerMock.send).toHaveBeenCalledWith(abstractMethod.rpcMethod, abstractMethod.parameters); + + expect(abstractMethod.callback).toHaveBeenCalledWith(new Error('ERROR ON SEND'), null); + + expect(abstractMethod.beforeExecution).toHaveBeenCalledWith(moduleInstanceMock); }); - it('isHash returns true', () => { - expect(abstractMethod.isHash('0x0')).toBeTruthy(); + it('calls execute and throws an error because of a invalid parameters length', async () => { + abstractMethod.parametersAmount = 0; + abstractMethod.parameters = [true]; + + await expect(abstractMethod.execute(moduleInstanceMock)).rejects.toThrow( + 'Invalid Arguments length: expected: 0, given: 1' + ); + + expect(abstractMethod.beforeExecution).toHaveBeenCalledWith(moduleInstanceMock); }); - it('isHash returns false', () => { - expect(abstractMethod.isHash(100)).toBeFalsy(); + it('calls execute and it returns null', async () => { + providerMock.send.mockReturnValueOnce(Promise.resolve(null)); + + moduleInstanceMock.currentProvider = providerMock; + + const response = await abstractMethod.execute(moduleInstanceMock); + + expect(response).toEqual(null); + + expect(providerMock.send).toHaveBeenCalledWith(abstractMethod.rpcMethod, abstractMethod.parameters); + + expect(abstractMethod.callback).toHaveBeenCalledWith(false, null); + + expect(abstractMethod.beforeExecution).toHaveBeenCalledWith(moduleInstanceMock); }); }); diff --git a/packages/web3-core-method/tests/lib/methods/AbstractSendMethodTest.js b/packages/web3-core-method/tests/lib/methods/AbstractSendMethodTest.js deleted file mode 100644 index a1286b19e10..00000000000 --- a/packages/web3-core-method/tests/lib/methods/AbstractSendMethodTest.js +++ /dev/null @@ -1,130 +0,0 @@ -import {WebsocketProvider} from 'web3-providers'; -import {AbstractWeb3Module} from 'web3-core'; -import * as Utils from 'web3-utils'; -import {formatters} from 'web3-core-helpers'; -import {PromiEvent} from 'web3-core-promievent'; -import TransactionConfirmationWorkflow from '../../../src/workflows/TransactionConfirmationWorkflow'; -import AbstractSendMethod from '../../../lib/methods/AbstractSendMethod'; - -// Mocks -jest.mock('../../../src/workflows/TransactionConfirmationWorkflow'); -jest.mock('WebsocketProvider'); -jest.mock('AbstractWeb3Module'); -jest.mock('Utils'); -jest.mock('formatters'); - -/** - * AbstractSendMethod test - */ -describe('AbstractSendMethodTest', () => { - let abstractSendMethod, providerMock, moduleInstanceMock, promiEvent, transactionConfirmationWorkflowMock; - - beforeEach(() => { - new WebsocketProvider('host', {}); - providerMock = WebsocketProvider.mock.instances[0]; - providerMock.send = jest.fn(); - - new AbstractWeb3Module(providerMock, {}, {}, {}); - moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; - - promiEvent = new PromiEvent(); - - new TransactionConfirmationWorkflow({}, {}, {}); - transactionConfirmationWorkflowMock = TransactionConfirmationWorkflow.mock.instances[0]; - - abstractSendMethod = new AbstractSendMethod( - 'RPC_METHOD', - 1, - Utils, - formatters, - transactionConfirmationWorkflowMock - ); - - abstractSendMethod.beforeExecution = jest.fn(); - abstractSendMethod.callback = jest.fn(); - abstractSendMethod.parameters = [ - { - gas: 100, - gasPrice: 100 - } - ]; - }); - - it('constructor check', () => { - expect(AbstractSendMethod.Type).toEqual('SEND'); - - expect(abstractSendMethod.rpcMethod).toEqual('RPC_METHOD'); - - expect(abstractSendMethod.parametersAmount).toEqual(1); - - expect(abstractSendMethod.utils).toEqual(Utils); - - expect(abstractSendMethod.formatters).toEqual(formatters); - - expect(abstractSendMethod.transactionConfirmationWorkflow).toEqual(transactionConfirmationWorkflowMock); - }); - - it('calls execute and returns a PromiEvent object', async (done) => { - providerMock.send.mockReturnValueOnce(Promise.resolve('0x0')); - - moduleInstanceMock.currentProvider = providerMock; - - promiEvent.on('transactionHash', (response) => { - expect(response).toEqual('0x0'); - - expect(abstractSendMethod.beforeExecution).toHaveBeenCalledWith(moduleInstanceMock); - - expect(transactionConfirmationWorkflowMock.execute).toHaveBeenCalledWith( - abstractSendMethod, - moduleInstanceMock, - '0x0', - promiEvent - ); - - expect(providerMock.send).toHaveBeenCalledWith(abstractSendMethod.rpcMethod, abstractSendMethod.parameters); - - done(); - }); - - const response = await abstractSendMethod.execute(moduleInstanceMock, promiEvent); - - expect(response).toEqual('0x0'); - - expect(abstractSendMethod.callback).toHaveBeenCalledWith(false, '0x0'); - }); - - it('calls execute and throws an error on send', async (done) => { - const error = new Error('ERROR ON SEND'); - providerMock.send = jest.fn(() => { - return new Promise((resolve, reject) => { - reject(error); - }); - }); - - moduleInstanceMock.currentProvider = providerMock; - - try { - await abstractSendMethod.execute(moduleInstanceMock, promiEvent); - } catch (error2) { - expect(error2).toEqual(error); - - expect(abstractSendMethod.beforeExecution).toHaveBeenCalledWith(moduleInstanceMock); - - expect(providerMock.send).toHaveBeenCalledWith(abstractSendMethod.rpcMethod, abstractSendMethod.parameters); - - expect(abstractSendMethod.callback).toHaveBeenCalledWith(error, null); - } - - abstractSendMethod.execute(moduleInstanceMock, promiEvent).on('error', (e) => { - expect(e).toEqual(error); - - expect(abstractSendMethod.beforeExecution).toHaveBeenCalledWith(moduleInstanceMock); - - expect(providerMock.send).toHaveBeenCalledWith(abstractSendMethod.rpcMethod, abstractSendMethod.parameters); - - expect(abstractSendMethod.callback).toHaveBeenCalledWith(error, null); - - done(); - }); - }); -}); diff --git a/packages/web3-core-method/tests/src/methods/block/GetBlockMethodTest.js b/packages/web3-core-method/tests/lib/methods/block/AbstractGetBlockMethodTest.js similarity index 52% rename from packages/web3-core-method/tests/src/methods/block/GetBlockMethodTest.js rename to packages/web3-core-method/tests/lib/methods/block/AbstractGetBlockMethodTest.js index 59fbe103d67..5dfc9eda9dc 100644 --- a/packages/web3-core-method/tests/src/methods/block/GetBlockMethodTest.js +++ b/packages/web3-core-method/tests/lib/methods/block/AbstractGetBlockMethodTest.js @@ -1,33 +1,35 @@ import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; -import GetBlockMethod from '../../../../src/methods/block/GetBlockMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; +import AbstractGetBlockMethod from '../../../../lib/methods/block/AbstractGetBlockMethod'; // Mocks jest.mock('formatters'); /** - * GetBlockMethod test + * AbstractGetBlockMethodTest test */ -describe('GetBlockMethod', () => { +describe('AbstractGetBlockMethodTest', () => { let method; beforeEach(() => { - method = new GetBlockMethod(null, formatters); + method = new AbstractGetBlockMethod('rpcMethod', {}, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); - expect(method.rpcMethod).toEqual('eth_getBlockByNumber'); + expect(method.rpcMethod).toEqual('rpcMethod'); expect(method.parametersAmount).toEqual(2); - expect(method.utils).toEqual(null); + expect(method.utils).toEqual({}); expect(method.formatters).toEqual(formatters); + + expect(method.moduleInstance).toEqual({}); }); - it('should call beforeExecution with block hash as parameter and call inputBlockNumberFormatter', () => { + it('calls beforeExecution with block hash as parameter and it calls inputBlockNumberFormatter', () => { method.parameters = ['0x0', true]; formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); @@ -36,15 +38,14 @@ describe('GetBlockMethod', () => { expect(method.parameters[0]).toEqual('0x0'); - expect(method.parameters[1]).toBeTruthy(); + expect(method.parameters[1]).toEqual(true); expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith('0x0'); - - expect(method.rpcMethod).toEqual('eth_getBlockByHash'); }); - it('should call beforeExecution with block number as parameter and call inputBlockNumberFormatter', () => { - method.parameters = [100, true]; + it('calls beforeExecution with block hash and callback as parameter and it calls inputBlockNumberFormatter', () => { + const callback = jest.fn(); + method.parameters = ['0x0', callback]; formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); @@ -52,11 +53,11 @@ describe('GetBlockMethod', () => { expect(method.parameters[0]).toEqual('0x0'); - expect(method.parameters[1]).toBeTruthy(); + expect(method.parameters[1]).toEqual(false); - expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith(100); + expect(method.callback).toEqual(callback); - expect(method.rpcMethod).toEqual('eth_getBlockByNumber'); + expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith('0x0'); }); it('afterExecution should map the response', () => { diff --git a/packages/web3-core-method/tests/lib/methods/block/AbstractGetBlockTransactionCountMethodTest.js b/packages/web3-core-method/tests/lib/methods/block/AbstractGetBlockTransactionCountMethodTest.js new file mode 100644 index 00000000000..2bdba94916f --- /dev/null +++ b/packages/web3-core-method/tests/lib/methods/block/AbstractGetBlockTransactionCountMethodTest.js @@ -0,0 +1,53 @@ +import * as Utils from 'web3-utils'; +import {formatters} from 'web3-core-helpers'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; +import AbstractGetBlockTransactionCountMethod from '../../../../lib/methods/block/AbstractGetBlockTransactionCountMethod'; + +// Mocks +jest.mock('Utils'); +jest.mock('formatters'); + +/** + * AbstractGetBlockTransactionCountMethod test + */ +describe('AbstractGetBlockTransactionCountMethodTest', () => { + let method; + + beforeEach(() => { + method = new AbstractGetBlockTransactionCountMethod('rpcMethod', Utils, formatters, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractMethod); + + expect(method.rpcMethod).toEqual('rpcMethod'); + + expect(method.parametersAmount).toEqual(1); + + expect(method.utils).toEqual(Utils); + + expect(method.formatters).toEqual(formatters); + + expect(method.moduleInstance).toEqual({}); + }); + + it('calls beforeExecution with a block number as parameter and calls inputBlockNumberFormatter', () => { + method.parameters = [100]; + + formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); + + method.beforeExecution({}); + + expect(method.parameters[0]).toEqual('0x0'); + + expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith(100); + }); + + it('calls afterExecution and maps the hex string to a number', () => { + Utils.hexToNumber.mockReturnValueOnce(100); + + expect(method.afterExecution('0x0')).toEqual(100); + + expect(Utils.hexToNumber).toHaveBeenCalledWith('0x0'); + }); +}); diff --git a/packages/web3-core-method/tests/lib/methods/block/AbstractGetBlockUncleCountMethodTest.js b/packages/web3-core-method/tests/lib/methods/block/AbstractGetBlockUncleCountMethodTest.js new file mode 100644 index 00000000000..a82cfa2b930 --- /dev/null +++ b/packages/web3-core-method/tests/lib/methods/block/AbstractGetBlockUncleCountMethodTest.js @@ -0,0 +1,53 @@ +import * as Utils from 'web3-utils'; +import {formatters} from 'web3-core-helpers'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; +import AbstractGetBlockUncleCountMethod from '../../../../lib/methods/block/AbstractGetBlockUncleCountMethod'; + +// Mocks +jest.mock('Utils'); +jest.mock('formatters'); + +/** + * AbstractGetBlockUncleCountMethod test + */ +describe('AbstractGetBlockUncleCountMethodTest', () => { + let method; + + beforeEach(() => { + method = new AbstractGetBlockUncleCountMethod('rpcMethod', Utils, formatters, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractMethod); + + expect(method.rpcMethod).toEqual('rpcMethod'); + + expect(method.parametersAmount).toEqual(1); + + expect(method.utils).toEqual(Utils); + + expect(method.formatters).toEqual(formatters); + + expect(method.moduleInstance).toEqual({}); + }); + + it('calls beforeExecution with a block number hash as parameter and calls the inputBlockNumberFormatter', () => { + method.parameters = ['0x0']; + + formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); + + method.beforeExecution({}); + + expect(method.parameters[0]).toEqual('0x0'); + + expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith('0x0'); + }); + + it('afterExecution should map the hex string to a number', () => { + Utils.hexToNumber.mockReturnValueOnce(100); + + expect(method.afterExecution('0x0')).toEqual(100); + + expect(Utils.hexToNumber).toHaveBeenCalledWith('0x0'); + }); +}); diff --git a/packages/web3-core-method/tests/lib/methods/block/AbstractGetUncleMethodTest.js b/packages/web3-core-method/tests/lib/methods/block/AbstractGetUncleMethodTest.js new file mode 100644 index 00000000000..85e8b002395 --- /dev/null +++ b/packages/web3-core-method/tests/lib/methods/block/AbstractGetUncleMethodTest.js @@ -0,0 +1,58 @@ +import * as Utils from 'web3-utils'; +import {formatters} from 'web3-core-helpers'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; +import AbstractGetUncleMethod from '../../../../lib/methods/block/AbstractGetUncleMethod'; + +// Mocks +jest.mock('Utils'); +jest.mock('formatters'); + +/** + * AbstractGetUncleMethod test + */ +describe('AbstractGetUncleMethodTest', () => { + let method; + + beforeEach(() => { + method = new AbstractGetUncleMethod('rpcMethod', Utils, formatters, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractMethod); + + expect(method.rpcMethod).toEqual('rpcMethod'); + + expect(method.parametersAmount).toEqual(2); + + expect(method.utils).toEqual(Utils); + + expect(method.formatters).toEqual(formatters); + + expect(method.moduleInstance).toEqual({}); + }); + + it('calls beforeExecution with a block hash as parameter and calls the inputBlockNumberFormatter', () => { + method.parameters = ['0x0', 100]; + + formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); + + Utils.numberToHex.mockReturnValueOnce('0x0'); + + method.beforeExecution({}); + + expect(method.parameters[0]).toEqual('0x0'); + expect(method.parameters[1]).toEqual('0x0'); + + expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith('0x0'); + + expect(Utils.numberToHex).toHaveBeenCalledWith(100); + }); + + it('afterExecution should map the response', () => { + formatters.outputBlockFormatter.mockReturnValueOnce({block: true}); + + expect(method.afterExecution({})).toHaveProperty('block', true); + + expect(formatters.outputBlockFormatter).toHaveBeenCalledWith({}); + }); +}); diff --git a/packages/web3-core-method/tests/lib/methods/transaction/AbstractGetTransactionFromBlockMethodTest.js b/packages/web3-core-method/tests/lib/methods/transaction/AbstractGetTransactionFromBlockMethodTest.js new file mode 100644 index 00000000000..66025afed8e --- /dev/null +++ b/packages/web3-core-method/tests/lib/methods/transaction/AbstractGetTransactionFromBlockMethodTest.js @@ -0,0 +1,54 @@ +import * as Utils from 'web3-utils'; +import {formatters} from 'web3-core-helpers'; +import AbstractGetTransactionFromBlockMethod from '../../../../lib/methods/transaction/AbstractGetTransactionFromBlockMethod'; + +// Mocks +jest.mock('Utils'); +jest.mock('formatters'); + +/** + * AbstractGetTransactionFromBlockMethod test + */ +describe('AbstractGetTransactionFromBlockMethodTest', () => { + let method; + + beforeEach(() => { + method = new AbstractGetTransactionFromBlockMethod('rpcMethod', Utils, formatters, {}); + method.parameters = [{}, 1]; + }); + + it('constructor check', () => { + expect(method.rpcMethod).toEqual('rpcMethod'); + + expect(method.utils).toEqual(Utils); + + expect(method.formatters).toEqual(formatters); + + expect(method.moduleInstance).toEqual({}); + }); + + it('calls beforeExecution and executes the inputBlockNumberFormatter and the numberToHex method', () => { + Utils.numberToHex.mockReturnValueOnce('0x0'); + + formatters.inputBlockNumberFormatter.mockReturnValueOnce('blockNumber'); + + method.beforeExecution({}); + + expect(method.parameters[0]).toEqual('blockNumber'); + expect(method.parameters[1]).toEqual('0x0'); + + expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith({}); + + expect(Utils.numberToHex).toHaveBeenCalledWith(1); + }); + + it('calls afterExecution and executes the outputTransactionFormatter', () => { + Utils.numberToHex.mockReturnValueOnce('0x0'); + + formatters.outputTransactionFormatter.mockReturnValueOnce(true); + + expect(method.afterExecution({})).toEqual(true); + + expect(formatters.outputTransactionFormatter).toHaveBeenCalledWith({}); + }); +}); diff --git a/packages/web3-core-method/tests/lib/methods/transaction/AbstractObservedTransactionMethodTest.js b/packages/web3-core-method/tests/lib/methods/transaction/AbstractObservedTransactionMethodTest.js new file mode 100644 index 00000000000..6469a26adcf --- /dev/null +++ b/packages/web3-core-method/tests/lib/methods/transaction/AbstractObservedTransactionMethodTest.js @@ -0,0 +1,248 @@ +import PromiEvent from '../../../../lib/PromiEvent'; +import TransactionObserver from '../../../../src/observers/TransactionObserver'; +import AbstractObservedTransactionMethod from '../../../../lib/methods/transaction/AbstractObservedTransactionMethod'; + +// Mocks +jest.mock('../../../../src/observers/TransactionObserver'); + +/** + * AbstractObservedTransactionMethod test + */ +describe('AbstractObservedTransactionMethodTest', () => { + let method, + beforeExecutionMock, + afterExecutionMock, + moduleInstanceMock, + providerMock, + transactionObserverMock, + observableMock, + transactionHashCallback, + confirmationCallback; + + beforeEach(() => { + providerMock = {send: jest.fn()}; + + moduleInstanceMock = {}; + moduleInstanceMock.currentProvider = providerMock; + + observableMock = {subscribe: ''}; + + transactionHashCallback = jest.fn(); + confirmationCallback = jest.fn(); + + new TransactionObserver(); + transactionObserverMock = TransactionObserver.mock.instances[0]; + transactionObserverMock.observe.mockReturnValue(observableMock); + + beforeExecutionMock = jest.fn(); + afterExecutionMock = jest.fn((value) => { + return value; + }); + + method = new AbstractObservedTransactionMethod( + 'rpcMethod', + 5, + {}, + {}, + moduleInstanceMock, + transactionObserverMock + ); + method.beforeExecution = beforeExecutionMock; + method.afterExecution = afterExecutionMock; + }); + + it('constructor check', () => { + expect(AbstractObservedTransactionMethod.Type).toEqual('observed-transaction-method'); + + expect(method.rpcMethod).toEqual('rpcMethod'); + + expect(method.parametersAmount).toEqual(5); + + expect(method.moduleInstance).toEqual(moduleInstanceMock); + + expect(method.transactionObserver).toEqual(transactionObserverMock); + + expect(method.promiEvent).toBeInstanceOf(PromiEvent); + }); + + it('calls execute with event listeners and is emitting the expected values', (done) => { + providerMock.send.mockReturnValueOnce(Promise.resolve('transactionHash')); + + observableMock.subscribe = jest.fn((next, error, complete) => { + next({confirmations: 0, receipt: {status: '0x1'}}); + + complete(); + }); + + const promiEvent = method.execute(); + promiEvent.on('transactionHash', transactionHashCallback); + promiEvent.on('confirmation', confirmationCallback); + promiEvent.on('receipt', (receipt) => { + expect(receipt).toEqual({status: '0x1'}); + + expect(providerMock.send).toHaveBeenCalledWith('rpcMethod', []); + + expect(beforeExecutionMock).toHaveBeenCalledWith(moduleInstanceMock); + + expect(afterExecutionMock).toHaveBeenCalledWith({status: '0x1'}); + + expect(transactionHashCallback).toHaveBeenCalledWith('transactionHash'); + + expect(confirmationCallback).toHaveBeenCalledWith(0, {status: '0x1'}); + + done(); + }); + }); + + it('calls execute with event listeners and is emitting a error', (done) => { + providerMock.send.mockReturnValueOnce(Promise.resolve('transactionHash')); + + observableMock.subscribe = jest.fn((next, error, complete) => { + error('FAILED'); + }); + + method.execute().on('error', (error, receipt, count) => { + expect(error).toEqual('FAILED'); + + expect(receipt).toEqual(undefined); + + expect(count).toEqual(undefined); + + expect(providerMock.send).toHaveBeenCalledWith('rpcMethod', []); + + expect(beforeExecutionMock).toHaveBeenCalledWith(moduleInstanceMock); + + done(); + }); + }); + + it('calls execute and returns with the expected resolved Promise', async () => { + providerMock.send.mockReturnValueOnce(Promise.resolve('transactionHash')); + + observableMock.subscribe = jest.fn((next, error, complete) => { + next({count: 0, receipt: {status: '0x1'}}); + + complete(); + }); + + await expect(method.execute()).resolves.toEqual({status: '0x1'}); + + expect(providerMock.send).toHaveBeenCalledWith('rpcMethod', []); + + expect(beforeExecutionMock).toHaveBeenCalledWith(moduleInstanceMock); + + expect(afterExecutionMock).toHaveBeenCalledWith({status: '0x1'}); + }); + + it('calls execute and returns with the expected rejected Promise', async () => { + providerMock.send.mockReturnValueOnce(Promise.resolve('transactionHash')); + + observableMock.subscribe = jest.fn((next, error, complete) => { + error('FAILED'); + }); + + await expect(method.execute()).rejects.toEqual('FAILED'); + + expect(providerMock.send).toHaveBeenCalledWith('rpcMethod', []); + + expect(beforeExecutionMock).toHaveBeenCalledWith(moduleInstanceMock); + }); + + it('calls execute and returns a rejected Promise because of EVM error', async () => { + providerMock.send.mockReturnValueOnce(Promise.resolve('transactionHash')); + + observableMock.subscribe = jest.fn((next, error, complete) => { + next({count: 0, receipt: {status: '0x0'}}); + + complete(); + }); + + await expect(method.execute()).rejects.toThrow( + `Transaction has been reverted by the EVM:\n${JSON.stringify({status: '0x0'}, null, 2)}` + ); + + expect(providerMock.send).toHaveBeenCalledWith('rpcMethod', []); + }); + + it('calls execute and returns a rejected Promise because the transaction ran out of gas', async () => { + providerMock.send.mockReturnValueOnce(Promise.resolve('transactionHash')); + + observableMock.subscribe = jest.fn((next, error, complete) => { + next({count: 0, receipt: {status: '0x1', outOfGas: true}}); + + complete(); + }); + + await expect(method.execute()).rejects.toThrow( + `Transaction ran out of gas. Please provide more gas:\n${JSON.stringify( + {status: '0x1', outOfGas: true}, + null, + 2 + )}` + ); + + expect(providerMock.send).toHaveBeenCalledWith('rpcMethod', []); + }); + + it('calls execute and calls the given callback with the transaction hash', (done) => { + providerMock.send.mockReturnValueOnce(Promise.resolve('transactionHash')); + + method.callback = jest.fn((error, transactionHash) => { + expect(error).toEqual(false); + + expect(transactionHash).toEqual('transactionHash'); + + expect(providerMock.send).toHaveBeenCalledWith('rpcMethod', []); + + expect(beforeExecutionMock).toHaveBeenCalledWith(moduleInstanceMock); + + done(); + }); + + method.execute(); + }); + + it('calls execute and the provider send method throws an error', async () => { + providerMock.send.mockReturnValueOnce(Promise.reject(new Error('ERROR'))); + + await expect(method.execute()).rejects.toThrow('ERROR'); + + expect(providerMock.send).toHaveBeenCalledWith('rpcMethod', []); + + expect(beforeExecutionMock).toHaveBeenCalledWith(moduleInstanceMock); + }); + + it('calls execute with event listeners and the provider send method throws an error', (done) => { + providerMock.send.mockReturnValueOnce(Promise.reject(new Error('ERROR'))); + + const promiEvent = method.execute(); + + promiEvent.on('error', (error) => { + expect(error).toEqual(new Error('ERROR')); + + expect(providerMock.send).toHaveBeenCalledWith('rpcMethod', []); + + expect(beforeExecutionMock).toHaveBeenCalledWith(moduleInstanceMock); + + done(); + }); + }); + + it('calls execute with a callback and the provider send method throws an error', (done) => { + providerMock.send.mockReturnValueOnce(Promise.reject(new Error('ERROR'))); + + method.callback = jest.fn((error, receipt) => { + expect(error).toEqual(new Error('ERROR')); + + expect(receipt).toEqual(null); + + expect(providerMock.send).toHaveBeenCalledWith('rpcMethod', []); + + expect(beforeExecutionMock).toHaveBeenCalledWith(moduleInstanceMock); + + done(); + }); + + method.execute(); + }); +}); diff --git a/packages/web3-core-method/tests/src/factories/ModuleFactoryTest.js b/packages/web3-core-method/tests/src/factories/ModuleFactoryTest.js deleted file mode 100644 index cedb4caed5c..00000000000 --- a/packages/web3-core-method/tests/src/factories/ModuleFactoryTest.js +++ /dev/null @@ -1,38 +0,0 @@ -import TransactionConfirmationWorkflow from '../../../src/workflows/TransactionConfirmationWorkflow'; -import TransactionReceiptValidator from '../../../src/validators/TransactionReceiptValidator'; -import NewHeadsWatcher from '../../../src/watchers/NewHeadsWatcher'; -import SendRawTransactionMethod from '../../../src/methods/transaction/SendRawTransactionMethod'; -import ModuleFactory from '../../../src/factories/ModuleFactory'; - -/** - * ModuleFactory test - */ -describe('ModuleFactoryTest', () => { - let moduleFactory; - - beforeEach(() => { - moduleFactory = new ModuleFactory({}, {}, {}); - }); - - it('calls createTransactionConfirmationWorkflow and should return an instance of TransactionConfirmationWorkflow', () => { - expect(moduleFactory.createTransactionConfirmationWorkflow({}, {})).toBeInstanceOf( - TransactionConfirmationWorkflow - ); - }); - - it('calls createTransactionReceiptValidator and should return an instance of TransactionReceiptValidator', () => { - expect(moduleFactory.createTransactionReceiptValidator()).toBeInstanceOf(TransactionReceiptValidator); - }); - - it('calls createNewHeadsWatcher and should return an instance of NewHeadsWatcher', () => { - expect(moduleFactory.createNewHeadsWatcher({})).toBeInstanceOf(NewHeadsWatcher); - }); - - it('calls createMethodProxy and should return an instance of MethodProxy', () => { - expect(moduleFactory.createMethodProxy({}, {hasMethod: () => {}})).toBeInstanceOf(Object); - }); - - it('calls createSendRawTransactionMethod and should return an instance of SendRawTransactionMethod', () => { - expect(moduleFactory.createSendRawTransactionMethod()).toBeInstanceOf(SendRawTransactionMethod); - }); -}); diff --git a/packages/web3-core-method/tests/src/methods/CallMethodTest.js b/packages/web3-core-method/tests/src/methods/CallMethodTest.js index 129e7fa1ed9..2df7012c9ac 100644 --- a/packages/web3-core-method/tests/src/methods/CallMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/CallMethodTest.js @@ -1,5 +1,5 @@ import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; import CallMethod from '../../../src/methods/CallMethod'; // Mocks @@ -12,11 +12,11 @@ describe('CallMethodTest', () => { let method; beforeEach(() => { - method = new CallMethod(null, formatters); + method = new CallMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_call'); diff --git a/packages/web3-core-method/tests/src/methods/EstimateGasMethodTest.js b/packages/web3-core-method/tests/src/methods/EstimateGasMethodTest.js index ef7247cb826..8b297ba32f8 100644 --- a/packages/web3-core-method/tests/src/methods/EstimateGasMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/EstimateGasMethodTest.js @@ -1,6 +1,6 @@ import {formatters} from 'web3-core-helpers'; import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; import EstimateGasMethod from '../../../src/methods/EstimateGasMethod'; // Mocks @@ -14,11 +14,11 @@ describe('EstimateGasMethodTest', () => { let method; beforeEach(() => { - method = new EstimateGasMethod(Utils, formatters); + method = new EstimateGasMethod(Utils, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_estimateGas'); diff --git a/packages/web3-core-method/tests/src/methods/GetCodeMethodTest.js b/packages/web3-core-method/tests/src/methods/GetCodeMethodTest.js index 9c0af6b2ac8..69e055303e8 100644 --- a/packages/web3-core-method/tests/src/methods/GetCodeMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/GetCodeMethodTest.js @@ -1,5 +1,5 @@ import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; import GetCodeMethod from '../../../src/methods/GetCodeMethod'; // Mocks @@ -12,11 +12,11 @@ describe('GetCodeMethodTest', () => { let method; beforeEach(() => { - method = new GetCodeMethod(null, formatters); + method = new GetCodeMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_getCode'); diff --git a/packages/web3-core-method/tests/src/methods/GetPastLogsMethodTest.js b/packages/web3-core-method/tests/src/methods/GetPastLogsMethodTest.js index 51dd93a35d4..5298c344084 100644 --- a/packages/web3-core-method/tests/src/methods/GetPastLogsMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/GetPastLogsMethodTest.js @@ -1,5 +1,5 @@ import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; import GetPastLogsMethod from '../../../src/methods/GetPastLogsMethod'; // Mocks @@ -12,11 +12,11 @@ describe('GetPastLogsMethodTest', () => { let method; beforeEach(() => { - method = new GetPastLogsMethod(null, formatters); + method = new GetPastLogsMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_getLogs'); diff --git a/packages/web3-core-method/tests/src/methods/GetStorageAtMethodTest.js b/packages/web3-core-method/tests/src/methods/GetStorageAtMethodTest.js index 3f0f4b419fa..e8ec221d645 100644 --- a/packages/web3-core-method/tests/src/methods/GetStorageAtMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/GetStorageAtMethodTest.js @@ -1,6 +1,6 @@ import {formatters} from 'web3-core-helpers'; import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../lib/methods/AbstractMethod'; import GetStorageAtMethod from '../../../src/methods/GetStorageAtMethod'; // Mocks @@ -14,11 +14,11 @@ describe('GetStorageAtMethodTest', () => { let method; beforeEach(() => { - method = new GetStorageAtMethod(Utils, formatters); + method = new GetStorageAtMethod(Utils, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_getStorageAt'); diff --git a/packages/web3-core-method/tests/src/methods/SignMethodTest.js b/packages/web3-core-method/tests/src/methods/SignMethodTest.js index 5ded4ff31c6..3d8521add31 100644 --- a/packages/web3-core-method/tests/src/methods/SignMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/SignMethodTest.js @@ -1,40 +1,18 @@ import {formatters} from 'web3-core-helpers'; -import {WebsocketProvider} from 'web3-providers'; -import {AbstractWeb3Module} from 'web3-core'; -import * as Utils from 'web3-utils'; import SignMethod from '../../../src/methods/SignMethod'; -import Accounts from '../../__mocks__/Accounts'; import AbstractMethod from '../../../lib/methods/AbstractMethod'; // Mocks -jest.mock('Utils'); jest.mock('formatters'); -jest.mock('WebsocketProvider'); -jest.mock('AbstractWeb3Module'); /** * SignMethod test */ describe('SignMethodTest', () => { - let method, providerMock, moduleInstanceMock, accountsMock; + let method, moduleInstanceMock; beforeEach(() => { - new WebsocketProvider({}); - providerMock = WebsocketProvider.mock.instances[0]; - providerMock.send = jest.fn(); - - accountsMock = new Accounts(); - accountsMock.sign = jest.fn(); - accountsMock.wallet = {'0x0': {privateKey: '0x0', address: '0x0'}}; - accountsMock.accountsIndex = 1; - - new AbstractWeb3Module(providerMock, {}, {}, {}); - moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; - moduleInstanceMock.accounts = accountsMock; - - method = new SignMethod(Utils, formatters); - method.callback = jest.fn(); - method.parameters = ['nope', '0x0']; + method = new SignMethod({}, formatters, {}); }); it('constructor check', () => { @@ -45,83 +23,6 @@ describe('SignMethodTest', () => { expect(method.rpcMethod).toEqual('eth_sign'); }); - it('calls execute with wallets defined', async () => { - formatters.inputSignFormatter.mockReturnValueOnce('string'); - - formatters.inputAddressFormatter.mockReturnValueOnce('0x0'); - - accountsMock.sign.mockReturnValueOnce('0x00'); - - const response = await method.execute(moduleInstanceMock); - - expect(response).toEqual('0x00'); - - expect(method.callback).toHaveBeenCalledWith(false, '0x00'); - - expect(method.parameters[0]).toEqual('string'); - - expect(method.parameters[1]).toEqual('0x0'); - - expect(formatters.inputSignFormatter).toHaveBeenCalledWith('nope'); - - expect(formatters.inputAddressFormatter).toHaveBeenCalledWith('0x0'); - - expect(accountsMock.sign).toHaveBeenCalledWith('string', '0x0'); - }); - - it('calls execute with wallets defined but accounts.sign throws an error', async () => { - formatters.inputSignFormatter.mockReturnValueOnce('string'); - - formatters.inputAddressFormatter.mockReturnValueOnce('0x0'); - - const error = new Error('SIGN ERROR'); - accountsMock.sign = jest.fn(() => { - throw error; - }); - - try { - await method.execute(moduleInstanceMock); - } catch (error2) { - expect(error2).toEqual(error); - - expect(method.callback).toHaveBeenCalledWith(error, null); - - expect(formatters.inputSignFormatter).toHaveBeenCalledWith('nope'); - - expect(formatters.inputAddressFormatter).toHaveBeenCalledWith('0x0'); - - expect(accountsMock.sign).toHaveBeenCalledWith('string', '0x0'); - } - }); - - it('calls execute and the account does not exist in the eth-accounts wallet', async () => { - accountsMock.wallet = {nope: {privateKey: '0x0'}}; - - formatters.inputSignFormatter.mockReturnValueOnce('string'); - - formatters.inputAddressFormatter.mockReturnValueOnce('0x0'); - - providerMock.send.mockReturnValueOnce(Promise.resolve('0x0')); - - moduleInstanceMock.currentProvider = providerMock; - - const response = await method.execute(moduleInstanceMock); - - expect(response).toEqual('0x0'); - - expect(method.callback).toHaveBeenCalledWith(false, '0x0'); - - expect(method.parameters[0]).toEqual('string'); - - expect(method.parameters[1]).toEqual('0x0'); - - expect(providerMock.send).toHaveBeenCalledWith('eth_sign', method.parameters); - - expect(formatters.inputSignFormatter).toHaveBeenCalledWith('nope'); - - expect(formatters.inputAddressFormatter).toHaveBeenCalledWith('0x0'); - }); - it('beforeExecution should call the inputSignFormatter and inputAddressFormatter', () => { method.parameters = ['string', 'string']; diff --git a/packages/web3-core-method/tests/src/methods/account/GetAccountsMethodTest.js b/packages/web3-core-method/tests/src/methods/account/GetAccountsMethodTest.js index c6b572566aa..0c707998f7b 100644 --- a/packages/web3-core-method/tests/src/methods/account/GetAccountsMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/account/GetAccountsMethodTest.js @@ -1,5 +1,5 @@ import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetAccountsMethod from '../../../../src/methods/account/GetAccountsMethod'; // Mocks @@ -12,11 +12,11 @@ describe('GetAccountsMethodTest', () => { let method; beforeEach(() => { - method = new GetAccountsMethod(Utils, null); + method = new GetAccountsMethod(Utils, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_accounts'); diff --git a/packages/web3-core-method/tests/src/methods/account/GetBalanceMethodTest.js b/packages/web3-core-method/tests/src/methods/account/GetBalanceMethodTest.js index e6013ef425d..a38e221426f 100644 --- a/packages/web3-core-method/tests/src/methods/account/GetBalanceMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/account/GetBalanceMethodTest.js @@ -1,5 +1,5 @@ import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetBalanceMethod from '../../../../src/methods/account/GetBalanceMethod'; // Mocks @@ -12,11 +12,11 @@ describe('GetBalanceMethodTest', () => { let method; beforeEach(() => { - method = new GetBalanceMethod(null, formatters); + method = new GetBalanceMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_getBalance'); diff --git a/packages/web3-core-method/tests/src/methods/account/GetTransactionCountMethodTest.js b/packages/web3-core-method/tests/src/methods/account/GetTransactionCountMethodTest.js index 42018c66017..23f2c336018 100644 --- a/packages/web3-core-method/tests/src/methods/account/GetTransactionCountMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/account/GetTransactionCountMethodTest.js @@ -1,6 +1,6 @@ import {formatters} from 'web3-core-helpers'; import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetTransactionCountMethod from '../../../../src/methods/account/GetTransactionCountMethod'; // Mocks @@ -18,7 +18,7 @@ describe('GetTransactionCountMethodTest', () => { }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_getTransactionCount'); diff --git a/packages/web3-core-method/tests/src/methods/account/RequestAccountsMethodTest.js b/packages/web3-core-method/tests/src/methods/account/RequestAccountsMethodTest.js index 047b243cf42..b8f8ff27a78 100644 --- a/packages/web3-core-method/tests/src/methods/account/RequestAccountsMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/account/RequestAccountsMethodTest.js @@ -1,4 +1,4 @@ -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import RequestAccountsMethod from '../../../../src/methods/account/RequestAccountsMethod'; /** @@ -8,18 +8,18 @@ describe('RequestAccountsMethodTest', () => { let method; beforeEach(() => { - method = new RequestAccountsMethod(); + method = new RequestAccountsMethod({}, {}, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_requestAccounts'); expect(method.parametersAmount).toEqual(0); - expect(method.utils).toEqual(null); + expect(method.utils).toEqual({}); - expect(method.formatters).toEqual(null); + expect(method.formatters).toEqual({}); }); }); diff --git a/packages/web3-core-method/tests/src/methods/block/GetBlockByHashMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetBlockByHashMethodTest.js new file mode 100644 index 00000000000..19a784dc7a4 --- /dev/null +++ b/packages/web3-core-method/tests/src/methods/block/GetBlockByHashMethodTest.js @@ -0,0 +1,16 @@ +import GetBlockByHashMethod from '../../../../src/methods/block/GetBlockByHashMethod'; + +/** + * GetBlockByHashMethod test + */ +describe('GetBlockByHashMethodTest', () => { + let method; + + beforeEach(() => { + method = new GetBlockByHashMethod({}, {}, {}); + }); + + it('constructor check', () => { + expect(method.rpcMethod).toEqual('eth_getBlockByHash'); + }); +}); diff --git a/packages/web3-core-method/tests/src/methods/block/GetBlockByNumberMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetBlockByNumberMethodTest.js new file mode 100644 index 00000000000..0670cff6cb6 --- /dev/null +++ b/packages/web3-core-method/tests/src/methods/block/GetBlockByNumberMethodTest.js @@ -0,0 +1,19 @@ +import AbstractGetBlockMethod from '../../../../lib/methods/block/AbstractGetBlockMethod'; +import GetBlockByNumberMethod from '../../../../src/methods/block/GetBlockByNumberMethod'; + +/** + * GetBlockByNumberMethod test + */ +describe('GetBlockByNumberMethodTest', () => { + let method; + + beforeEach(() => { + method = new GetBlockByNumberMethod({}, {}, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractGetBlockMethod); + + expect(method.rpcMethod).toEqual('eth_getBlockByNumber'); + }); +}); diff --git a/packages/web3-core-method/tests/src/methods/block/GetBlockNumberMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetBlockNumberMethodTest.js index 4d2d4d67a0b..96b792d2b86 100644 --- a/packages/web3-core-method/tests/src/methods/block/GetBlockNumberMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/block/GetBlockNumberMethodTest.js @@ -1,5 +1,5 @@ import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetBlockNumberMethod from '../../../../src/methods/block/GetBlockNumberMethod'; // Mocks @@ -12,11 +12,11 @@ describe('GetBlockNumberMethodTest', () => { let method; beforeEach(() => { - method = new GetBlockNumberMethod(Utils, null); + method = new GetBlockNumberMethod(Utils, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_blockNumber'); diff --git a/packages/web3-core-method/tests/src/methods/block/GetBlockTransactionCountByHashMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetBlockTransactionCountByHashMethodTest.js new file mode 100644 index 00000000000..8b18f74c75e --- /dev/null +++ b/packages/web3-core-method/tests/src/methods/block/GetBlockTransactionCountByHashMethodTest.js @@ -0,0 +1,19 @@ +import AbstractGetBlockTransactionCountMethod from '../../../../lib/methods/block/AbstractGetBlockTransactionCountMethod'; +import GetBlockTransactionCountByHashMethod from '../../../../src/methods/block/GetBlockTransactionCountByHashMethod'; + +/** + * GetBlockTransactionCountByHashMethod test + */ +describe('GetBlockTransactionCountByHashMethodMethodTest', () => { + let method; + + beforeEach(() => { + method = new GetBlockTransactionCountByHashMethod({}, {}, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractGetBlockTransactionCountMethod); + + expect(method.rpcMethod).toEqual('eth_getBlockTransactionCountByHash'); + }); +}); diff --git a/packages/web3-core-method/tests/src/methods/block/GetBlockTransactionCountByNumberMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetBlockTransactionCountByNumberMethodTest.js new file mode 100644 index 00000000000..3c98543d52b --- /dev/null +++ b/packages/web3-core-method/tests/src/methods/block/GetBlockTransactionCountByNumberMethodTest.js @@ -0,0 +1,19 @@ +import AbstractGetBlockTransactionCountMethod from '../../../../lib/methods/block/AbstractGetBlockTransactionCountMethod'; +import GetBlockTransactionCountByNumberMethod from '../../../../src/methods/block/GetBlockTransactionCountByNumberMethod'; + +/** + * GetBlockTransactionCountByNumberMethod test + */ +describe('GetBlockTransactionCountByNumberMethodTest', () => { + let method; + + beforeEach(() => { + method = new GetBlockTransactionCountByNumberMethod({}, {}, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractGetBlockTransactionCountMethod); + + expect(method.rpcMethod).toEqual('eth_getBlockTransactionCountByNumber'); + }); +}); diff --git a/packages/web3-core-method/tests/src/methods/block/GetBlockTransactionCountMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetBlockTransactionCountMethodTest.js deleted file mode 100644 index a04dff4f671..00000000000 --- a/packages/web3-core-method/tests/src/methods/block/GetBlockTransactionCountMethodTest.js +++ /dev/null @@ -1,67 +0,0 @@ -import * as Utils from 'web3-utils'; -import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; -import GetBlockTransactionCountMethod from '../../../../src/methods/block/GetBlockTransactionCountMethod'; - -// Mocks -jest.mock('Utils'); -jest.mock('formatters'); - -/** - * GetBlockTransactionCountMethod test - */ -describe('GetBlockTransactionCountMethod', () => { - let method; - - beforeEach(() => { - method = new GetBlockTransactionCountMethod(Utils, formatters); - }); - - it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); - - expect(method.rpcMethod).toEqual('eth_getBlockTransactionCountByNumber'); - - expect(method.parametersAmount).toEqual(1); - - expect(method.utils).toEqual(Utils); - - expect(method.formatters).toEqual(formatters); - }); - - it('beforeExecution should call method with block hash as parameter and call inputBlockNumberFormatter', () => { - method.parameters = ['0x0']; - - formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); - - method.beforeExecution({}); - - expect(method.parameters[0]).toEqual('0x0'); - - expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith('0x0'); - - expect(method.rpcMethod).toEqual('eth_getBlockTransactionCountByHash'); - }); - - it('beforeExecution should call method with block number as parameter and call inputBlockNumberFormatter', () => { - method.parameters = [100]; - - formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); - - method.beforeExecution({}); - - expect(method.parameters[0]).toEqual('0x0'); - - expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith(100); - - expect(method.rpcMethod).toEqual('eth_getBlockTransactionCountByNumber'); - }); - - it('afterExecution should map the hex string to a number', () => { - Utils.hexToNumber.mockReturnValueOnce(100); - - expect(method.afterExecution('0x0')).toEqual(100); - - expect(Utils.hexToNumber).toHaveBeenCalledWith('0x0'); - }); -}); diff --git a/packages/web3-core-method/tests/src/methods/block/GetBlockUncleCountByBlockHashMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetBlockUncleCountByBlockHashMethodTest.js new file mode 100644 index 00000000000..5f1e2b108e4 --- /dev/null +++ b/packages/web3-core-method/tests/src/methods/block/GetBlockUncleCountByBlockHashMethodTest.js @@ -0,0 +1,19 @@ +import AbstractGetBlockUncleCountMethod from '../../../../lib/methods/block/AbstractGetBlockUncleCountMethod'; +import GetBlockUncleCountByBlockHashMethod from '../../../../src/methods/block/GetBlockUncleCountByBlockHashMethod'; + +/** + * GetBlockUncleCountByBlockNumberMethod test + */ +describe('GetBlockUncleCountByBlockHashMethodTest', () => { + let method; + + beforeEach(() => { + method = new GetBlockUncleCountByBlockHashMethod({}, {}, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractGetBlockUncleCountMethod); + + expect(method.rpcMethod).toEqual('eth_getUncleCountByBlockHash'); + }); +}); diff --git a/packages/web3-core-method/tests/src/methods/block/GetBlockUncleCountByBlockNumberMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetBlockUncleCountByBlockNumberMethodTest.js new file mode 100644 index 00000000000..24537fd43d2 --- /dev/null +++ b/packages/web3-core-method/tests/src/methods/block/GetBlockUncleCountByBlockNumberMethodTest.js @@ -0,0 +1,19 @@ +import AbstractGetBlockUncleCountMethod from '../../../../lib/methods/block/AbstractGetBlockUncleCountMethod'; +import GetBlockUncleCountByBlockNumberMethod from '../../../../src/methods/block/GetBlockUncleCountByBlockNumberMethod'; + +/** + * GetBlockUncleCountByBlockNumberMethod test + */ +describe('GetBlockUncleCountByBlockNumberMethodTest', () => { + let method; + + beforeEach(() => { + method = new GetBlockUncleCountByBlockNumberMethod({}, {}, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractGetBlockUncleCountMethod); + + expect(method.rpcMethod).toEqual('eth_getUncleCountByBlockNumber'); + }); +}); diff --git a/packages/web3-core-method/tests/src/methods/block/GetBlockUncleCountMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetBlockUncleCountMethodTest.js deleted file mode 100644 index e022758c2a1..00000000000 --- a/packages/web3-core-method/tests/src/methods/block/GetBlockUncleCountMethodTest.js +++ /dev/null @@ -1,67 +0,0 @@ -import * as Utils from 'web3-utils'; -import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; -import GetBlockUncleCountMethod from '../../../../src/methods/block/GetBlockUncleCountMethod'; - -// Mocks -jest.mock('Utils'); -jest.mock('formatters'); - -/** - * GetBlockUncleCountMethod test - */ -describe('GetBlockUncleCountMethodTest', () => { - let method; - - beforeEach(() => { - method = new GetBlockUncleCountMethod(Utils, formatters); - }); - - it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); - - expect(method.rpcMethod).toEqual('eth_getUncleCountByBlockNumber'); - - expect(method.parametersAmount).toEqual(1); - - expect(method.utils).toEqual(Utils); - - expect(method.formatters).toEqual(formatters); - }); - - it('should call beforeExecution with block hash as parameter and call inputBlockNumberFormatter', () => { - method.parameters = ['0x0']; - - formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); - - method.beforeExecution({}); - - expect(method.parameters[0]).toEqual('0x0'); - - expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith('0x0'); - - expect(method.rpcMethod).toEqual('eth_getUncleCountByBlockHash'); - }); - - it('should call beforeExecution with block number as parameter and call inputBlockNumberFormatter', () => { - method.parameters = [100]; - - formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); - - method.beforeExecution({}); - - expect(method.parameters[0]).toEqual('0x0'); - - expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith(100); - - expect(method.rpcMethod).toEqual('eth_getUncleCountByBlockNumber'); - }); - - it('afterExecution should map the hex string to a number', () => { - Utils.hexToNumber.mockReturnValueOnce(100); - - expect(method.afterExecution('0x0')).toEqual(100); - - expect(Utils.hexToNumber).toHaveBeenCalledWith('0x0'); - }); -}); diff --git a/packages/web3-core-method/tests/src/methods/block/GetUncleByBlockHashAndIndexMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetUncleByBlockHashAndIndexMethodTest.js new file mode 100644 index 00000000000..766b54740d1 --- /dev/null +++ b/packages/web3-core-method/tests/src/methods/block/GetUncleByBlockHashAndIndexMethodTest.js @@ -0,0 +1,19 @@ +import AbstractGetUncleMethod from '../../../../lib/methods/block/AbstractGetUncleMethod'; +import GetUncleByBlockHashAndIndexMethod from '../../../../src/methods/block/GetUncleByBlockHashAndIndexMethod'; + +/** + * GetUncleByBlockHashAndIndexMethod test + */ +describe('GetUncleByBlockHashAndIndexMethodTest', () => { + let method; + + beforeEach(() => { + method = new GetUncleByBlockHashAndIndexMethod({}, {}, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractGetUncleMethod); + + expect(method.rpcMethod).toEqual('eth_getUncleByBlockHashAndIndex'); + }); +}); diff --git a/packages/web3-core-method/tests/src/methods/block/GetUncleByBlockNumberAndIndexMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetUncleByBlockNumberAndIndexMethodTest.js new file mode 100644 index 00000000000..d8bda0b0b78 --- /dev/null +++ b/packages/web3-core-method/tests/src/methods/block/GetUncleByBlockNumberAndIndexMethodTest.js @@ -0,0 +1,19 @@ +import AbstractGetUncleMethod from '../../../../lib/methods/block/AbstractGetUncleMethod'; +import GetUncleByBlockNumberAndIndexMethod from '../../../../src/methods/block/GetUncleByBlockNumberAndIndexMethod'; + +/** + * GetUncleByBlockNumberAndIndexMethod test + */ +describe('GetUncleByBlockNumberAndIndexMethodTest', () => { + let method; + + beforeEach(() => { + method = new GetUncleByBlockNumberAndIndexMethod({}, {}, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractGetUncleMethod); + + expect(method.rpcMethod).toEqual('eth_getUncleByBlockNumberAndIndex'); + }); +}); diff --git a/packages/web3-core-method/tests/src/methods/block/GetUncleMethodTest.js b/packages/web3-core-method/tests/src/methods/block/GetUncleMethodTest.js deleted file mode 100644 index fba895bc730..00000000000 --- a/packages/web3-core-method/tests/src/methods/block/GetUncleMethodTest.js +++ /dev/null @@ -1,77 +0,0 @@ -import * as Utils from 'web3-utils'; -import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; -import GetUncleMethod from '../../../../src/methods/block/GetUncleMethod'; - -// Mocks -jest.mock('Utils'); -jest.mock('formatters'); - -/** - * GetUncleMethod test - */ -describe('GetUncleMethodTest', () => { - let method; - - beforeEach(() => { - method = new GetUncleMethod(Utils, formatters); - }); - - it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); - - expect(method.rpcMethod).toEqual('eth_getUncleByBlockNumberAndIndex'); - - expect(method.parametersAmount).toEqual(2); - - expect(method.utils).toEqual(Utils); - - expect(method.formatters).toEqual(formatters); - }); - - it('should call beforeExecution with block hash as parameter and call inputBlockNumberFormatter', () => { - method.parameters = ['0x0', 100]; - - formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); - - Utils.numberToHex.mockReturnValueOnce('0x0'); - - method.beforeExecution({}); - - expect(method.parameters[0]).toEqual('0x0'); - expect(method.parameters[1]).toEqual('0x0'); - - expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith('0x0'); - - expect(Utils.numberToHex).toHaveBeenCalledWith(100); - - expect(method.rpcMethod).toEqual('eth_getUncleByBlockHashAndIndex'); - }); - - it('should call beforeExecution with block number as parameter and call inputBlockNumberFormatter', () => { - method.parameters = [100, 100]; - - formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); - - Utils.numberToHex.mockReturnValueOnce('0x0'); - - method.beforeExecution({}); - - expect(method.parameters[0]).toEqual('0x0'); - expect(method.parameters[1]).toEqual('0x0'); - - expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith(100); - - expect(Utils.numberToHex).toHaveBeenCalledWith(100); - - expect(method.rpcMethod).toEqual('eth_getUncleByBlockNumberAndIndex'); - }); - - it('afterExecution should map the response', () => { - formatters.outputBlockFormatter.mockReturnValueOnce({block: true}); - - expect(method.afterExecution({})).toHaveProperty('block', true); - - expect(formatters.outputBlockFormatter).toHaveBeenCalledWith({}); - }); -}); diff --git a/packages/web3-core-method/tests/src/methods/network/ChainIdMethodTest.js b/packages/web3-core-method/tests/src/methods/network/ChainIdMethodTest.js index cd51ef802b6..dd2fb596199 100644 --- a/packages/web3-core-method/tests/src/methods/network/ChainIdMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/network/ChainIdMethodTest.js @@ -1,5 +1,5 @@ import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import ChainIdMethod from '../../../../src/methods/network/ChainIdMethod'; // Mocks @@ -12,11 +12,11 @@ describe('ChainIdMethodTest', () => { let method; beforeEach(() => { - method = new ChainIdMethod(Utils, null); + method = new ChainIdMethod(Utils, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_chainId'); diff --git a/packages/web3-core-method/tests/src/methods/network/GetProtocolVersionMethodTest.js b/packages/web3-core-method/tests/src/methods/network/GetProtocolVersionMethodTest.js index afafa684f6e..d4c2f3170d5 100644 --- a/packages/web3-core-method/tests/src/methods/network/GetProtocolVersionMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/network/GetProtocolVersionMethodTest.js @@ -1,4 +1,4 @@ -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetProtocolVersionMethod from '../../../../src/methods/network/GetProtocolVersionMethod'; /** @@ -8,11 +8,11 @@ describe('GetProtocolVersionMethodTest', () => { let method; beforeEach(() => { - method = new GetProtocolVersionMethod(null, null); + method = new GetProtocolVersionMethod(null, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_protocolVersion'); diff --git a/packages/web3-core-method/tests/src/methods/network/ListeningMethodTest.js b/packages/web3-core-method/tests/src/methods/network/ListeningMethodTest.js index fe82fc90970..697803b77f8 100644 --- a/packages/web3-core-method/tests/src/methods/network/ListeningMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/network/ListeningMethodTest.js @@ -1,4 +1,4 @@ -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import ListeningMethod from '../../../../src/methods/network/ListeningMethod'; /** @@ -8,11 +8,11 @@ describe('ListeningMethodTest', () => { let method; beforeEach(() => { - method = new ListeningMethod(null, null); + method = new ListeningMethod(null, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('net_listening'); diff --git a/packages/web3-core-method/tests/src/methods/network/PeerCountMethodTest.js b/packages/web3-core-method/tests/src/methods/network/PeerCountMethodTest.js index 94ef79b7cc8..17f7facd529 100644 --- a/packages/web3-core-method/tests/src/methods/network/PeerCountMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/network/PeerCountMethodTest.js @@ -1,5 +1,5 @@ import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import PeerCountMethod from '../../../../src/methods/network/PeerCountMethod'; // Mocks @@ -12,11 +12,11 @@ describe('PeerCountMethodTest', () => { let method; beforeEach(() => { - method = new PeerCountMethod(Utils, null); + method = new PeerCountMethod(Utils, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('net_peerCount'); diff --git a/packages/web3-core-method/tests/src/methods/network/VersionMethodTest.js b/packages/web3-core-method/tests/src/methods/network/VersionMethodTest.js index 4f11fe1eb4c..53d79350877 100644 --- a/packages/web3-core-method/tests/src/methods/network/VersionMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/network/VersionMethodTest.js @@ -1,5 +1,5 @@ import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import VersionMethod from '../../../../src/methods/network/VersionMethod'; // Mocks @@ -12,11 +12,11 @@ describe('VersionMethodTest', () => { let method; beforeEach(() => { - method = new VersionMethod(Utils, null); + method = new VersionMethod(Utils, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('net_version'); diff --git a/packages/web3-core-method/tests/src/methods/node/GetCoinbaseMethodTest.js b/packages/web3-core-method/tests/src/methods/node/GetCoinbaseMethodTest.js index 42b260e5a56..8649d6f5d02 100644 --- a/packages/web3-core-method/tests/src/methods/node/GetCoinbaseMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/node/GetCoinbaseMethodTest.js @@ -1,5 +1,5 @@ import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetCoinbaseMethod from '../../../../src/methods/node/GetCoinbaseMethod'; // Mocks @@ -12,11 +12,11 @@ describe('GetCoinbaseMethodTest', () => { let method; beforeEach(() => { - method = new GetCoinbaseMethod(Utils, null); + method = new GetCoinbaseMethod(Utils, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_coinbase'); diff --git a/packages/web3-core-method/tests/src/methods/node/GetGasPriceMethodTest.js b/packages/web3-core-method/tests/src/methods/node/GetGasPriceMethodTest.js index 354bba430b4..2f6a9c05641 100644 --- a/packages/web3-core-method/tests/src/methods/node/GetGasPriceMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/node/GetGasPriceMethodTest.js @@ -1,5 +1,5 @@ import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetGasPriceMethod from '../../../../src/methods/node/GetGasPriceMethod'; // Mocks @@ -12,11 +12,11 @@ describe('GetGasPriceMethodTest', () => { let method; beforeEach(() => { - method = new GetGasPriceMethod(null, formatters); + method = new GetGasPriceMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_gasPrice'); diff --git a/packages/web3-core-method/tests/src/methods/node/GetHashrateMethodTest.js b/packages/web3-core-method/tests/src/methods/node/GetHashrateMethodTest.js index 40104221424..e339dc885e1 100644 --- a/packages/web3-core-method/tests/src/methods/node/GetHashrateMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/node/GetHashrateMethodTest.js @@ -1,5 +1,5 @@ import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetHashrateMethod from '../../../../src/methods/node/GetHashrateMethod'; // Mocks @@ -12,11 +12,11 @@ describe('GetHashrateMethodTest', () => { let method; beforeEach(() => { - method = new GetHashrateMethod(Utils, null); + method = new GetHashrateMethod(Utils, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_hashrate'); diff --git a/packages/web3-core-method/tests/src/methods/node/GetNodeInfoMethodTest.js b/packages/web3-core-method/tests/src/methods/node/GetNodeInfoMethodTest.js index e2f28465d60..031a5aeb208 100644 --- a/packages/web3-core-method/tests/src/methods/node/GetNodeInfoMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/node/GetNodeInfoMethodTest.js @@ -1,4 +1,4 @@ -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetNodeInfoMethod from '../../../../src/methods/node/GetNodeInfoMethod'; /** @@ -8,11 +8,11 @@ describe('GetNodeInfoMethodTest', () => { let method; beforeEach(() => { - method = new GetNodeInfoMethod(null, null); + method = new GetNodeInfoMethod(null, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('web3_clientVersion'); diff --git a/packages/web3-core-method/tests/src/methods/node/GetWorkMethodTest.js b/packages/web3-core-method/tests/src/methods/node/GetWorkMethodTest.js index 994f4af12f3..72d2fc70f3b 100644 --- a/packages/web3-core-method/tests/src/methods/node/GetWorkMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/node/GetWorkMethodTest.js @@ -1,4 +1,4 @@ -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetWorkMethod from '../../../../src/methods/node/GetWorkMethod'; /** @@ -8,11 +8,11 @@ describe('GetWorkMethodTest', () => { let method; beforeEach(() => { - method = new GetWorkMethod(null, null); + method = new GetWorkMethod(null, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_getWork'); diff --git a/packages/web3-core-method/tests/src/methods/node/IsMiningMethodTest.js b/packages/web3-core-method/tests/src/methods/node/IsMiningMethodTest.js index 466d9f0bf7d..180d914ce22 100644 --- a/packages/web3-core-method/tests/src/methods/node/IsMiningMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/node/IsMiningMethodTest.js @@ -1,4 +1,4 @@ -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import IsMiningMethod from '../../../../src/methods/node/IsMiningMethod'; /** @@ -8,11 +8,11 @@ describe('IsMiningMethodTest', () => { let method; beforeEach(() => { - method = new IsMiningMethod(null, null); + method = new IsMiningMethod(null, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_mining'); diff --git a/packages/web3-core-method/tests/src/methods/node/IsSyncingMethodTest.js b/packages/web3-core-method/tests/src/methods/node/IsSyncingMethodTest.js index 09e204ae3e7..e63006fbdbf 100644 --- a/packages/web3-core-method/tests/src/methods/node/IsSyncingMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/node/IsSyncingMethodTest.js @@ -1,5 +1,5 @@ import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import IsSyncingMethod from '../../../../src/methods/node/IsSyncingMethod'; // Mocks @@ -12,11 +12,11 @@ describe('IsSyncingMethodTest', () => { let method; beforeEach(() => { - method = new IsSyncingMethod(null, formatters); + method = new IsSyncingMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_syncing'); diff --git a/packages/web3-core-method/tests/src/methods/node/SubmitWorkMethodTest.js b/packages/web3-core-method/tests/src/methods/node/SubmitWorkMethodTest.js index 869aba15b0a..544e311a389 100644 --- a/packages/web3-core-method/tests/src/methods/node/SubmitWorkMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/node/SubmitWorkMethodTest.js @@ -1,4 +1,4 @@ -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import SubmitWorkMethod from '../../../../src/methods/node/SubmitWorkMethod'; /** @@ -8,11 +8,11 @@ describe('SubmitWorkMethodTest', () => { let method; beforeEach(() => { - method = new SubmitWorkMethod(null, null); + method = new SubmitWorkMethod(null, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_submitWork'); diff --git a/packages/web3-core-method/tests/src/methods/personal/EcRecoverMethodTest.js b/packages/web3-core-method/tests/src/methods/personal/EcRecoverMethodTest.js index 785441c5979..f181690e772 100644 --- a/packages/web3-core-method/tests/src/methods/personal/EcRecoverMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/personal/EcRecoverMethodTest.js @@ -1,5 +1,5 @@ import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import EcRecoverMethod from '../../../../src/methods/personal/EcRecoverMethod'; // Mocks @@ -12,11 +12,11 @@ describe('EcRecoverMethodTest', () => { let method; beforeEach(() => { - method = new EcRecoverMethod(null, formatters); + method = new EcRecoverMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('personal_ecRecover'); diff --git a/packages/web3-core-method/tests/src/methods/personal/ImportRawKeyMethodTest.js b/packages/web3-core-method/tests/src/methods/personal/ImportRawKeyMethodTest.js index f26857d34f9..286dbed2996 100644 --- a/packages/web3-core-method/tests/src/methods/personal/ImportRawKeyMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/personal/ImportRawKeyMethodTest.js @@ -1,4 +1,4 @@ -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import ImportRawKeyMethod from '../../../../src/methods/personal/ImportRawKeyMethod'; /** @@ -8,11 +8,11 @@ describe('ImportRawKeyMethodTest', () => { let method; beforeEach(() => { - method = new ImportRawKeyMethod(null, null); + method = new ImportRawKeyMethod(null, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('personal_importRawKey'); diff --git a/packages/web3-core-method/tests/src/methods/personal/ListAccountsMethodTest.js b/packages/web3-core-method/tests/src/methods/personal/ListAccountsMethodTest.js index 589629007fe..5c6b0a43ac9 100644 --- a/packages/web3-core-method/tests/src/methods/personal/ListAccountsMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/personal/ListAccountsMethodTest.js @@ -1,5 +1,5 @@ import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import ListAccountsMethod from '../../../../src/methods/personal/ListAccountsMethod'; // Mocks @@ -12,11 +12,11 @@ describe('ListAccountsMethodTest', () => { let method; beforeEach(() => { - method = new ListAccountsMethod(Utils, null); + method = new ListAccountsMethod(Utils, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('personal_listAccounts'); diff --git a/packages/web3-core-method/tests/src/methods/personal/LockAccountMethodTest.js b/packages/web3-core-method/tests/src/methods/personal/LockAccountMethodTest.js index 128c533fc79..2a5c048114f 100644 --- a/packages/web3-core-method/tests/src/methods/personal/LockAccountMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/personal/LockAccountMethodTest.js @@ -1,5 +1,5 @@ import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import LockAccountMethod from '../../../../src/methods/personal/LockAccountMethod'; // Mocks @@ -12,11 +12,11 @@ describe('LockAccountMethodTest', () => { let method; beforeEach(() => { - method = new LockAccountMethod(null, formatters); + method = new LockAccountMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('personal_lockAccount'); diff --git a/packages/web3-core-method/tests/src/methods/personal/NewAccountMethodTest.js b/packages/web3-core-method/tests/src/methods/personal/NewAccountMethodTest.js index 7ef1827c15b..5babd287fe5 100644 --- a/packages/web3-core-method/tests/src/methods/personal/NewAccountMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/personal/NewAccountMethodTest.js @@ -1,5 +1,5 @@ import * as Utils from 'web3-utils'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import NewAccountMethod from '../../../../src/methods/personal/NewAccountMethod'; // Mocks @@ -12,11 +12,11 @@ describe('NewAccountMethodTest', () => { let method; beforeEach(() => { - method = new NewAccountMethod(Utils, null); + method = new NewAccountMethod(Utils, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('personal_newAccount'); diff --git a/packages/web3-core-method/tests/src/methods/personal/PersonalSendTransactionMethodTest.js b/packages/web3-core-method/tests/src/methods/personal/PersonalSendTransactionMethodTest.js index d1ac332ee77..b0395de04b6 100644 --- a/packages/web3-core-method/tests/src/methods/personal/PersonalSendTransactionMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/personal/PersonalSendTransactionMethodTest.js @@ -1,6 +1,6 @@ import {formatters} from 'web3-core-helpers'; import PersonalSendTransactionMethod from '../../../../src/methods/personal/PersonalSendTransactionMethod'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; // Mocks jest.mock('formatters'); @@ -12,11 +12,11 @@ describe('PersonalSendTransactionMethodTest', () => { let method; beforeEach(() => { - method = new PersonalSendTransactionMethod(null, formatters); + method = new PersonalSendTransactionMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('personal_sendTransaction'); diff --git a/packages/web3-core-method/tests/src/methods/personal/PersonalSignMethodTest.js b/packages/web3-core-method/tests/src/methods/personal/PersonalSignMethodTest.js index 115f6c57509..0375f597149 100644 --- a/packages/web3-core-method/tests/src/methods/personal/PersonalSignMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/personal/PersonalSignMethodTest.js @@ -1,5 +1,5 @@ import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import PersonalSignMethod from '../../../../src/methods/personal/PersonalSignMethod'; // Mocks @@ -12,11 +12,11 @@ describe('PersonalSignMethodTest', () => { let method; beforeEach(() => { - method = new PersonalSignMethod(null, formatters); + method = new PersonalSignMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('personal_sign'); diff --git a/packages/web3-core-method/tests/src/methods/personal/UnlockAccountMethodTest.js b/packages/web3-core-method/tests/src/methods/personal/UnlockAccountMethodTest.js index 15098218749..fec4bb2e68f 100644 --- a/packages/web3-core-method/tests/src/methods/personal/UnlockAccountMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/personal/UnlockAccountMethodTest.js @@ -1,6 +1,6 @@ import {formatters} from 'web3-core-helpers'; import UnlockAccountMethod from '../../../../src/methods/personal/UnlockAccountMethod'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; // Mocks jest.mock('formatters'); @@ -12,11 +12,11 @@ describe('UnlockAccountMethodTest', () => { let method; beforeEach(() => { - method = new UnlockAccountMethod(null, formatters); + method = new UnlockAccountMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('personal_unlockAccount'); diff --git a/packages/web3-core-method/tests/src/methods/shh/GenericShhMethodTest.js b/packages/web3-core-method/tests/src/methods/shh/GenericShhMethodTest.js index cc256c572f0..210b9b62311 100644 --- a/packages/web3-core-method/tests/src/methods/shh/GenericShhMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/shh/GenericShhMethodTest.js @@ -133,9 +133,7 @@ describe('GenericShhMethodsTest', () => { let method; tests.forEach((test) => { // eslint-disable-next-line new-cap - method = new test.method(null, null); - - expect(test.method.Type).toEqual('CALL'); + method = new test.method(null, null, {}); expect(method.rpcMethod).toEqual(test.rpcMethod); diff --git a/packages/web3-core-method/tests/src/methods/transaction/EthSendTransactionMethodTest.js b/packages/web3-core-method/tests/src/methods/transaction/EthSendTransactionMethodTest.js new file mode 100644 index 00000000000..994d343fab4 --- /dev/null +++ b/packages/web3-core-method/tests/src/methods/transaction/EthSendTransactionMethodTest.js @@ -0,0 +1,529 @@ +import {formatters} from 'web3-core-helpers'; +import {WebsocketProvider} from 'web3-providers'; +import {AbstractWeb3Module} from 'web3-core'; +import * as Utils from 'web3-utils'; +import TransactionSigner from '../../../__mocks__/TransactionSigner'; +import ChainIdMethod from '../../../../src/methods/network/ChainIdMethod'; +import TransactionObserver from '../../../../src/observers/TransactionObserver'; +import SendRawTransactionMethod from '../../../../src/methods/transaction/SendRawTransactionMethod'; +import GetTransactionCountMethod from '../../../../src/methods/account/GetTransactionCountMethod'; +import AbstractObservedTransactionMethod from '../../../../lib/methods/transaction/AbstractObservedTransactionMethod'; +import EthSendTransactionMethod from '../../../../src/methods/transaction/EthSendTransactionMethod'; + +// Mocks +jest.mock('formatters'); +jest.mock('Utils'); +jest.mock('WebsocketProvider'); +jest.mock('AbstractWeb3Module'); +jest.mock('../../../../src/methods/network/ChainIdMethod'); +jest.mock('../../../../src/observers/TransactionObserver'); +jest.mock('../../../../src/methods/transaction/SendRawTransactionMethod'); +jest.mock('../../../../src/methods/account/GetTransactionCountMethod'); + +/** + * EthSendTransactionMethod test + */ +describe('EthSendTransactionMethodTest', () => { + let method, + providerMock, + moduleInstanceMock, + transactionSignerMock, + sendRawTransactionMethodMock, + chainIdMethodMock, + getTransactionCountMethodMock, + transactionObserverMock; + + beforeEach(() => { + new WebsocketProvider({}); + providerMock = WebsocketProvider.mock.instances[0]; + providerMock.send = jest.fn(); + + new AbstractWeb3Module(providerMock, {}, {}, {}); + moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; + moduleInstanceMock.currentProvider = providerMock; + + transactionSignerMock = new TransactionSigner(); + transactionSignerMock.sign = jest.fn(); + + new SendRawTransactionMethod(); + sendRawTransactionMethodMock = SendRawTransactionMethod.mock.instances[0]; + + new GetTransactionCountMethod(); + getTransactionCountMethodMock = GetTransactionCountMethod.mock.instances[0]; + + new ChainIdMethod(); + chainIdMethodMock = ChainIdMethod.mock.instances[0]; + + new TransactionObserver(); + transactionObserverMock = TransactionObserver.mock.instances[0]; + + method = new EthSendTransactionMethod( + Utils, + formatters, + moduleInstanceMock, + transactionObserverMock, + chainIdMethodMock, + getTransactionCountMethodMock, + sendRawTransactionMethodMock + ); + + method.callback = jest.fn(); + method.parameters = [{}]; + }); + + it('constructor check', () => { + expect(method.sendRawTransactionMethod).toEqual(sendRawTransactionMethodMock); + + expect(method.chainIdMethod).toEqual(chainIdMethodMock); + + expect(method.getTransactionCountMethod).toEqual(getTransactionCountMethodMock); + + expect(method).toBeInstanceOf(AbstractObservedTransactionMethod); + }); + + it('calls execute with wallets defined and returns with a resolved promise', async () => { + transactionSignerMock.sign = jest.fn(() => { + return Promise.resolve({rawTransaction: '0x0'}); + }); + + moduleInstanceMock.accounts = {accountsIndex: 1, wallet: {0: {address: '0x0', privateKey: '0x0'}}}; + moduleInstanceMock.transactionSigner = transactionSignerMock; + + sendRawTransactionMethodMock.execute = jest.fn(() => { + method.promiEvent.resolve('0x0'); + }); + + const transaction = { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + const mappedTransaction = { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + const callback = jest.fn(); + method.callback = callback; + method.parameters = [transaction]; + + const response = await method.execute(); + + expect(response).toEqual('0x0'); + + expect(transactionSignerMock.sign).toHaveBeenCalledWith(mappedTransaction, '0x0'); + + expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(); + + expect(sendRawTransactionMethodMock.promiEvent).toEqual(method.promiEvent); + + expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); + + expect(sendRawTransactionMethodMock.callback).toEqual(callback); + }); + + it('calls execute with wallets defined and returns with a rejected promise', async () => { + transactionSignerMock.sign = jest.fn(() => { + return Promise.resolve({rawTransaction: '0x0'}); + }); + + moduleInstanceMock.accounts = {accountsIndex: 1, wallet: {0: {address: '0x0', privateKey: '0x0'}}}; + moduleInstanceMock.transactionSigner = transactionSignerMock; + + sendRawTransactionMethodMock.execute = jest.fn(() => { + return Promise.reject(new Error('ERROR')); + }); + + const transaction = { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + const mappedTransaction = { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + const callback = jest.fn(); + method.callback = callback; + method.parameters = [transaction]; + + await expect(method.execute()).rejects.toThrow('ERROR'); + + expect(transactionSignerMock.sign).toHaveBeenCalledWith(mappedTransaction, '0x0'); + + expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(); + + expect(sendRawTransactionMethodMock.promiEvent).toEqual(method.promiEvent); + + expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); + + expect(sendRawTransactionMethodMock.callback).toEqual(callback); + }); + + it('calls execute with a custom transaction signer defined and returns with a resolved promise', async () => { + const customSigner = {constructor: {name: 'CustomSigner'}}; + + customSigner.sign = jest.fn(() => { + return Promise.resolve({rawTransaction: '0x0'}); + }); + + moduleInstanceMock.currentProvider = providerMock; + moduleInstanceMock.accounts = {wallet: {}}; + moduleInstanceMock.transactionSigner = customSigner; + + const transaction = { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + sendRawTransactionMethodMock.execute = jest.fn(() => { + method.promiEvent.resolve(true); + }); + + const callback = jest.fn(); + method.callback = callback; + method.parameters = [transaction]; + + const response = await method.execute(); + + expect(response).toEqual(true); + + const mappedTransaction = { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + expect(customSigner.sign).toHaveBeenCalledWith(mappedTransaction, null); + + expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(); + + expect(sendRawTransactionMethodMock.callback).toEqual(callback); + + expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); + }); + + it('calls execute with custom transaction signer defined and returns with a rejected promise', async () => { + const customSigner = {constructor: {name: 'CustomSigner'}}; + + customSigner.sign = jest.fn(() => { + return Promise.resolve({rawTransaction: '0x0'}); + }); + + moduleInstanceMock.accounts = {accountsIndex: 1, wallet: {0: {address: '0x0', privateKey: '0x0'}}}; + moduleInstanceMock.transactionSigner = customSigner; + + sendRawTransactionMethodMock.execute = jest.fn(() => { + return Promise.reject(new Error('ERROR')); + }); + + const transaction = { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + const mappedTransaction = { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + const callback = jest.fn(); + method.callback = callback; + method.parameters = [transaction]; + + await expect(method.execute()).rejects.toThrow('ERROR'); + + expect(customSigner.sign).toHaveBeenCalledWith(mappedTransaction, null); + + expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(); + + expect(sendRawTransactionMethodMock.promiEvent).toEqual(method.promiEvent); + + expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); + + expect(sendRawTransactionMethodMock.callback).toEqual(callback); + }); + + it('calls execute signs locally but doesnt have chainId defined and returns with a resolved promise', async () => { + transactionSignerMock.sign = jest.fn(() => { + return Promise.resolve({rawTransaction: '0x0'}); + }); + + moduleInstanceMock.accounts = {accountsIndex: 1, wallet: {0: {address: '0x0', privateKey: '0x0'}}}; + moduleInstanceMock.transactionSigner = transactionSignerMock; + + sendRawTransactionMethodMock.execute = jest.fn(() => { + method.promiEvent.resolve('0x0'); + }); + + chainIdMethodMock.execute.mockReturnValueOnce(Promise.resolve(1)); + + const transaction = { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 0 + }; + + const callback = jest.fn(); + method.callback = callback; + method.parameters = [transaction]; + + const response = await method.execute(); + + expect(response).toEqual('0x0'); + + const mappedTransaction = { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + expect(transactionSignerMock.sign).toHaveBeenCalledWith(mappedTransaction, '0x0'); + + expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(); + + expect(sendRawTransactionMethodMock.callback).toEqual(callback); + + expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); + + expect(chainIdMethodMock.execute).toHaveBeenCalled(); + }); + + it('calls execute signs locally but doesnt have an nonce defined and returns with a resolved promise', async () => { + transactionSignerMock.sign = jest.fn(() => { + return Promise.resolve({rawTransaction: '0x0'}); + }); + + moduleInstanceMock.accounts = {accountsIndex: 1, wallet: {0: {address: '0x0', privateKey: '0x0'}}}; + moduleInstanceMock.transactionSigner = transactionSignerMock; + + sendRawTransactionMethodMock.execute = jest.fn(() => { + method.promiEvent.resolve('0x0'); + }); + + getTransactionCountMethodMock.execute.mockReturnValueOnce(Promise.resolve(1)); + + const transaction = { + from: 0, + gas: 1, + gasPrice: 1, + chainId: 1 + }; + + const callback = jest.fn(); + method.callback = callback; + method.parameters = [transaction]; + + const response = await method.execute(); + + expect(response).toEqual('0x0'); + + const mappedTransaction = { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + expect(transactionSignerMock.sign).toHaveBeenCalledWith(mappedTransaction, '0x0'); + + expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(); + + expect(sendRawTransactionMethodMock.callback).toEqual(callback); + + expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); + + expect(getTransactionCountMethodMock.parameters).toEqual([method.parameters[0].from]); + + expect(getTransactionCountMethodMock.execute).toHaveBeenCalledWith(); + }); + + it('calls execute with no gas defined and uses the defaultGas and returns with a resolved promise', async () => { + transactionSignerMock.sign = jest.fn(() => { + return Promise.resolve({rawTransaction: '0x0'}); + }); + + moduleInstanceMock.accounts = {accountsIndex: 1, wallet: {0: {address: '0x0', privateKey: '0x0'}}}; + moduleInstanceMock.transactionSigner = transactionSignerMock; + moduleInstanceMock.defaultGas = 10; + + sendRawTransactionMethodMock.execute = jest.fn(() => { + method.promiEvent.resolve('0x0'); + }); + + const transaction = { + from: 0, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + const callback = jest.fn(); + method.callback = callback; + method.parameters = [transaction]; + + const response = await method.execute(); + + expect(response).toEqual('0x0'); + + const mappedTransaction = { + from: 0, + gas: 10, + gasPrice: 1, + nonce: 1, + chainId: 1 + }; + + expect(transactionSignerMock.sign).toHaveBeenCalledWith(mappedTransaction, '0x0'); + + expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(); + + expect(sendRawTransactionMethodMock.callback).toEqual(callback); + + expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); + }); + + it('calls execute with no gasPrice defined and uses the defaultGasPrice and returns with a resolved promise', async () => { + transactionSignerMock.sign = jest.fn(() => { + return Promise.resolve({rawTransaction: '0x0'}); + }); + + moduleInstanceMock.accounts = {accountsIndex: 1, wallet: {0: {address: '0x0', privateKey: '0x0'}}}; + moduleInstanceMock.transactionSigner = transactionSignerMock; + moduleInstanceMock.defaultGasPrice = 10; + + sendRawTransactionMethodMock.execute = jest.fn(() => { + method.promiEvent.resolve('0x0'); + }); + + const transaction = { + from: 0, + gas: 1, + nonce: 1, + chainId: 1 + }; + + const callback = jest.fn(); + method.callback = callback; + method.parameters = [transaction]; + + const response = await method.execute(); + + expect(response).toEqual('0x0'); + + const mappedTransaction = { + from: 0, + gas: 1, + gasPrice: 10, + nonce: 1, + chainId: 1 + }; + + expect(transactionSignerMock.sign).toHaveBeenCalledWith(mappedTransaction, '0x0'); + + expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(); + + expect(sendRawTransactionMethodMock.callback).toEqual(callback); + + expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); + }); + + it('calls execute and the gasPrice will be defined with "eth_gasPrice" and returns with a resolved promise', async () => { + providerMock.send.mockReturnValueOnce(Promise.resolve(10)); + + transactionSignerMock.sign = jest.fn(() => { + return Promise.resolve({rawTransaction: '0x0'}); + }); + + moduleInstanceMock.accounts = {accountsIndex: 1, wallet: {0: {address: '0x0', privateKey: '0x0'}}}; + moduleInstanceMock.transactionSigner = transactionSignerMock; + + sendRawTransactionMethodMock.execute = jest.fn(() => { + method.promiEvent.resolve('0x0'); + }); + + const transaction = { + from: 0, + gas: 1, + nonce: 1, + chainId: 1 + }; + + const callback = jest.fn(); + method.callback = callback; + method.parameters = [transaction]; + + const response = await method.execute(); + + expect(response).toEqual('0x0'); + + const mappedTransaction = { + from: 0, + gas: 1, + gasPrice: 10, + nonce: 1, + chainId: 1 + }; + + expect(transactionSignerMock.sign).toHaveBeenCalledWith(mappedTransaction, '0x0'); + + expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(); + + expect(sendRawTransactionMethodMock.callback).toEqual(callback); + + expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); + + expect(providerMock.send).toHaveBeenNthCalledWith(1, 'eth_gasPrice', []); + }); + + it('calls execute and signs on the node', () => { + moduleInstanceMock.transactionSigner = transactionSignerMock; + + const parameters = [ + { + from: 0, + gas: 1, + gasPrice: 1, + nonce: 1, + chainId: 1 + } + ]; + + providerMock.send.mockReturnValueOnce(Promise.resolve('0x0')); + + method.parameters = parameters; + + method.execute(); + + expect(providerMock.send).toHaveBeenCalledWith('eth_sendTransaction', parameters); + }); +}); diff --git a/packages/web3-core-method/tests/src/methods/transaction/GetTransactionByBlockHashAndIndexMethodTest.js b/packages/web3-core-method/tests/src/methods/transaction/GetTransactionByBlockHashAndIndexMethodTest.js new file mode 100644 index 00000000000..0199f334bd6 --- /dev/null +++ b/packages/web3-core-method/tests/src/methods/transaction/GetTransactionByBlockHashAndIndexMethodTest.js @@ -0,0 +1,19 @@ +import AbstractGetTransactionFromBlockMethod from '../../../../lib/methods/transaction/AbstractGetTransactionFromBlockMethod'; +import GetTransactionByBlockHashAndIndexMethod from '../../../../src/methods/transaction/GetTransactionByBlockHashAndIndexMethod'; + +/** + * GetTransactionByBlockHashAndIndexMethod test + */ +describe('GetTransactionByBlockHashAndIndexMethodTest', () => { + let method; + + beforeEach(() => { + method = new GetTransactionByBlockHashAndIndexMethod({}, {}, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractGetTransactionFromBlockMethod); + + expect(method.rpcMethod).toEqual('eth_getTransactionByBlockHashAndIndex'); + }); +}); diff --git a/packages/web3-core-method/tests/src/methods/transaction/GetTransactionByBlockNumberAndIndexMethodTest.js b/packages/web3-core-method/tests/src/methods/transaction/GetTransactionByBlockNumberAndIndexMethodTest.js new file mode 100644 index 00000000000..9b0661d97b5 --- /dev/null +++ b/packages/web3-core-method/tests/src/methods/transaction/GetTransactionByBlockNumberAndIndexMethodTest.js @@ -0,0 +1,19 @@ +import AbstractGetTransactionFromBlockMethod from '../../../../lib/methods/transaction/AbstractGetTransactionFromBlockMethod'; +import GetTransactionByBlockNumberAndIndexMethod from '../../../../src/methods/transaction/GetTransactionByBlockNumberAndIndexMethod'; + +/** + * GetTransactionByBlockNumberAndIndexMethod test + */ +describe('GetTransactionByBlockNumberAndIndexMethodTest', () => { + let method; + + beforeEach(() => { + method = new GetTransactionByBlockNumberAndIndexMethod({}, {}, {}); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(AbstractGetTransactionFromBlockMethod); + + expect(method.rpcMethod).toEqual('eth_getTransactionByBlockNumberAndIndex'); + }); +}); diff --git a/packages/web3-core-method/tests/src/methods/transaction/GetTransactionFromBlockMethodTest.js b/packages/web3-core-method/tests/src/methods/transaction/GetTransactionFromBlockMethodTest.js deleted file mode 100644 index 07338a97517..00000000000 --- a/packages/web3-core-method/tests/src/methods/transaction/GetTransactionFromBlockMethodTest.js +++ /dev/null @@ -1,87 +0,0 @@ -import {formatters} from 'web3-core-helpers'; -import * as Utils from 'web3-utils'; -import GetTransactionFromBlockMethod from '../../../../src/methods/transaction/GetTransactionFromBlockMethod'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; - -// Mocks -jest.mock('formatters'); -jest.mock('Utils'); - -/** - * GetTransactionFromBlockMethod test - */ -describe('GetTransactionFromBlockMethodTest', () => { - let method; - - beforeEach(() => { - method = new GetTransactionFromBlockMethod(Utils, formatters); - }); - - it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); - - expect(method.rpcMethod).toEqual('eth_getTransactionByBlockNumberAndIndex'); - - expect(method.parametersAmount).toEqual(2); - - expect(method.utils).toEqual(Utils); - - expect(method.formatters).toEqual(formatters); - }); - - it( - 'should call beforeExecution with block hash as parameter ' + - 'and should call formatters.inputBlockNumberFormatter and utils.numberToHex', - () => { - method.parameters = ['0x0', 100]; - - formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); - - Utils.numberToHex.mockReturnValueOnce('0x0'); - - method.beforeExecution({}); - - expect(method.parameters[0]).toEqual('0x0'); - - expect(method.parameters[1]).toEqual('0x0'); - - expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith('0x0'); - - expect(Utils.numberToHex).toHaveBeenCalledWith(100); - - expect(method.rpcMethod).toEqual('eth_getTransactionByBlockHashAndIndex'); - } - ); - - it( - 'should call beforeExecution with block number as parameter ' + - 'and should call formatters.inputBlockNumberFormatter and utils.numberToHex', - () => { - method.parameters = [100, 100]; - - formatters.inputBlockNumberFormatter.mockReturnValueOnce('0x0'); - - Utils.numberToHex.mockReturnValueOnce('0x0'); - - method.beforeExecution({}); - - expect(method.parameters[0]).toEqual('0x0'); - - expect(method.parameters[1]).toEqual('0x0'); - - expect(formatters.inputBlockNumberFormatter).toHaveBeenCalledWith(100); - - expect(Utils.numberToHex).toHaveBeenCalledWith(100); - - expect(method.rpcMethod).toEqual('eth_getTransactionByBlockNumberAndIndex'); - } - ); - - it('afterExecution should map the response', () => { - formatters.outputTransactionFormatter.mockReturnValueOnce({empty: false}); - - expect(method.afterExecution({})).toHaveProperty('empty', false); - - expect(formatters.outputTransactionFormatter).toHaveBeenCalledWith({}); - }); -}); diff --git a/packages/web3-core-method/tests/src/methods/transaction/GetTransactionMethodTest.js b/packages/web3-core-method/tests/src/methods/transaction/GetTransactionMethodTest.js index e75ecebf8d1..618fb858b3d 100644 --- a/packages/web3-core-method/tests/src/methods/transaction/GetTransactionMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/transaction/GetTransactionMethodTest.js @@ -1,6 +1,6 @@ import {formatters} from 'web3-core-helpers'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetTransactionMethod from '../../../../src/methods/transaction/GetTransactionMethod'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; // Mocks jest.mock('formatters'); @@ -12,11 +12,11 @@ describe('GetTransactionMethodTest', () => { let method; beforeEach(() => { - method = new GetTransactionMethod(null, formatters); + method = new GetTransactionMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_getTransactionByHash'); diff --git a/packages/web3-core-method/tests/src/methods/transaction/GetTransactionReceiptMethodTest.js b/packages/web3-core-method/tests/src/methods/transaction/GetTransactionReceiptMethodTest.js index 770c361f60d..1cd275cc15c 100644 --- a/packages/web3-core-method/tests/src/methods/transaction/GetTransactionReceiptMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/transaction/GetTransactionReceiptMethodTest.js @@ -1,6 +1,6 @@ import {formatters} from 'web3-core-helpers'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import GetTransactionReceiptMethod from '../../../../src/methods/transaction/GetTransactionReceiptMethod'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; // Mocks jest.mock('formatters'); @@ -12,11 +12,11 @@ describe('GetTransactionReceiptMethodTest', () => { let method; beforeEach(() => { - method = new GetTransactionReceiptMethod(null, formatters); + method = new GetTransactionReceiptMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_getTransactionReceipt'); diff --git a/packages/web3-core-method/tests/src/methods/transaction/SendRawTransactionMethodTest.js b/packages/web3-core-method/tests/src/methods/transaction/SendRawTransactionMethodTest.js index 67c5b40d06e..a5b783c92aa 100644 --- a/packages/web3-core-method/tests/src/methods/transaction/SendRawTransactionMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/transaction/SendRawTransactionMethodTest.js @@ -1,4 +1,4 @@ -import AbstractSendMethod from '../../../../lib/methods/AbstractSendMethod'; +import AbstractObservedTransactionMethod from '../../../../lib/methods/transaction/AbstractObservedTransactionMethod'; import SendRawTransactionMethod from '../../../../src/methods/transaction/SendRawTransactionMethod'; /** @@ -8,20 +8,12 @@ describe('SendRawTransactionMethodTest', () => { let method; beforeEach(() => { - method = new SendRawTransactionMethod(null, null, null); + method = new SendRawTransactionMethod(null, null, null, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractSendMethod); + expect(method).toBeInstanceOf(AbstractObservedTransactionMethod); expect(method.rpcMethod).toEqual('eth_sendRawTransaction'); - - expect(method.parametersAmount).toEqual(1); - - expect(method.utils).toEqual(null); - - expect(method.formatters).toEqual(null); - - expect(method.transactionConfirmationWorkflow).toEqual(null); }); }); diff --git a/packages/web3-core-method/tests/src/methods/transaction/SendTransactionMethodTest.js b/packages/web3-core-method/tests/src/methods/transaction/SendTransactionMethodTest.js index d013b1296c4..0df0bddcd75 100644 --- a/packages/web3-core-method/tests/src/methods/transaction/SendTransactionMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/transaction/SendTransactionMethodTest.js @@ -1,480 +1,35 @@ -import {formatters} from 'web3-core-helpers'; -import {PromiEvent} from 'web3-core-promievent'; -import {WebsocketProvider} from 'web3-providers'; -import {AbstractWeb3Module} from 'web3-core'; -import * as Utils from 'web3-utils'; -import TransactionSigner from '../../../__mocks__/TransactionSigner'; -import TransactionConfirmationWorkflow from '../../../../src/workflows/TransactionConfirmationWorkflow'; -import AbstractSendMethod from '../../../../lib/methods/AbstractSendMethod'; -import SendRawTransactionMethod from '../../../../src/methods/transaction/SendRawTransactionMethod'; -import ChainIdMethod from '../../../../src/methods/network/ChainIdMethod'; -import GetTransactionCountMethod from '../../../../src/methods/account/GetTransactionCountMethod'; +import AbstractObservedTransactionMethod from '../../../../lib/methods/transaction/AbstractObservedTransactionMethod'; import SendTransactionMethod from '../../../../src/methods/transaction/SendTransactionMethod'; +import {formatters} from 'web3-core-helpers'; // Mocks jest.mock('formatters'); -jest.mock('Utils'); -jest.mock('WebsocketProvider'); -jest.mock('AbstractWeb3Module'); -jest.mock('../../../../src/workflows/TransactionConfirmationWorkflow'); -jest.mock('../../../../src/methods/transaction/SendRawTransactionMethod'); -jest.mock('../../../../src/methods/network/ChainIdMethod'); -jest.mock('../../../../src/methods/account/GetTransactionCountMethod'); /** - * SendTransactionMethod test + * SendRawTransactionMethod test */ -describe('SendTransactionMethodTest', () => { - let method, - providerMock, - moduleInstanceMock, - promiEvent, - transactionConfirmationWorkflowMock, - transactionSignerMock, - sendRawTransactionMethodMock, - chainIdMethodMock, - getTransactionCountMethodMock; +describe('SendRawTransactionMethodTest', () => { + let method; beforeEach(() => { - promiEvent = new PromiEvent(); - - new WebsocketProvider({}); - providerMock = WebsocketProvider.mock.instances[0]; - providerMock.send = jest.fn(); - - new AbstractWeb3Module(providerMock, {}, {}, {}); - moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; - moduleInstanceMock.currentProvider = providerMock; - - transactionSignerMock = new TransactionSigner(); - transactionSignerMock.sign = jest.fn(); - - new TransactionConfirmationWorkflow({}, {}, {}); - transactionConfirmationWorkflowMock = TransactionConfirmationWorkflow.mock.instances[0]; - - new SendRawTransactionMethod(); - sendRawTransactionMethodMock = SendRawTransactionMethod.mock.instances[0]; - - new GetTransactionCountMethod(); - getTransactionCountMethodMock = GetTransactionCountMethod.mock.instances[0]; - - new ChainIdMethod(); - chainIdMethodMock = ChainIdMethod.mock.instances[0]; - - method = new SendTransactionMethod( - Utils, - formatters, - transactionConfirmationWorkflowMock, - sendRawTransactionMethodMock, - chainIdMethodMock, - getTransactionCountMethodMock - ); - - method.callback = jest.fn(); - method.parameters = [{}]; + method = new SendTransactionMethod(null, formatters, null, {}); }); it('constructor check', () => { - expect(method.rpcMethod).toEqual('eth_sendTransaction'); - - expect(method.parametersAmount).toEqual(1); - - expect(method.sendRawTransactionMethod).toEqual(sendRawTransactionMethodMock); - - expect(method.chainIdMethod).toEqual(chainIdMethodMock); - - expect(method.getTransactionCountMethod).toEqual(getTransactionCountMethodMock); - - expect(method).toBeInstanceOf(AbstractSendMethod); - }); - - it('calls execute with wallets defined and returns with a resolved promise', async () => { - transactionSignerMock.sign = jest.fn(() => { - return Promise.resolve({rawTransaction: '0x0'}); - }); - - moduleInstanceMock.accounts = {accountsIndex: 1, wallet: {0: {address: '0x0', privateKey: '0x0'}}}; - moduleInstanceMock.transactionSigner = transactionSignerMock; - - sendRawTransactionMethodMock.execute = jest.fn((moduleInstance, promiEvent) => { - promiEvent.resolve('0x0'); - }); - - const transaction = { - from: 0, - gas: 1, - gasPrice: 1, - nonce: 1, - chainId: 1 - }; - - const mappedTransaction = { - from: 0, - gas: 1, - gasPrice: 1, - nonce: 1, - chainId: 1 - }; - - sendRawTransactionMethodMock.execute.mockReturnValueOnce(promiEvent.resolve(true)); - - const callback = jest.fn(); - method.callback = callback; - method.parameters = [transaction]; - - const response = await method.execute(moduleInstanceMock, promiEvent); - - expect(response).toEqual(true); - - expect(transactionSignerMock.sign).toHaveBeenCalledWith(mappedTransaction, '0x0'); - - expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(moduleInstanceMock, promiEvent); - - expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); - - expect(sendRawTransactionMethodMock.callback).toEqual(callback); - }); - - it('calls execute with wallets defined and returns with a rejected promise', async () => { - const error = new Error('ERROR'); - - moduleInstanceMock.currentProvider = providerMock; - moduleInstanceMock.accounts = {accountsIndex: 1, wallet: {0: {address: '0x0', privateKey: '0x0'}}}; - moduleInstanceMock.transactionSigner = transactionSignerMock; - chainIdMethodMock.execute = jest.fn(() => { - throw error; - }); - - const transaction = { - from: 0, - gas: 1, - gasPrice: 1, - nonce: 1, - chainId: 0 - }; - - method.callback = jest.fn(); - method.parameters = [transaction]; - - const errorCallback = jest.fn(); - promiEvent.on('error', (e) => { - expect(e).toEqual(error); - - errorCallback(); - }); - - await expect(method.execute(moduleInstanceMock, promiEvent)).rejects.toThrow('ERROR'); - - expect(chainIdMethodMock.execute).toHaveBeenCalled(); - }); - - it('calls execute with a custom transaction signer defined and returns with a resolved promise', async () => { - const customSigner = {constructor: {name: 'CustomSigner'}}; - - customSigner.sign = jest.fn(() => { - return Promise.resolve({rawTransaction: '0x0'}); - }); - - providerMock.send = jest.fn(() => { - return Promise.resolve('0x0'); - }); - - moduleInstanceMock.currentProvider = providerMock; - moduleInstanceMock.accounts = {wallet: {}}; - moduleInstanceMock.transactionSigner = customSigner; - - const transaction = { - from: 0, - gas: 1, - gasPrice: 1, - nonce: 1, - chainId: 1 - }; - - sendRawTransactionMethodMock.execute.mockReturnValueOnce(promiEvent.resolve(true)); - - const callback = jest.fn(); - method.callback = callback; - method.parameters = [transaction]; - - const response = await method.execute(moduleInstanceMock, promiEvent); - - expect(response).toEqual(true); - - const mappedTransaction = { - from: 0, - gas: 1, - gasPrice: 1, - nonce: 1, - chainId: 1 - }; - - expect(customSigner.sign).toHaveBeenCalledWith(mappedTransaction, null); - - expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(moduleInstanceMock, promiEvent); - - expect(sendRawTransactionMethodMock.callback).toEqual(callback); - - expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); - }); - - it('calls execute signs locally but doesnt have chainId defined and returns with a resolved promise', async () => { - const customSigner = {constructor: {name: 'CustomSigner'}}; - customSigner.sign = jest.fn(() => { - return Promise.resolve({rawTransaction: '0x0'}); - }); - - chainIdMethodMock.execute = jest.fn(() => { - return Promise.resolve(1); - }); - - moduleInstanceMock.currentProvider = providerMock; - moduleInstanceMock.accounts = {accountsIndex: 1, wallet: {0: {address: '0x0', privateKey: '0x0'}}}; - moduleInstanceMock.transactionSigner = customSigner; - - sendRawTransactionMethodMock.execute = jest.fn((moduleInstance, promiEvent) => { - promiEvent.resolve('0x0'); - }); - - const transaction = { - from: 0, - gas: 1, - gasPrice: 1, - nonce: 1, - chainId: 0 - }; - - sendRawTransactionMethodMock.execute.mockReturnValueOnce(promiEvent.resolve(true)); + expect(method).toBeInstanceOf(AbstractObservedTransactionMethod); - const callback = jest.fn(); - method.callback = callback; - method.parameters = [transaction]; - - const response = await method.execute(moduleInstanceMock, promiEvent); - - expect(response).toEqual(true); - - const mappedTransaction = { - from: 0, - gas: 1, - gasPrice: 1, - nonce: 1, - chainId: 1 - }; - - expect(customSigner.sign).toHaveBeenCalledWith(mappedTransaction, null); - - expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(moduleInstanceMock, promiEvent); - - expect(sendRawTransactionMethodMock.callback).toEqual(callback); - - expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); - - expect(chainIdMethodMock.execute).toHaveBeenCalled(); - }); - - it('calls execute signs locally but doesnt have an nonce defined and returns with a resolved promise', async () => { - const customSigner = {constructor: {name: 'CustomSigner'}}; - customSigner.sign = jest.fn(() => { - return Promise.resolve({rawTransaction: '0x0'}); - }); - - getTransactionCountMethodMock.execute = jest.fn(() => { - return Promise.resolve(1); - }); - - moduleInstanceMock.currentProvider = providerMock; - moduleInstanceMock.accounts = {wallet: {}}; - moduleInstanceMock.transactionSigner = customSigner; - - const transaction = { - from: 0, - gas: 1, - gasPrice: 1, - nonce: undefined, - chainId: 1 - }; - - sendRawTransactionMethodMock.execute.mockReturnValueOnce(promiEvent.resolve(true)); - - const callback = jest.fn(); - method.callback = callback; - method.parameters = [transaction]; - - const response = await method.execute(moduleInstanceMock, promiEvent); - - expect(response).toEqual(true); - - const mappedTransaction = { - from: 0, - gas: 1, - gasPrice: 1, - nonce: 1, - chainId: 1 - }; - - expect(customSigner.sign).toHaveBeenCalledWith(mappedTransaction, null); - - expect(sendRawTransactionMethodMock.execute).toHaveBeenCalledWith(moduleInstanceMock, promiEvent); - - expect(sendRawTransactionMethodMock.callback).toEqual(callback); - - expect(sendRawTransactionMethodMock.parameters).toEqual(['0x0']); - - expect(getTransactionCountMethodMock.parameters).toEqual([method.parameters[0].from]); - - expect(getTransactionCountMethodMock.execute).toHaveBeenCalledWith(moduleInstanceMock); - }); - - it('calls execute with no gas defined and uses the defaultGas and returns with a resolved promise', (done) => { - providerMock.send.mockReturnValueOnce(Promise.resolve('0x0')); - - moduleInstanceMock.currentProvider = providerMock; - moduleInstanceMock.transactionSigner = {constructor: {name: 'TransactionSigner'}}; - moduleInstanceMock.defaultGas = 10; - - const transaction = { - from: 0, - gas: 0, - gasPrice: 1, - nonce: 1, - chainId: 1 - }; - - const mappedTransaction = { - from: 0, - gas: 10, - gasPrice: 1, - nonce: 1, - chainId: 1 - }; - - formatters.inputTransactionFormatter.mockReturnValueOnce(transaction); - - method.callback = jest.fn(); - method.parameters = [transaction]; - - promiEvent.on('transactionHash', (hash) => { - expect(hash).toEqual('0x0'); - - expect(providerMock.send).toHaveBeenCalledWith('eth_sendTransaction', [transaction]); - - expect(transactionConfirmationWorkflowMock.execute).toHaveBeenCalledWith( - method, - moduleInstanceMock, - '0x0', - promiEvent - ); - - expect(method.callback).toHaveBeenCalledWith(false, '0x0'); - - expect(formatters.inputTransactionFormatter).toHaveBeenCalledWith(mappedTransaction, moduleInstanceMock); - - done(); - }); - - method.execute(moduleInstanceMock, promiEvent); - }); - - it('calls execute with no gasPrice defined and uses the defaultGasPrice and returns with a resolved promise', (done) => { - providerMock.send.mockReturnValueOnce(Promise.resolve('0x0')); - - moduleInstanceMock.currentProvider = providerMock; - moduleInstanceMock.transactionSigner = {constructor: {name: 'TransactionSigner'}}; - moduleInstanceMock.defaultGasPrice = 10; - - const transaction = { - from: 0, - gas: 1, - gasPrice: 0, - nonce: 1, - chainId: 1 - }; - - const mappedTransaction = { - from: 0, - gas: 1, - gasPrice: 10, - nonce: 1, - chainId: 1 - }; - - formatters.inputTransactionFormatter.mockReturnValueOnce(transaction); - - method.callback = jest.fn(); - method.parameters = [transaction]; - - promiEvent.on('transactionHash', (hash) => { - expect(hash).toEqual('0x0'); - - expect(providerMock.send).toHaveBeenCalledWith('eth_sendTransaction', [transaction]); - - expect(transactionConfirmationWorkflowMock.execute).toHaveBeenCalledWith( - method, - moduleInstanceMock, - '0x0', - promiEvent - ); - - expect(method.callback).toHaveBeenCalledWith(false, '0x0'); - - expect(formatters.inputTransactionFormatter).toHaveBeenCalledWith(mappedTransaction, moduleInstanceMock); - - done(); - }); - - method.execute(moduleInstanceMock, promiEvent); + expect(method.rpcMethod).toEqual('eth_sendTransaction'); }); - it('calls execute and the gasPrice will be defined with "eth_gasPrice" and returns with a resolved promise', (done) => { - providerMock.send.mockReturnValueOnce(Promise.resolve(10)); - providerMock.send.mockReturnValueOnce(Promise.resolve('0x0')); - - moduleInstanceMock.currentProvider = providerMock; - moduleInstanceMock.transactionSigner = {constructor: {name: 'TransactionSigner'}}; - moduleInstanceMock.defaultGasPrice = false; - - const transaction = { - from: 0, - gas: 1, - gasPrice: 0, - nonce: 1, - chainId: 1 - }; - - const mappedTransaction = { - from: 0, - gas: 1, - gasPrice: 10, - nonce: 1, - chainId: 1 - }; - - formatters.inputTransactionFormatter.mockReturnValueOnce(transaction); - - method.callback = jest.fn(); - method.parameters = [transaction]; - - promiEvent.on('transactionHash', (hash) => { - expect(hash).toEqual('0x0'); - - expect(providerMock.send).toHaveBeenNthCalledWith(1, 'eth_gasPrice', []); - expect(providerMock.send).toHaveBeenNthCalledWith(2, 'eth_sendTransaction', [transaction]); - - expect(transactionConfirmationWorkflowMock.execute).toHaveBeenCalledWith( - method, - moduleInstanceMock, - '0x0', - promiEvent - ); + it('beforeExecution should call inputAddressFormatter and inputDefaultBlockNumberFormatter', () => { + method.parameters = ['tx']; - expect(method.callback).toHaveBeenCalledWith(false, '0x0'); + formatters.inputTransactionFormatter.mockReturnValueOnce('0x0'); - expect(formatters.inputTransactionFormatter).toHaveBeenCalledWith(mappedTransaction, moduleInstanceMock); + method.beforeExecution({}); - done(); - }); + expect(method.parameters[0]).toEqual('0x0'); - method.execute(moduleInstanceMock, promiEvent); + expect(formatters.inputTransactionFormatter).toHaveBeenCalledWith('tx', {}); }); }); diff --git a/packages/web3-core-method/tests/src/methods/transaction/SignTransactionMethodTest.js b/packages/web3-core-method/tests/src/methods/transaction/SignTransactionMethodTest.js index 65a1698769f..1086052a366 100644 --- a/packages/web3-core-method/tests/src/methods/transaction/SignTransactionMethodTest.js +++ b/packages/web3-core-method/tests/src/methods/transaction/SignTransactionMethodTest.js @@ -1,5 +1,5 @@ import {formatters} from 'web3-core-helpers'; -import AbstractCallMethod from '../../../../lib/methods/AbstractCallMethod'; +import AbstractMethod from '../../../../lib/methods/AbstractMethod'; import SignTransactionMethod from '../../../../src/methods/transaction/SignTransactionMethod'; // Mocks @@ -12,11 +12,11 @@ describe('SignTransactionMethodTest', () => { let method; beforeEach(() => { - method = new SignTransactionMethod(null, formatters); + method = new SignTransactionMethod(null, formatters, {}); }); it('constructor check', () => { - expect(method).toBeInstanceOf(AbstractCallMethod); + expect(method).toBeInstanceOf(AbstractMethod); expect(method.rpcMethod).toEqual('eth_signTransaction'); diff --git a/packages/web3-core-method/tests/src/observers/TransactionObserverTest.js b/packages/web3-core-method/tests/src/observers/TransactionObserverTest.js new file mode 100644 index 00000000000..b7ed57c511e --- /dev/null +++ b/packages/web3-core-method/tests/src/observers/TransactionObserverTest.js @@ -0,0 +1,281 @@ +import {NewHeadsSubscription} from 'web3-core-subscriptions'; +import GetTransactionReceiptMethod from '../../../src/methods/transaction/GetTransactionReceiptMethod'; +import GetBlockByNumberMethod from '../../../src/methods/block/GetBlockByNumberMethod'; +import TransactionObserver from '../../../src/observers/TransactionObserver'; + +// Mocks +jest.mock('NewHeadsSubscription'); +jest.mock('../../../src/methods/transaction/GetTransactionReceiptMethod'); +jest.mock('../../../src/methods/block/GetBlockByNumberMethod'); + +/** + * TransactionObserver test + */ +describe('TransactionObserverTest', () => { + let transactionObserver, + providerMock, + getTransactionReceiptMethodMock, + getBlockByNumberMethodMock, + newHeadsSubscriptionMock; + + beforeEach(() => { + providerMock = {constructor: {name: 'socket'}}; + + new GetTransactionReceiptMethod(); + getTransactionReceiptMethodMock = GetTransactionReceiptMethod.mock.instances[0]; + + new GetBlockByNumberMethod(); + getBlockByNumberMethodMock = GetBlockByNumberMethod.mock.instances[0]; + + new NewHeadsSubscription(); + newHeadsSubscriptionMock = NewHeadsSubscription.mock.instances[0]; + + transactionObserver = new TransactionObserver( + providerMock, + 2, + 1, + getTransactionReceiptMethodMock, + getBlockByNumberMethodMock, + newHeadsSubscriptionMock + ); + }); + + it('constructor check', () => { + expect(transactionObserver.provider).toEqual(providerMock); + + expect(transactionObserver.timeout).toEqual(2); + + expect(transactionObserver.blockConfirmations).toEqual(1); + + expect(transactionObserver.getTransactionReceiptMethod).toEqual(getTransactionReceiptMethodMock); + + expect(transactionObserver.getBlockByNumberMethod).toEqual(getBlockByNumberMethodMock); + + expect(transactionObserver.newHeadsSubscription).toEqual(newHeadsSubscriptionMock); + + expect(transactionObserver.blockNumbers).toEqual([]); + + expect(transactionObserver.lastBlock).toEqual(false); + + expect(transactionObserver.confirmations).toEqual(0); + + expect(transactionObserver.confirmationChecks).toEqual(0); + + expect(transactionObserver.interval).toEqual(false); + }); + + it('calls observe with a socket provider and returns a transaction receipt', (done) => { + transactionObserver.blockConfirmations = 2; + + const blockHeadOne = { + number: 0 + }; + + const blockHeadTwo = { + number: 1 + }; + + const receipt = {}; + + newHeadsSubscriptionMock.subscribe = jest.fn((callback) => { + callback(false, blockHeadOne); + callback(false, blockHeadTwo); + }); + + newHeadsSubscriptionMock.unsubscribe.mockReturnValueOnce(Promise.resolve(true)); + + getTransactionReceiptMethodMock.execute.mockReturnValueOnce(Promise.resolve(receipt)); + getTransactionReceiptMethodMock.execute.mockReturnValueOnce(Promise.resolve(receipt)); + + transactionObserver.observe('transactionHash').subscribe( + (transactionConfirmation) => { + if (transactionConfirmation.confirmations === 1) { + expect(transactionConfirmation.receipt).toEqual(receipt); + + return; + } + + expect(transactionConfirmation.receipt).toEqual(receipt); + expect(transactionConfirmation.confirmations).toEqual(2); + }, + () => {}, + () => { + expect(newHeadsSubscriptionMock.unsubscribe).toHaveBeenCalled(); + + done(); + } + ); + }); + + it('calls observe with a socket provider and throws an timeout error', (done) => { + transactionObserver.blockConfirmations = 2; + transactionObserver.timeout = 1; + + const blockHeadOne = { + number: 0 + }; + + const receipt = {}; + + newHeadsSubscriptionMock.subscribe = jest.fn((callback) => { + callback(false, blockHeadOne); + }); + + newHeadsSubscriptionMock.unsubscribe.mockReturnValueOnce(Promise.resolve(true)); + + getTransactionReceiptMethodMock.execute.mockReturnValueOnce(Promise.resolve(receipt)); + + transactionObserver.observe('transactionHash').subscribe( + (transactionConfirmation) => { + expect(transactionConfirmation.receipt).toEqual(receipt); + }, + (error) => { + expect(error.error).toEqual( + new Error( + 'Timeout exceeded during the transaction confirmation process. Be aware the transaction could still get confirmed!' + ) + ); + + expect(error.receipt).toEqual(receipt); + + expect(error.confirmations).toEqual(1); + + expect(error.confirmationChecks).toEqual(1); + + expect(newHeadsSubscriptionMock.unsubscribe).toHaveBeenCalled(); + + done(); + } + ); + }); + + it('calls observe with a socket provider and the newHeads subscription returns a error', (done) => { + transactionObserver.blockConfirmations = 2; + + newHeadsSubscriptionMock.subscribe = jest.fn((callback) => { + callback(true, false); + }); + + transactionObserver.observe('transactionHash').subscribe( + () => {}, + (error) => { + expect(error.error).toEqual(true); + + expect(error.receipt).toEqual(false); + + expect(error.confirmations).toEqual(0); + + expect(error.confirmationChecks).toEqual(0); + + done(); + } + ); + }); + + it('calls observe with a http provider and returns a transaction receipt', (done) => { + transactionObserver.blockConfirmations = 2; + + providerMock.constructor.name = 'CustomProvider'; + + const receipt = {blockNumber: '0xa'}; + const blockOne = {number: '0xa', hash: '0x0'}; + const blockTwo = {number: '0xc', parentHash: '0x0'}; + + getTransactionReceiptMethodMock.execute + .mockReturnValueOnce(Promise.resolve(receipt)) + .mockReturnValueOnce(Promise.resolve(receipt)); + + getBlockByNumberMethodMock.execute + .mockReturnValueOnce(Promise.resolve(blockOne)) + .mockReturnValueOnce(Promise.resolve(blockTwo)); + + transactionObserver.observe('transactionHash').subscribe( + (transactionConfirmation) => { + if (transactionConfirmation.confirmations === 1) { + expect(transactionConfirmation.receipt).toEqual(receipt); + expect(transactionObserver.lastBlock).toEqual(blockOne); + + return; + } + + expect(transactionConfirmation.receipt).toEqual(receipt); + expect(transactionConfirmation.confirmations).toEqual(2); + expect(transactionObserver.lastBlock).toEqual(blockTwo); + }, + () => {}, + () => { + expect(getTransactionReceiptMethodMock.execute).toHaveBeenCalledTimes(2); + + expect(getTransactionReceiptMethodMock.parameters).toEqual(['transactionHash']); + + expect(getBlockByNumberMethodMock.parameters).toEqual(['0xb']); + + done(); + } + ); + }); + + it('calls observe with a http provider and the timeout got exceeded', (done) => { + transactionObserver.blockConfirmations = 2; + transactionObserver.timeout = 1; + + providerMock.constructor.name = 'CustomProvider'; + + const receipt = {blockNumber: '0xa'}; + const blockOne = {number: '0xa', hash: '0x0'}; + + getTransactionReceiptMethodMock.execute.mockReturnValueOnce(Promise.resolve(receipt)); + + getBlockByNumberMethodMock.execute.mockReturnValueOnce(Promise.resolve(blockOne)); + + transactionObserver.observe('transactionHash').subscribe( + (transactionConfirmation) => { + expect(transactionConfirmation.receipt).toEqual(receipt); + expect(transactionObserver.lastBlock).toEqual(blockOne); + }, + (error) => { + expect(error.error).toEqual( + new Error( + 'Timeout exceeded during the transaction confirmation process. Be aware the transaction could still get confirmed!' + ) + ); + expect(error.receipt).toEqual(receipt); + expect(error.confirmations).toEqual(1); + expect(error.confirmationChecks).toEqual(1); + + expect(getTransactionReceiptMethodMock.execute).toHaveBeenCalledTimes(1); + + expect(getTransactionReceiptMethodMock.parameters).toEqual(['transactionHash']); + + done(); + } + ); + }); + + it('calls observe with a http provider and the getTransactionMethod throws an error', (done) => { + transactionObserver.blockConfirmations = 2; + transactionObserver.timeout = 1; + + providerMock.constructor.name = 'CustomProvider'; + + getTransactionReceiptMethodMock.execute = jest.fn(() => { + return Promise.reject(new Error('ERROR')); + }); + + transactionObserver.observe('transactionHash').subscribe( + (transactionConfirmation) => {}, + (error) => { + expect(error.error).toEqual(new Error('ERROR')); + expect(error.receipt).toEqual(false); + expect(error.confirmations).toEqual(0); + expect(error.confirmationChecks).toEqual(0); + + expect(getTransactionReceiptMethodMock.execute).toHaveBeenCalledTimes(1); + + expect(getTransactionReceiptMethodMock.parameters).toEqual(['transactionHash']); + + done(); + } + ); + }); +}); diff --git a/packages/web3-core-method/tests/src/proxy/MethodProxyTest.js b/packages/web3-core-method/tests/src/proxy/MethodProxyTest.js index 674aa6f0c6a..373e54ea7be 100644 --- a/packages/web3-core-method/tests/src/proxy/MethodProxyTest.js +++ b/packages/web3-core-method/tests/src/proxy/MethodProxyTest.js @@ -1,12 +1,10 @@ import {AbstractWeb3Module} from 'web3-core'; -import {PromiEvent} from 'web3-core-promievent'; -import MethodProxy from '../../../src/proxy/MethodProxy'; import AbstractMethodFactory from '../../../lib/factories/AbstractMethodFactory'; import AbstractMethod from '../../../lib/methods/AbstractMethod'; +import MethodProxy from '../../../src/proxy/MethodProxy'; // Mocks jest.mock('AbstractWeb3Module'); -jest.mock('PromiEvent'); jest.mock('../../../lib/factories/AbstractMethodFactory'); jest.mock('../../../lib/methods/AbstractMethod'); @@ -17,7 +15,7 @@ describe('MethodProxyTest', () => { let methodProxy, moduleInstanceMock, methodFactoryMock, methodMock; beforeEach(() => { - new AbstractMethodFactory({}, {}, {}, {}); + new AbstractMethodFactory({}, {}); methodFactoryMock = AbstractMethodFactory.mock.instances[0]; new AbstractWeb3Module(); @@ -59,52 +57,31 @@ describe('MethodProxyTest', () => { } }); - it('executes the AbstractCallMethod myMethod and it returns the expected value', () => { + it('executes the myMethod and it returns the expected value', () => { methodMock.parameters = []; methodMock.parametersAmount = 0; methodMock.execute.mockReturnValueOnce(100); - methodMock.Type = 'CALL'; - methodFactoryMock.hasMethod.mockReturnValueOnce(true); + methodFactoryMock.hasMethod.mockReturnValue(true); - methodFactoryMock.createMethod.mockReturnValueOnce(methodMock); + methodFactoryMock.createMethod.mockReturnValue(methodMock); methodProxy = new MethodProxy(moduleInstanceMock, methodFactoryMock); const response = methodProxy.myMethod(); - expect(response).toEqual(100); - - expect(methodFactoryMock.hasMethod).toHaveBeenCalledWith('myMethod'); - - expect(methodFactoryMock.createMethod).toHaveBeenCalledWith('myMethod'); - - expect(methodMock.execute).toHaveBeenCalledWith(moduleInstanceMock); - }); - - it('calls the AbstractSendMethod myMethod and returns the expected value', () => { - methodMock.parameters = []; - methodMock.parametersAmount = 0; - - methodMock.execute.mockReturnValueOnce(100); - methodMock.Type = 'SEND'; - - methodFactoryMock.hasMethod.mockReturnValueOnce(true); + expect(methodProxy.myMethod.request()).toEqual(methodMock); - methodFactoryMock.createMethod.mockReturnValueOnce(methodMock); - - methodProxy = new MethodProxy(moduleInstanceMock, methodFactoryMock); - - const response = methodProxy.myMethod(); + expect(methodProxy.myMethod.method).toEqual(methodMock); expect(response).toEqual(100); expect(methodFactoryMock.hasMethod).toHaveBeenCalledWith('myMethod'); - expect(methodFactoryMock.createMethod).toHaveBeenCalledWith('myMethod'); + expect(methodFactoryMock.createMethod).toHaveBeenCalledWith('myMethod', moduleInstanceMock); - expect(methodMock.execute).toHaveBeenCalledWith(moduleInstanceMock, PromiEvent.mock.instances[0]); + expect(methodMock.execute).toHaveBeenCalled(); }); it('throws an error because of an invalid parameter length', () => { @@ -124,7 +101,7 @@ describe('MethodProxyTest', () => { } catch (error) { expect(methodFactoryMock.hasMethod).toHaveBeenCalledWith('myMethod'); - expect(methodFactoryMock.createMethod).toHaveBeenCalledWith('myMethod'); + expect(methodFactoryMock.createMethod).toHaveBeenCalledWith('myMethod', moduleInstanceMock); expect(error.message).toEqual('Invalid parameters length the expected length would be 2 and not 0'); } diff --git a/packages/web3-core-method/tests/src/validators/TransactionReceiptValidatorTest.js b/packages/web3-core-method/tests/src/validators/TransactionReceiptValidatorTest.js deleted file mode 100644 index 1725756c8af..00000000000 --- a/packages/web3-core-method/tests/src/validators/TransactionReceiptValidatorTest.js +++ /dev/null @@ -1,111 +0,0 @@ -import * as Utils from 'web3-utils'; -import TransactionReceiptValidator from '../../../src/validators/TransactionReceiptValidator'; - -// Mocks -jest.mock('Utils'); - -/** - * TransactionReceiptValidator test - */ -describe('TransactionReceiptValidatorTest', () => { - let transactionReceiptValidator, receipt, method; - - beforeEach(() => { - receipt = { - status: true, - outOfGas: false, - gasUsed: 100 - }; - - method = {}; - method.utils = Utils; - - transactionReceiptValidator = new TransactionReceiptValidator(); - }); - - it('calls validate and returns true', () => { - Utils.hexToNumber.mockReturnValueOnce(110); - - method.parameters = [ - { - gas: 110 - } - ]; - - expect(transactionReceiptValidator.validate(receipt, method)).toEqual(true); - - expect(Utils.hexToNumber).toHaveBeenCalledWith(110); - }); - - it('calls validate and returns true with status property set to undefined', () => { - delete receipt.status; - - Utils.hexToNumber.mockReturnValueOnce(110); - - method.parameters = [ - { - gas: 110 - } - ]; - - expect(transactionReceiptValidator.validate(receipt, method)).toEqual(true); - - expect(Utils.hexToNumber).toHaveBeenCalledWith(110); - }); - - it('calls validate and returns true with status property set to null', () => { - receipt.status = null; - - Utils.hexToNumber.mockReturnValueOnce(110); - - method.parameters = [ - { - gas: 110 - } - ]; - - expect(transactionReceiptValidator.validate(receipt, method)).toEqual(true); - - expect(Utils.hexToNumber).toHaveBeenCalledWith(110); - }); - - it('calls validate and returns error because of invalid gasUsage', () => { - Utils.hexToNumber.mockReturnValueOnce(100); - - method.parameters = [ - { - gas: 110 - } - ]; - - const error = transactionReceiptValidator.validate(receipt, method); - - expect(error).toBeInstanceOf(Error); - - expect(error.message).toEqual( - `Transaction ran out of gas. Please provide more gas:\n${JSON.stringify(receipt, null, 2)}` - ); - - expect(Utils.hexToNumber).toHaveBeenCalledWith(110); - }); - - it('calls validate and returns error because the EVM has reverted it', () => { - Utils.hexToNumber.mockReturnValueOnce(110); - - method.parameters = [ - { - gas: 101 - } - ]; - - receipt.status = false; - - const error = transactionReceiptValidator.validate(receipt, method); - - expect(error).toBeInstanceOf(Error); - - expect(error.message).toEqual(`Transaction has been reverted by the EVM:\n${JSON.stringify(receipt, null, 2)}`); - - expect(Utils.hexToNumber).toHaveBeenCalledWith(101); - }); -}); diff --git a/packages/web3-core-method/tests/src/watchers/NewHeadsWatcherTest.js b/packages/web3-core-method/tests/src/watchers/NewHeadsWatcherTest.js deleted file mode 100644 index 0ac61325e9d..00000000000 --- a/packages/web3-core-method/tests/src/watchers/NewHeadsWatcherTest.js +++ /dev/null @@ -1,128 +0,0 @@ -import {AbstractSubscription, SubscriptionsFactory} from 'web3-core-subscriptions'; -import {AbstractWeb3Module} from 'web3-core'; -import {WebsocketProvider, HttpProvider} from 'web3-providers'; -import CustomProvider from '../../__mocks__/CustomProvider'; -import NewHeadsWatcher from '../../../src/watchers/NewHeadsWatcher'; - -// Mocks -jest.mock('HttpProvider'); -jest.mock('WebsocketProvider'); -jest.mock('AbstractWeb3Module'); -jest.mock('Subscription'); -jest.mock('SubscriptionsFactory'); -jest.mock('AbstractSubscription'); -jest.mock('../../__mocks__/CustomProvider'); - -/** - * NewHeadsWatcher test - */ -describe('NewHeadsWatcherTest', () => { - let newHeadsWatcher, providerMock, moduleInstanceMock, subscriptionsFactoryMock, subscriptionMock; - - it('constructor check', () => { - new SubscriptionsFactory(); - subscriptionsFactoryMock = SubscriptionsFactory.mock.instances[0]; - subscriptionsFactoryMock.createNewHeadsSubscription = jest.fn(); - - newHeadsWatcher = new NewHeadsWatcher(subscriptionsFactoryMock); - - expect(newHeadsWatcher.subscriptionsFactory).toEqual(subscriptionsFactoryMock); - - expect(newHeadsWatcher.confirmationSubscription).toBeNull(); - - expect(newHeadsWatcher.isPolling).toEqual(false); - - expect(newHeadsWatcher.confirmationInterval).toBeNull(); - }); - - it('calls watch and stops with an HttpProvider', () => { - jest.useFakeTimers(); - - new SubscriptionsFactory(); - subscriptionsFactoryMock.createNewHeadsSubscription = jest.fn(); - - newHeadsWatcher = new NewHeadsWatcher(subscriptionsFactoryMock); - - new HttpProvider({}); - providerMock = HttpProvider.mock.instances[0]; - - new AbstractWeb3Module(providerMock, {}, {}, {}); - moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; - moduleInstanceMock.currentProvider = providerMock; - - const newHeadsWatcherObject = newHeadsWatcher.watch(moduleInstanceMock); - - expect(newHeadsWatcherObject.isPolling).toEqual(true); - - expect(newHeadsWatcherObject.confirmationInterval).toEqual(1); - - expect(setInterval).toHaveBeenCalledTimes(1); - - expect(setInterval).toHaveBeenLastCalledWith(expect.any(Function), 1000); - - newHeadsWatcher.stop(); - - expect(newHeadsWatcher.listeners('newHead')).toHaveLength(0); - }); - - it('calls watch and stops with a CustomProvider', () => { - jest.useFakeTimers(); - - new SubscriptionsFactory(); - subscriptionsFactoryMock.createNewHeadsSubscription = jest.fn(); - - newHeadsWatcher = new NewHeadsWatcher(subscriptionsFactoryMock); - - new CustomProvider({}); - providerMock = CustomProvider.mock.instances[0]; - - new AbstractWeb3Module(providerMock, {}, {}, {}); - moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; - moduleInstanceMock.currentProvider = providerMock; - - const newHeadsWatcherObject = newHeadsWatcher.watch(moduleInstanceMock); - - expect(newHeadsWatcherObject.isPolling).toEqual(true); - - expect(newHeadsWatcherObject.confirmationInterval).toEqual(2); - - expect(setInterval).toHaveBeenCalledTimes(1); - - expect(setInterval).toHaveBeenLastCalledWith(expect.any(Function), 1000); - - newHeadsWatcher.stop(); - - expect(newHeadsWatcher.listeners('newHead')).toHaveLength(0); - }); - - it('calls watch and stops with an WebsocketProvider', () => { - new WebsocketProvider({}); - providerMock = WebsocketProvider.mock.instances[0]; - - new AbstractWeb3Module(providerMock, {}, {}, {}); - moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; - moduleInstanceMock.currentProvider = providerMock; - - new AbstractSubscription({}, moduleInstanceMock); - subscriptionMock = AbstractSubscription.mock.instances[0]; - subscriptionMock.subscribe.mockReturnValueOnce(subscriptionMock); - - new SubscriptionsFactory(); - subscriptionsFactoryMock.createNewHeadsSubscription = jest.fn(() => { - return subscriptionMock; - }); - - newHeadsWatcher = new NewHeadsWatcher(subscriptionsFactoryMock); - - newHeadsWatcher.watch(moduleInstanceMock); - newHeadsWatcher.stop(); - - expect(newHeadsWatcher.listeners('newHead')).toHaveLength(0); - - expect(subscriptionsFactoryMock.createNewHeadsSubscription).toHaveBeenCalledWith(moduleInstanceMock); - - expect(subscriptionMock.subscribe).toHaveBeenCalledWith(expect.any(Function)); - - expect(subscriptionMock.unsubscribe).toHaveBeenCalled(); - }); -}); diff --git a/packages/web3-core-method/tests/src/workflows/TransactionConfirmationWorkflowTest.js b/packages/web3-core-method/tests/src/workflows/TransactionConfirmationWorkflowTest.js deleted file mode 100644 index 03b32857d0d..00000000000 --- a/packages/web3-core-method/tests/src/workflows/TransactionConfirmationWorkflowTest.js +++ /dev/null @@ -1,322 +0,0 @@ -import {AbstractWeb3Module} from 'web3-core'; -import {PromiEvent} from 'web3-core-promievent'; -import TransactionReceiptValidator from '../../../src/validators/TransactionReceiptValidator'; -import NewHeadsWatcher from '../../../src/watchers/NewHeadsWatcher'; -import AbstractMethod from '../../../lib/methods/AbstractMethod'; -import ContractDeployMethod from '../../__mocks__/ContractDeployMethod'; -import TransactionConfirmationWorkflow from '../../../src/workflows/TransactionConfirmationWorkflow'; -import GetTransactionReceiptMethod from '../../../src/methods/transaction/GetTransactionReceiptMethod'; - -// Mocks -jest.mock('../../../src/validators/TransactionReceiptValidator'); -jest.mock('../../../src/watchers/NewHeadsWatcher'); -jest.mock('../../../src/methods/transaction/GetTransactionReceiptMethod'); -jest.mock('../../../lib/methods/AbstractMethod'); -jest.mock('AbstractWeb3Module'); - -/** - * TransactionConfirmationWorkflow test - */ -describe('TransactionConfirmationWorkflowTest', () => { - let transactionConfirmationWorkflow, - transactionReceiptValidatorMock, - newHeadsWatcherMock, - methodMock, - moduleInstanceMock, - getTransactionReceiptMethodMock, - promiEvent; - - beforeEach(() => { - new TransactionReceiptValidator(); - transactionReceiptValidatorMock = TransactionReceiptValidator.mock.instances[0]; - - new NewHeadsWatcher({}); - newHeadsWatcherMock = NewHeadsWatcher.mock.instances[0]; - - new AbstractMethod(); - methodMock = AbstractMethod.mock.instances[0]; - - new AbstractWeb3Module({}, {}, {}, {}); - moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; - - new GetTransactionReceiptMethod({}, {}, {}); - getTransactionReceiptMethodMock = GetTransactionReceiptMethod.mock.instances[0]; - - promiEvent = new PromiEvent(); - }); - - it('constructor check', () => { - transactionConfirmationWorkflow = new TransactionConfirmationWorkflow( - transactionReceiptValidatorMock, - newHeadsWatcherMock, - getTransactionReceiptMethodMock - ); - - expect(transactionConfirmationWorkflow.transactionReceiptValidator).toEqual(transactionReceiptValidatorMock); - - expect(transactionConfirmationWorkflow.newHeadsWatcher).toEqual(newHeadsWatcherMock); - - expect(transactionConfirmationWorkflow.getTransactionReceiptMethod).toEqual(getTransactionReceiptMethodMock); - }); - - it('calls executes and receipt does already exists but is invalid', (done) => { - methodMock.callback = jest.fn(); - methodMock.parameters = []; - - getTransactionReceiptMethodMock.execute.mockReturnValueOnce(Promise.resolve({blockHash: true})); - - transactionReceiptValidatorMock.validate.mockReturnValueOnce(false); - - transactionConfirmationWorkflow = new TransactionConfirmationWorkflow( - transactionReceiptValidatorMock, - newHeadsWatcherMock, - getTransactionReceiptMethodMock - ); - - transactionConfirmationWorkflow.execute(methodMock, moduleInstanceMock, '0x0', promiEvent); - - promiEvent.catch((error) => { - expect(error).toEqual(false); - - expect(getTransactionReceiptMethodMock.parameters).toEqual(['0x0']); - - expect(getTransactionReceiptMethodMock.execute).toHaveBeenCalledWith(moduleInstanceMock); - - expect(transactionReceiptValidatorMock.validate).toHaveBeenCalledWith({blockHash: true}, methodMock); - - expect(transactionConfirmationWorkflow.timeoutCounter).toEqual(0); - - expect(transactionConfirmationWorkflow.confirmationsCounter).toEqual(0); - - expect(newHeadsWatcherMock.stop).toHaveBeenCalled(); - - expect(methodMock.callback).toHaveBeenCalledWith(error, null); - - done(); - }); - }); - - it('calls executes and receipt does already exists', (done) => { - methodMock.callback = jest.fn(() => { - done(); - }); - - getTransactionReceiptMethodMock.execute.mockReturnValueOnce(Promise.resolve({blockHash: '0x0'})); - - transactionReceiptValidatorMock.validate.mockReturnValueOnce(true); - - methodMock.afterExecution.mockReturnValueOnce({blockHash: '0x0'}); - - transactionConfirmationWorkflow = new TransactionConfirmationWorkflow( - transactionReceiptValidatorMock, - newHeadsWatcherMock, - getTransactionReceiptMethodMock - ); - - transactionConfirmationWorkflow.execute(methodMock, moduleInstanceMock, '0x0', promiEvent); - - promiEvent.on('receipt', (receipt) => { - expect(receipt).toEqual({blockHash: '0x0'}); - - expect(methodMock.callback).toHaveBeenCalledWith(false, {blockHash: '0x0'}); - - expect(newHeadsWatcherMock.stop).toHaveBeenCalled(); - - expect(methodMock.afterExecution).toHaveBeenCalledWith({blockHash: '0x0'}); - - expect(transactionReceiptValidatorMock.validate).toHaveBeenCalledWith({blockHash: '0x0'}); - }); - }); - - it('calls executes with ContractDeployMethod and receipt does already exists', (done) => { - const contractDeployMethodMock = new ContractDeployMethod(); - contractDeployMethodMock.afterExecution = jest.fn(); - contractDeployMethodMock.callback = jest.fn(() => { - done(); - }); - - getTransactionReceiptMethodMock.execute.mockReturnValueOnce(Promise.resolve({blockHash: '0x0'})); - - transactionReceiptValidatorMock.validate.mockReturnValueOnce(true); - - methodMock.afterExecution.mockReturnValueOnce({blockHash: '0x0'}); - - transactionConfirmationWorkflow = new TransactionConfirmationWorkflow( - transactionReceiptValidatorMock, - newHeadsWatcherMock, - getTransactionReceiptMethodMock - ); - - transactionConfirmationWorkflow.execute(contractDeployMethodMock, moduleInstanceMock, '0x0', promiEvent); - - promiEvent.on('receipt', (receipt) => { - expect(receipt).toEqual({blockHash: '0x0'}); - - expect(contractDeployMethodMock.callback).toHaveBeenCalledWith(false, {blockHash: '0x0'}); - - expect(newHeadsWatcherMock.stop).toHaveBeenCalled(); - - expect(contractDeployMethodMock.afterExecution).toHaveBeenCalledWith({blockHash: '0x0'}); - - expect(transactionReceiptValidatorMock.validate).toHaveBeenCalledWith( - {blockHash: '0x0'}, - contractDeployMethodMock - ); - }); - }); - - it("calls executes and receipt doesn't already exists", async (done) => { - methodMock.callback = jest.fn(() => { - done(); - }); - - getTransactionReceiptMethodMock.execute.mockReturnValueOnce(Promise.resolve(false)); - - getTransactionReceiptMethodMock.execute.mockReturnValueOnce(Promise.resolve({blockHash: '0x0'})); - - newHeadsWatcherMock.on = jest.fn((name, method) => { - expect(name).toEqual('newHead'); - - method(); - }); - - newHeadsWatcherMock.watch.mockReturnValueOnce(newHeadsWatcherMock); - - newHeadsWatcherMock.isPolling = true; - moduleInstanceMock.transactionPollingTimeout = 1; - moduleInstanceMock.transactionConfirmationBlocks = 1; - - transactionReceiptValidatorMock.validate.mockReturnValueOnce(true); - - methodMock.afterExecution.mockReturnValueOnce({blockHash: '0x0'}); - - transactionConfirmationWorkflow = new TransactionConfirmationWorkflow( - transactionReceiptValidatorMock, - newHeadsWatcherMock, - getTransactionReceiptMethodMock - ); - - transactionConfirmationWorkflow.execute(methodMock, moduleInstanceMock, '0x0', promiEvent); - - await promiEvent; - - promiEvent.on('confirmation', (confirmationsCounter, receipt) => { - expect(transactionConfirmationWorkflow.timeoutCounter).toEqual(1); - - expect(confirmationsCounter).toEqual(1); - - expect(receipt).toEqual({blockHash: '0x0'}); - }); - - promiEvent.on('receipt', (receipt) => { - expect(receipt).toEqual({blockHash: '0x0'}); - - expect(promiEvent.listeners()).toHaveLength(0); - - expect(methodMock.callback).toHaveBeenCalledWith(false, {blockHash: '0x0'}); - - expect(newHeadsWatcherMock.stop).toHaveBeenCalled(); - - expect(methodMock.afterExecution).toHaveBeenCalledWith({blockHash: '0x0'}); - - expect(transactionReceiptValidatorMock.validate).toHaveBeenCalledWith({blockHash: '0x0'}, methodMock); - - done(); - }); - }); - - it("calls executes and receipt doesn't already exists and is invalid on first confirmation", async (done) => { - methodMock.callback = jest.fn(); - - getTransactionReceiptMethodMock.execute - .mockReturnValueOnce(Promise.resolve(false)) - .mockReturnValueOnce(Promise.resolve({blockHash: '0x0'})); - - newHeadsWatcherMock.on = jest.fn((name, method) => { - expect(name).toEqual('newHead'); - - method(); - }); - - newHeadsWatcherMock.watch.mockReturnValueOnce(newHeadsWatcherMock); - - newHeadsWatcherMock.isPolling = false; - moduleInstanceMock.transactionBlockTimeout = 1; - moduleInstanceMock.transactionConfirmationBlocks = 1; - - transactionReceiptValidatorMock.validate.mockReturnValueOnce(false); - - transactionConfirmationWorkflow = new TransactionConfirmationWorkflow( - transactionReceiptValidatorMock, - newHeadsWatcherMock, - getTransactionReceiptMethodMock - ); - - transactionConfirmationWorkflow.execute(methodMock, moduleInstanceMock, '0x0', promiEvent); - - promiEvent.on('error', (error) => { - expect(error).toEqual(false); - - expect(promiEvent.listeners()).toHaveLength(0); - - expect(methodMock.callback).toHaveBeenCalledWith(false, null); - - expect(newHeadsWatcherMock.stop).toHaveBeenCalled(); - - expect(transactionReceiptValidatorMock.validate).toHaveBeenCalledWith({blockHash: '0x0'}, methodMock); - - expect(getTransactionReceiptMethodMock.execute).toHaveBeenNthCalledWith(2, moduleInstanceMock); - - expect(newHeadsWatcherMock.watch).toHaveBeenCalledWith(moduleInstanceMock); - - done(); - }); - - await expect(promiEvent).rejects.toEqual(false); - }); - - it("calls executes and receipt doesn't already exists and is invalid on first confirmation (polling)", async (done) => { - methodMock.callback = jest.fn(); - - getTransactionReceiptMethodMock.execute - .mockReturnValueOnce(Promise.resolve(false)) - .mockReturnValueOnce(Promise.resolve({blockHash: '0x0'})); - - newHeadsWatcherMock.on = jest.fn((name, method) => { - expect(name).toEqual('newHead'); - - method(); - }); - - newHeadsWatcherMock.watch.mockReturnValueOnce(newHeadsWatcherMock); - - newHeadsWatcherMock.isPolling = true; - moduleInstanceMock.transactionPollingTimeout = 0; - - transactionConfirmationWorkflow = new TransactionConfirmationWorkflow( - transactionReceiptValidatorMock, - newHeadsWatcherMock, - getTransactionReceiptMethodMock - ); - - transactionConfirmationWorkflow.execute(methodMock, moduleInstanceMock, '0x0', promiEvent); - - promiEvent.on('error', (error) => { - expect(error.message).toEqual( - 'Transaction was not mined within 0 seconds, please make sure your transaction was properly sent. Be aware that it might still be mined!' - ); - - expect(promiEvent.listeners()).toHaveLength(0); - - expect(methodMock.callback).toHaveBeenCalledWith(error, null); - - expect(newHeadsWatcherMock.stop).toHaveBeenCalled(); - - done(); - }); - - await expect(promiEvent).rejects.toThrow( - 'Transaction was not mined within 0 seconds, please make sure your transaction was properly sent. Be aware that it might still be mined!' - ); - }); -}); diff --git a/packages/web3-core-method/types/index.d.ts b/packages/web3-core-method/types/index.d.ts index 6a54c7dab28..4b60155b8cf 100644 --- a/packages/web3-core-method/types/index.d.ts +++ b/packages/web3-core-method/types/index.d.ts @@ -22,7 +22,7 @@ import {AbstractWeb3Module, PromiEvent} from 'web3-core'; import {formatters} from 'web3-core-helpers'; export class AbstractMethod { - constructor(rpcMethod: string, parametersAmount: number, utils: Utils, formatters: formatters); + constructor(rpcMethod: string, parametersAmount: number, utils: Utils, formatters: formatters, moduleInstance: AbstractWeb3Module); utils: Utils; formatters: formatters; @@ -30,7 +30,8 @@ export class AbstractMethod { rpcMethod: string; parametersAmount: number; parameters: any[]; - arguments: object; + getArguments(): object; + setArguments(args: any[]): void; isHash(parameter: string): boolean; hasWallets(): boolean; @@ -40,7 +41,7 @@ export class AbstractMethod { afterExecution(response: any): any; - execute(moduleInstance: AbstractWeb3Module): Promise|PromiEvent|string; + execute(): Promise|PromiEvent|string; clearSubscriptions(unsubscribeMethod: string): Promise; } diff --git a/packages/web3-core-method/types/tests/abstract-method-tests.ts b/packages/web3-core-method/types/tests/abstract-method-tests.ts index cbab76713f5..f51413187b4 100644 --- a/packages/web3-core-method/types/tests/abstract-method-tests.ts +++ b/packages/web3-core-method/types/tests/abstract-method-tests.ts @@ -23,13 +23,8 @@ import {formatters} from 'web3-core-helpers'; import {ProvidersModuleFactory} from 'web3-providers'; import {AbstractWeb3Module} from 'web3-core'; -const abstractWeb3Module = new AbstractWeb3Module( - 'http://localhost:8545', - new ProvidersModuleFactory(), - {}, - {} -); -const abstractMethod = new AbstractMethod('rpc_method', 1, Utils, formatters); +const abstractWeb3Module = new AbstractWeb3Module('http://localhost:8545'); +const abstractMethod = new AbstractMethod('rpc_method', 1, Utils, formatters, abstractWeb3Module); // $ExpectType Utils abstractMethod.utils; @@ -50,11 +45,14 @@ abstractMethod.parametersAmount; abstractMethod.parameters; // $ExpectType object -abstractMethod.arguments; +abstractMethod.getArguments(); // $ExpectType boolean abstractMethod.isHash('string'); +// $ExpectType void +abstractMethod.setArguments([]); + // $ExpectType boolean abstractMethod.hasWallets(); @@ -68,7 +66,7 @@ abstractMethod.beforeExecution(abstractWeb3Module); abstractMethod.afterExecution('response'); // $ExpectType string | PromiEvent | Promise -abstractMethod.execute(abstractWeb3Module); +abstractMethod.execute(); // $ExpectType Promise abstractMethod.clearSubscriptions('eth_unsubscribe'); diff --git a/packages/web3-core-promievent/README.md b/packages/web3-core-promievent/README.md deleted file mode 100644 index d410e6e667c..00000000000 --- a/packages/web3-core-promievent/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# web3-core-promievent - -This is a sub package of [web3.js][repo] - -This is the PromiEvent package is used to return a EventEmitter mixed with a Promise to allow multiple final states as well as chaining. -Please read the [documentation][docs] for more. - -## Installation - -```bash -npm install web3-core-promievent -``` - -## Usage - -```js -import PromiEvent from 'web3-core-promievent'; - -new PromiEvent(); -``` - -## Types - -All the typescript typings are placed in the types folder. - -[docs]: http://web3js.readthedocs.io/en/1.0/ -[repo]: https://github.com/ethereum/web3.js diff --git a/packages/web3-core-promievent/jest.config.js b/packages/web3-core-promievent/jest.config.js deleted file mode 100644 index 94404d63f8b..00000000000 --- a/packages/web3-core-promievent/jest.config.js +++ /dev/null @@ -1,3 +0,0 @@ -const jestConfig = require('../../jest.config'); - -module.exports = jestConfig({}); diff --git a/packages/web3-core-promievent/package-lock.json b/packages/web3-core-promievent/package-lock.json deleted file mode 100644 index 69083acb1e9..00000000000 --- a/packages/web3-core-promievent/package-lock.json +++ /dev/null @@ -1,1159 +0,0 @@ -{ - "name": "web3-core-promievent", - "version": "1.0.0-beta.48", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/runtime": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz", - "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==", - "requires": { - "regenerator-runtime": "^0.12.0" - } - }, - "@types/parsimmon": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" - }, - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "camelcase": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "definitelytyped-header-parser": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", - "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", - "requires": { - "@types/parsimmon": "^1.3.0", - "parsimmon": "^1.2.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - }, - "dts-critic": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", - "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", - "requires": { - "definitelytyped-header-parser": "^1.0.0", - "request-promise-native": "^1.0.5", - "yargs": "^12.0.5" - } - }, - "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", - "requires": { - "definitelytyped-header-parser": "^1.0.1", - "dts-critic": "^1.0.1", - "fs-extra": "^6.0.1", - "request": "^2.88.0", - "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fs-extra": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", - "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", - "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "requires": { - "p-defer": "^1.0.0" - } - }, - "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" - }, - "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", - "requires": { - "mime-db": "~1.38.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" - }, - "parsimmon": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } - } - }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - }, - "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", - "requires": { - "babel-code-frame": "^6.22.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^3.2.0", - "glob": "^7.1.1", - "js-yaml": "^3.7.0", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.27.2" - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "requires": { - "tslib": "^1.8.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } -} diff --git a/packages/web3-core-promievent/package.json b/packages/web3-core-promievent/package.json deleted file mode 100644 index 91b667b50d1..00000000000 --- a/packages/web3-core-promievent/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "web3-core-promievent", - "namespace": "ethereum", - "version": "1.0.0-beta.48", - "description": "This package extends eventEmitters with promises to allow chaining as well as multiple final states of a function.", - "repository": "https://github.com/ethereum/web3.js/tree/1.0/packages/web3-core-promievent", - "license": "LGPL-3.0", - "main": "dist/web3-core-promievent.cjs.js", - "module": "dist/web3-core-promievent.esm.js", - "browser": "dist/web3-core-promievent.umd.js", - "scripts": { - "build": "rollup -c", - "dev": "rollup -c -w", - "test": "jest", - "test:watch": "jest --watchAll" - }, - "dependencies": { - "@babel/runtime": "^7.3.1", - "dtslint": "0.5.4", - "eventemitter3": "^3.1.0" - }, - "files": [ - "dist" - ] -} diff --git a/packages/web3-core-promievent/rollup.config.js b/packages/web3-core-promievent/rollup.config.js deleted file mode 100644 index bafc6533835..00000000000 --- a/packages/web3-core-promievent/rollup.config.js +++ /dev/null @@ -1,4 +0,0 @@ -import pkg from './package.json'; -import rollupConfig from '../../rollup.config'; - -export default rollupConfig('Web3CorePromiEvent', pkg.name); diff --git a/packages/web3-core-subscriptions/package-lock.json b/packages/web3-core-subscriptions/package-lock.json index 86bd4920815..bf59f7cab60 100644 --- a/packages/web3-core-subscriptions/package-lock.json +++ b/packages/web3-core-subscriptions/package-lock.json @@ -15,12 +15,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -31,17 +33,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -50,6 +55,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -57,27 +63,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -87,12 +98,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -105,6 +118,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -114,12 +128,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -128,6 +144,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -136,22 +153,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -162,6 +183,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -170,6 +192,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -180,6 +203,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -189,12 +213,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -202,12 +228,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -215,22 +243,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -243,6 +275,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -250,12 +283,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -264,17 +299,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -282,23 +320,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -308,6 +348,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -315,27 +356,31 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "eventemitter3": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" + "integrity": "sha1-CQtNbNvWRe0Qv3UNS1QHlC17oWM=" }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -349,27 +394,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -377,12 +427,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -393,6 +445,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -402,17 +455,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -421,6 +477,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -429,6 +486,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -441,17 +499,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -461,6 +522,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -468,19 +530,22 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -491,6 +556,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -499,47 +565,56 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -548,27 +623,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -577,6 +657,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -588,6 +669,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -596,6 +678,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -604,48 +687,54 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=" }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -653,12 +742,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -666,12 +757,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -679,17 +772,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -698,6 +794,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -707,22 +804,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -731,6 +832,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -738,47 +840,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -787,22 +898,25 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + "integrity": "sha1-+hpxVEdkwDb4xJsToIsllMn4oN4=" }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -829,12 +943,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -846,6 +962,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -854,6 +971,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -863,17 +981,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -881,27 +1002,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -909,22 +1035,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -940,12 +1070,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -955,6 +1087,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -962,22 +1095,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -986,12 +1123,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1005,13 +1144,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1020,6 +1160,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1027,22 +1168,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1050,12 +1195,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1066,6 +1213,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1073,12 +1221,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1087,12 +1237,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1101,6 +1253,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1111,6 +1264,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1120,17 +1274,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1150,6 +1307,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-core-subscriptions/package.json b/packages/web3-core-subscriptions/package.json index 1b8d65fdf9d..2522ec50b5e 100644 --- a/packages/web3-core-subscriptions/package.json +++ b/packages/web3-core-subscriptions/package.json @@ -16,11 +16,13 @@ }, "dependencies": { "@babel/runtime": "^7.3.1", - "dtslint": "0.5.4", "eventemitter3": "^3.1.0", - "lodash": "^4.17.11", - "web3-core-helpers": "1.0.0-beta.48", - "web3-utils": "1.0.0-beta.48" + "lodash": "^4.17.11" + }, + "devDependencies": { + "dtslint": "^0.4.2", + "web3-utils": "1.0.0-beta.48", + "web3-core-helpers": "1.0.0-beta.48" }, "files": [ "dist" diff --git a/packages/web3-core-subscriptions/src/factories/SubscriptionsFactory.js b/packages/web3-core-subscriptions/src/factories/SubscriptionsFactory.js deleted file mode 100644 index 31f17ac42d0..00000000000 --- a/packages/web3-core-subscriptions/src/factories/SubscriptionsFactory.js +++ /dev/null @@ -1,109 +0,0 @@ -/* - This file is part of web3.js. - - web3.js is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - web3.js is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with web3.js. If not, see . -*/ -/** - * @file SubscriptionsFactory.js - * @authors: Samuel Furter - * @date 2018 - */ - -import cloneDeep from 'lodash/cloneDeep'; -import LogSubscription from '../subscriptions/eth/LogSubscription'; -import NewHeadsSubscription from '../subscriptions/eth/NewHeadsSubscription'; -import NewPendingTransactionsSubscription from '../subscriptions/eth/NewPendingTransactionsSubscription'; -import SyncingSubscription from '../subscriptions/eth/SyncingSubscription'; -import MessagesSubscription from '../subscriptions/shh/MessagesSubscription'; - -export default class SubscriptionsFactory { - /** - * @param {Utils} utils - * @param {Object} formatters - * - * @constructor - */ - constructor(utils, formatters) { - this.utils = utils; - this.formatters = formatters; - } - - /** - * Returns an eth log subscription - * - * @method createLogSubscription - * - * @param {Object} options - * @param {AbstractWeb3Module} moduleInstance - * @param {GetPastLogsMethod} getPastLogsMethod - * - * @returns {LogSubscription} - */ - createLogSubscription(options, moduleInstance, getPastLogsMethod) { - return new LogSubscription(cloneDeep(options), this.utils, this.formatters, moduleInstance, getPastLogsMethod); - } - - /** - * Returns an eth newHeads subscription - * - * @method createNewHeadsSubscription - * - * @param {AbstractWeb3Module} moduleInstance - * - * @returns {NewHeadsSubscription} - */ - createNewHeadsSubscription(moduleInstance) { - return new NewHeadsSubscription(this.utils, this.formatters, moduleInstance); - } - - /** - * Returns an eth newPendingTransactions subscription - * - * @method createNewPendingTransactionsSubscription - * - * @param {AbstractWeb3Module} moduleInstance - * - * @returns {NewPendingTransactionsSubscription} - */ - createNewPendingTransactionsSubscription(moduleInstance) { - return new NewPendingTransactionsSubscription(this.utils, this.formatters, moduleInstance); - } - - /** - * Returns an eth syncing subscription - * - * @method createSyncingSubscription - * - * @param {AbstractWeb3Module} moduleInstance - * - * @returns {SyncingSubscription} - */ - createSyncingSubscription(moduleInstance) { - return new SyncingSubscription(this.utils, this.formatters, moduleInstance); - } - - /** - * Returns an shh messages subscription - * - * @method createShhMessagesSubscription - * - * @param {Object} options - * @param {AbstractWeb3Module} moduleInstance - * - * @returns {MessagesSubscription} - */ - createShhMessagesSubscription(options, moduleInstance) { - return new MessagesSubscription(options, this.utils, this.formatters, moduleInstance); - } -} diff --git a/packages/web3-core-subscriptions/src/index.js b/packages/web3-core-subscriptions/src/index.js index 737904a13e8..64afb839b25 100644 --- a/packages/web3-core-subscriptions/src/index.js +++ b/packages/web3-core-subscriptions/src/index.js @@ -20,21 +20,6 @@ * @date 2018 */ -import * as Utils from 'web3-utils'; -import {formatters} from 'web3-core-helpers'; -import SubscriptionsModuleFactory from './factories/SubscriptionsModuleFactory'; - -/** - * Returns an object of type SubscriptionsFactory - * - * @method SubscriptionsFactory - * - * @returns {SubscriptionsFactory} - */ -export const SubscriptionsFactory = () => { - return new SubscriptionsModuleFactory().createSubscriptionsFactory(Utils, formatters); -}; - export AbstractSubscription from '../lib/subscriptions/AbstractSubscription'; // Eth diff --git a/packages/web3-core-subscriptions/src/subscriptions/eth/LogSubscription.js b/packages/web3-core-subscriptions/src/subscriptions/eth/LogSubscription.js index 45cfad97dbf..e0294856495 100644 --- a/packages/web3-core-subscriptions/src/subscriptions/eth/LogSubscription.js +++ b/packages/web3-core-subscriptions/src/subscriptions/eth/LogSubscription.js @@ -23,6 +23,7 @@ import AbstractSubscription from '../../../lib/subscriptions/AbstractSubscription'; import isFunction from 'lodash/isFunction'; +// TODO: Move the past logs logic to the eth module export default class LogSubscription extends AbstractSubscription { /** * @param {Object} options @@ -52,7 +53,7 @@ export default class LogSubscription extends AbstractSubscription { if ((this.options.fromBlock && this.options.fromBlock !== 'latest') || this.options.fromBlock === 0) { this.getPastLogsMethod.parameters = [this.formatters.inputLogFormatter(this.options)]; this.getPastLogsMethod - .execute(this.moduleInstance) + .execute() .then((logs) => { logs.forEach((log) => { const formattedLog = this.onNewSubscriptionItem(log); diff --git a/packages/web3-core-subscriptions/tests/src/factories/SubscriptionsFactoryTest.js b/packages/web3-core-subscriptions/tests/src/factories/SubscriptionsFactoryTest.js deleted file mode 100644 index 740b91db348..00000000000 --- a/packages/web3-core-subscriptions/tests/src/factories/SubscriptionsFactoryTest.js +++ /dev/null @@ -1,42 +0,0 @@ -import LogSubscription from '../../../src/subscriptions/eth/LogSubscription'; -import SubscriptionsFactory from '../../../src/factories/SubscriptionsFactory'; -import NewHeadsSubscription from '../../../src/subscriptions/eth/NewHeadsSubscription'; -import NewPendingTransactionsSubscription from '../../../src/subscriptions/eth/NewPendingTransactionsSubscription'; -import SyncingSubscription from '../../../src/subscriptions/eth/SyncingSubscription'; -import MessagesSubscription from '../../../src/subscriptions/shh/MessagesSubscription'; - -// Mocks -jest.mock(''); - -/** - * SubscriptionsFactory test - */ -describe('SubscriptionsFactoryTest', () => { - let subscriptionsFactory; - - beforeEach(() => { - subscriptionsFactory = new SubscriptionsFactory({}, {}); - }); - - it('createLogSubscription returns LogSubscription', () => { - expect(subscriptionsFactory.createLogSubscription()).toBeInstanceOf(LogSubscription); - }); - - it('createNewHeadsSubscription returns NewHeadsSubscription', () => { - expect(subscriptionsFactory.createNewHeadsSubscription()).toBeInstanceOf(NewHeadsSubscription); - }); - - it('createNewPendingTransactionsSubscription returns NewPendingTransactionsSubscription', () => { - expect(subscriptionsFactory.createNewPendingTransactionsSubscription()).toBeInstanceOf( - NewPendingTransactionsSubscription - ); - }); - - it('createSyncingSubscription returns SyncingSubscription', () => { - expect(subscriptionsFactory.createSyncingSubscription()).toBeInstanceOf(SyncingSubscription); - }); - - it('createShhMessagesSubscription returns MessagesSubscription', () => { - expect(subscriptionsFactory.createShhMessagesSubscription()).toBeInstanceOf(MessagesSubscription); - }); -}); diff --git a/packages/web3-core-subscriptions/tests/src/subscriptions/eth/LogSubscriptionTest.js b/packages/web3-core-subscriptions/tests/src/subscriptions/eth/LogSubscriptionTest.js index 117c6a72dac..d95aea61fb1 100644 --- a/packages/web3-core-subscriptions/tests/src/subscriptions/eth/LogSubscriptionTest.js +++ b/packages/web3-core-subscriptions/tests/src/subscriptions/eth/LogSubscriptionTest.js @@ -19,6 +19,7 @@ describe('LogSubscriptionTest', () => { moduleInstanceMock = new AbstractWeb3Module(); socketProviderAdapterMock = new SocketProviderAdapter(); getPastLogsMethodMock = new GetPastLogsMethod(); + getPastLogsMethodMock.execute = jest.fn(); logSubscription = new LogSubscription({}, Utils, formatters, moduleInstanceMock, getPastLogsMethodMock); }); @@ -42,11 +43,7 @@ describe('LogSubscriptionTest', () => { formatters.outputLogFormatter.mockReturnValueOnce(0).mockReturnValueOnce('ITEM'); - getPastLogsMethodMock.execute = jest.fn((moduleInstance) => { - expect(moduleInstance).toEqual(moduleInstanceMock); - - return Promise.resolve([0]); - }); + getPastLogsMethodMock.execute.mockReturnValueOnce(Promise.resolve([0])); socketProviderAdapterMock.subscribe = jest.fn((type, method, parameters) => { expect(type).toEqual('eth_subscribe'); @@ -85,7 +82,7 @@ describe('LogSubscriptionTest', () => { expect(getPastLogsMethodMock.parameters).toEqual([{}]); - expect(getPastLogsMethodMock.execute).toHaveBeenCalledWith(moduleInstanceMock); + expect(getPastLogsMethodMock.execute).toHaveBeenCalled(); expect(logSubscription.id).toEqual(expectedId); @@ -102,9 +99,7 @@ describe('LogSubscriptionTest', () => { it('calls subscribe executes GetPastLogsMethod and the method throws an error', (done) => { formatters.inputLogFormatter.mockReturnValueOnce({}); - getPastLogsMethodMock.execute = jest.fn((moduleInstance) => { - expect(moduleInstance).toEqual(moduleInstanceMock); - + getPastLogsMethodMock.execute = jest.fn(() => { return Promise.reject(new Error('ERROR')); }); @@ -119,7 +114,7 @@ describe('LogSubscriptionTest', () => { expect(getPastLogsMethodMock.parameters).toEqual([{}]); - expect(getPastLogsMethodMock.execute).toHaveBeenCalledWith(moduleInstanceMock); + expect(getPastLogsMethodMock.execute).toHaveBeenCalled(); done(); }) diff --git a/packages/web3-core/jest.config.js b/packages/web3-core/jest.config.js index 4838af78cae..94404d63f8b 100644 --- a/packages/web3-core/jest.config.js +++ b/packages/web3-core/jest.config.js @@ -1,11 +1,3 @@ const jestConfig = require('../../jest.config'); -module.exports = jestConfig({ - ProvidersModuleFactory: 'web3-providers', - ProviderDetector: 'web3-providers', - ProviderResolver: 'web3-providers', - BatchRequest: 'web3-providers', - WebsocketProvider: 'web3-providers', - HttpProvider: 'web3-providers', - IpcProvider: 'web3-providers' -}); +module.exports = jestConfig({}); diff --git a/packages/web3-core/package-lock.json b/packages/web3-core/package-lock.json index ea5f7f4ac2e..7f55c4022a7 100644 --- a/packages/web3-core/package-lock.json +++ b/packages/web3-core/package-lock.json @@ -20,12 +20,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -36,17 +38,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -55,6 +60,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -62,27 +68,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -92,12 +103,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -110,6 +123,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -119,12 +133,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -133,6 +149,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -141,22 +158,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -167,6 +188,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -175,6 +197,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -185,6 +208,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -194,12 +218,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -207,12 +233,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -220,22 +248,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -248,6 +280,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -255,12 +288,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -269,17 +304,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -287,23 +325,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -313,6 +353,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -320,22 +361,26 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -349,27 +394,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -377,12 +427,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -393,6 +445,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -402,17 +455,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -421,6 +477,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -429,6 +486,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -441,17 +499,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -461,6 +522,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -468,19 +530,22 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -491,6 +556,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -499,47 +565,56 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -548,27 +623,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -577,6 +657,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -588,6 +669,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -596,6 +678,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -610,42 +693,48 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -653,12 +742,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -666,12 +757,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -679,17 +772,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -698,6 +794,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -707,22 +804,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -731,6 +832,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -738,47 +840,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -787,12 +898,14 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", @@ -803,6 +916,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -829,12 +943,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -846,6 +962,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -854,6 +971,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -863,17 +981,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -881,27 +1002,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -909,22 +1035,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -940,12 +1070,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -955,6 +1087,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -962,22 +1095,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -986,12 +1123,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1005,13 +1144,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1020,6 +1160,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1027,22 +1168,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1050,12 +1195,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1066,6 +1213,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1073,12 +1221,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1087,12 +1237,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1101,6 +1253,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1111,6 +1264,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1120,17 +1274,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1150,6 +1307,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-core/package.json b/packages/web3-core/package.json index 03d1d831d5d..638d7bb1f70 100644 --- a/packages/web3-core/package.json +++ b/packages/web3-core/package.json @@ -18,14 +18,14 @@ "dependencies": { "@babel/runtime": "^7.3.1", "@types/node": "^10.12.18", - "dtslint": "0.5.4", "lodash": "^4.17.11", "web3-utils": "1.0.0-beta.48" }, "devDependencies": { "dtslint": "^0.4.2", "web3-eth-accounts": "1.0.0-beta.48", - "web3-providers": "1.0.0-beta.48" + "web3-providers": "1.0.0-beta.48", + "web3-core-method": "1.0.0-beta.48" }, "files": [ "dist", diff --git a/packages/web3-core/src/AbstractWeb3Module.js b/packages/web3-core/src/AbstractWeb3Module.js index d3874d0f63a..8ac9a56b759 100644 --- a/packages/web3-core/src/AbstractWeb3Module.js +++ b/packages/web3-core/src/AbstractWeb3Module.js @@ -21,34 +21,32 @@ */ import isObject from 'lodash/isObject'; -import {HttpProvider, WebsocketProvider, IpcProvider} from 'web3-providers'; -import {toChecksumAddress} from 'web3-utils'; // TODO: This could be removed with a web3-core-types module +import { + HttpProvider, + WebsocketProvider, + IpcProvider, + BatchRequest, + ProviderDetector, + ProviderResolver +} from 'web3-providers'; +import {MethodProxy} from 'web3-core-method'; +import {toChecksumAddress} from 'web3-utils'; export default class AbstractWeb3Module { /** - * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {MethodModuleFactory} methodModuleFactory - * @param {AbstractMethodFactory} methodFactory + * @param {AbstractSocketProvider|HttpProvider|String|EthereumProvider} provider * @param {Object} options - * @param {Net} net + * @param {MethodFactory} methodFactory + * @param {Net.Socket} nodeNet * * @constructor */ - constructor( - provider, - providersModuleFactory, - methodModuleFactory = null, - methodFactory = null, - options = {}, - net = null - ) { - this.providersModuleFactory = providersModuleFactory; - this.providerDetector = providersModuleFactory.createProviderDetector(); // TODO: detection of an provider and setting of givenProvider could be removed. - this.providerResolver = providersModuleFactory.createProviderResolver(); - this.givenProvider = this.providerDetector.detect(); - - this._currentProvider = this.providerResolver.resolve(provider, net); + constructor(provider, options = {}, methodFactory = null, nodeNet = null) { + // ProviderDetector and ProviderResolver are created in the constructor for providing a simpler Web3 Module API. + this.providerResolver = new ProviderResolver(); + this.givenProvider = ProviderDetector.detect(); + + this._currentProvider = this.providerResolver.resolve(provider, nodeNet); this._defaultAccount = options.defaultAccount ? toChecksumAddress(options.defaultAccount) : undefined; this._defaultBlock = options.defaultBlock || 'latest'; this._transactionBlockTimeout = options.transactionBlockTimeout || 50; @@ -58,13 +56,11 @@ export default class AbstractWeb3Module { this._defaultGas = options.defaultGas; this.BatchRequest = () => { - return this.providersModuleFactory.createBatchRequest(this); + return new BatchRequest(this); }; - if (methodFactory !== null && methodModuleFactory !== null) { - this.methodFactory = methodFactory; - - return methodModuleFactory.createMethodProxy(this, this.methodFactory); + if (methodFactory) { + return new MethodProxy(this, methodFactory); } } diff --git a/packages/web3-core/src/index.js b/packages/web3-core/src/index.js index bda10c2aecf..1a861a636b0 100644 --- a/packages/web3-core/src/index.js +++ b/packages/web3-core/src/index.js @@ -20,4 +20,4 @@ * @date 2018 */ -export AbstractWeb3Module from './AbstractWeb3Module'; +export AbstractWeb3Module from './AbstractWeb3Module.js'; diff --git a/packages/web3-core/tests/src/AbstractWeb3ModuleTest.js b/packages/web3-core/tests/src/AbstractWeb3ModuleTest.js index 97585cb8c63..efb338d8c68 100644 --- a/packages/web3-core/tests/src/AbstractWeb3ModuleTest.js +++ b/packages/web3-core/tests/src/AbstractWeb3ModuleTest.js @@ -1,86 +1,28 @@ -import { - BatchRequest, - ProviderDetector, - ProviderResolver, - ProvidersModuleFactory, - WebsocketProvider, - HttpProvider, - IpcProvider -} from 'web3-providers'; import AbstractWeb3Module from '../../src/AbstractWeb3Module'; -import MethodProxy from '../__mocks__/MethodProxy'; -import MethodModuleFactory from '../__mocks__/MethodModuleFactory'; import MethodFactory from '../__mocks__/MethodFactory'; -// Mocks -jest.mock('BatchRequest'); -jest.mock('ProviderDetector'); -jest.mock('ProvidersModuleFactory'); -jest.mock('ProviderResolver'); -jest.mock('WebsocketProvider'); -jest.mock('HttpProvider'); -jest.mock('IpcProvider'); - /** * AbstractWeb3Module test */ describe('AbstractWeb3ModuleTest', () => { - let abstractWeb3Module, - providerDetectorMock, - providerResolverMock, - providersModuleFactoryMock, - providerMock, - methodModuleFactoryMock, - methodFactoryMock; + let abstractWeb3Module, methodFactoryMock; beforeEach(() => { methodFactoryMock = new MethodFactory(); - methodModuleFactoryMock = new MethodModuleFactory(); - - new WebsocketProvider('HOST', {}); - providerMock = WebsocketProvider.mock.instances[0]; - providerMock.host = 'HOST'; - - new ProvidersModuleFactory(); - providersModuleFactoryMock = ProvidersModuleFactory.mock.instances[0]; - - new ProviderDetector(); - providerDetectorMock = ProviderDetector.mock.instances[0]; - - new ProviderResolver(); - providerResolverMock = ProviderResolver.mock.instances[0]; - - providerResolverMock.resolve = jest.fn(() => { - return providerMock; - }); - - providerDetectorMock.detect = jest.fn(() => { - return false; - }); - - providersModuleFactoryMock.createProviderResolver.mockReturnValueOnce(providerResolverMock); - - providersModuleFactoryMock.createProviderDetector.mockReturnValueOnce(providerDetectorMock); - methodFactoryMock.hasMethod = jest.fn(() => { return false; }); - methodModuleFactoryMock.createMethodProxy = jest.fn((target, methodFactory) => { - return new MethodProxy(target); - }); - abstractWeb3Module = new AbstractWeb3Module( - 'WS', - providersModuleFactoryMock, - methodModuleFactoryMock, - methodFactoryMock, + 'http://localhost:8545', { defaultAccount: '0x03c9a938ff7f54090d0d99e2c6f80380510ea078', defaultBlock: 'latest', defaultGasPrice: 100, defaultGas: 100 - } + }, + methodFactoryMock, + {} ); }); @@ -101,25 +43,15 @@ describe('AbstractWeb3ModuleTest', () => { expect(abstractWeb3Module.BatchRequest).toBeInstanceOf(Function); - expect(abstractWeb3Module.methodFactory).toEqual(methodFactoryMock); - - expect(abstractWeb3Module.providerDetector).toEqual(providerDetectorMock); - - expect(abstractWeb3Module.currentProvider).toEqual(providerMock); - - expect(methodModuleFactoryMock.createMethodProxy).toHaveBeenCalledWith(abstractWeb3Module, methodFactoryMock); - - expect(providerResolverMock.resolve).toHaveBeenCalledWith('WS', null); + expect(abstractWeb3Module.currentProvider.host).toEqual('http://localhost:8545'); }); it('gets the BatchRequest property and it is of type BatchRequest', () => { - const batchRequestMock = new BatchRequest(); - - providersModuleFactoryMock.createBatchRequest.mockReturnValueOnce(batchRequestMock); + const batchRequest = new abstractWeb3Module.BatchRequest(); - expect(new abstractWeb3Module.BatchRequest()).toBeInstanceOf(BatchRequest); + expect(batchRequest.constructor.name).toEqual('BatchRequest'); - expect(providersModuleFactoryMock.createBatchRequest).toHaveBeenCalledWith(abstractWeb3Module); + expect(batchRequest.add).toBeInstanceOf(Function); }); it('sets the defaultAccount property validates the address and throws error', () => { @@ -174,62 +106,23 @@ describe('AbstractWeb3ModuleTest', () => { }); it('calls setProvider returns true and sets the provider as currentProvider', () => { - expect(abstractWeb3Module.setProvider('SOCKET_PROVIDER')).toEqual(true); - - expect(providerResolverMock.resolve).toHaveBeenNthCalledWith(1, 'WS', null); - - expect(providerResolverMock.resolve).toHaveBeenNthCalledWith(2, 'SOCKET_PROVIDER', undefined); + expect(abstractWeb3Module.setProvider('http://newhost')).toEqual(true); - expect(abstractWeb3Module.currentProvider).toEqual(providerMock); - }); - - it('calls setProvider returns true, sets the provider and clears the subscriptions', () => { - providerMock.subscriptions = [0, 1]; - providerMock.clearSubscriptions = jest.fn(); - - expect(abstractWeb3Module.setProvider('SOCKET_PROVIDER')).toEqual(true); - - expect(providerResolverMock.resolve).toHaveBeenNthCalledWith(1, 'WS', null); - - expect(providerResolverMock.resolve).toHaveBeenNthCalledWith(2, 'SOCKET_PROVIDER', undefined); - - expect(providerMock.clearSubscriptions).toHaveBeenCalled(); - - expect(abstractWeb3Module.currentProvider).toEqual(providerMock); + expect(abstractWeb3Module.currentProvider.host).toEqual('http://newhost'); }); it('calls setProvider and throws an error because of the resolver', () => { - providerResolverMock.resolve = jest.fn(() => { - throw new Error('Invalid provider'); - }); - - const provider = { - constructor: { - name: 'WebsocketProvider' - }, - host: 'WS' - }; - expect(() => { - abstractWeb3Module.setProvider(provider); + abstractWeb3Module.setProvider({nope: true}); }).toThrow('Invalid provider'); - - expect(providerResolverMock.resolve).toHaveBeenCalledWith(provider, undefined); }); it('calls setProvider and returns false because of the equal host', () => { - expect(abstractWeb3Module.setProvider('HOST')).toEqual(false); + expect(abstractWeb3Module.setProvider('http://localhost:8545')).toEqual(false); }); - it('calls setProvider and returns false because of the same constructor name', () => { - const provider = { - constructor: { - name: 'WebsocketProvider' - }, - host: 'HOST' - }; - - expect(abstractWeb3Module.setProvider(provider)).toEqual(false); + it('calls setProvider and returns false because it is the same provider', () => { + expect(abstractWeb3Module.setProvider('http://localhost:8545')).toEqual(false); }); it('calls isSameProvider and returns false', () => { @@ -246,38 +139,23 @@ describe('AbstractWeb3ModuleTest', () => { it('calls isSameProvider and returns true', () => { const provider = { constructor: { - name: 'WebsocketProvider' + name: 'HttpProvider' }, - host: 'HOST' + host: 'http://localhost:8545' }; expect(abstractWeb3Module.isSameProvider(provider)).toEqual(true); }); it('initiates a HttpProvider with the providers property of the module', () => { - const url = 'HOST'; - const options = {}; - - const httpProvider = new AbstractWeb3Module.providers.HttpProvider(url, options); - - expect(httpProvider).toBeInstanceOf(HttpProvider); - }); - - it('initiates a WebsocketProvider with the providers property of the module', () => { - const url = 'HOST'; - const options = {}; - - const websocketProvider = new AbstractWeb3Module.providers.WebsocketProvider(url, options); - - expect(websocketProvider).toBeInstanceOf(WebsocketProvider); + expect(new AbstractWeb3Module.providers.HttpProvider('http://localhost:7545', {}).host).toEqual( + 'http://localhost:7545' + ); }); - it('initiates a IpcProvider with the providers property of the module', () => { - const path = 'HOST'; - const net = {}; - - const ipcProvider = new AbstractWeb3Module.providers.IpcProvider(path, net); - - expect(ipcProvider).toBeInstanceOf(IpcProvider); + it('checks if all providers exists on the static providers property', () => { + expect(AbstractWeb3Module.providers.HttpProvider).toBeInstanceOf(Function); + expect(AbstractWeb3Module.providers.WebsocketProvider).toBeInstanceOf(Function); + expect(AbstractWeb3Module.providers.IpcProvider).toBeInstanceOf(Function); }); }); diff --git a/packages/web3-core/types/index.d.ts b/packages/web3-core/types/index.d.ts index e0dc08e7212..e3b3acae038 100644 --- a/packages/web3-core/types/index.d.ts +++ b/packages/web3-core/types/index.d.ts @@ -24,7 +24,7 @@ import { HttpProvider, HttpProviderOptions, IpcProvider, - provider, + provider, ProviderDetector, ProviderResolver, ProvidersModuleFactory, WebsocketProvider, WebsocketProviderOptions @@ -33,10 +33,8 @@ import { export class AbstractWeb3Module { constructor( provider: provider, - providersModuleFactory: ProvidersModuleFactory, - methodModuleFactory: any, - methodFactory?: any, options?: Web3ModuleOptions, + methodFactory?: any, net?: net.Socket ); @@ -50,7 +48,7 @@ export class AbstractWeb3Module { static readonly providers: Providers; defaultAccount: string | null; readonly currentProvider: EthereumProvider | HttpProvider | IpcProvider | WebsocketProvider; - readonly givenProvider: provider | null; + readonly givenProvider: object | null; setProvider(provider: provider, net?: net.Socket): boolean; diff --git a/packages/web3-core/types/tests/abstract-web3-module-test.ts b/packages/web3-core/types/tests/abstract-web3-module-test.ts index a2c20bd474b..2428052bd18 100644 --- a/packages/web3-core/types/tests/abstract-web3-module-test.ts +++ b/packages/web3-core/types/tests/abstract-web3-module-test.ts @@ -17,7 +17,7 @@ * @date 2018 */ import * as net from 'net'; -import {ProvidersModuleFactory, HttpProvider, IpcProvider, WebsocketProvider} from 'web3-providers'; +import {HttpProvider, IpcProvider, WebsocketProvider} from 'web3-providers'; import {AbstractWeb3Module, Web3ModuleOptions} from 'web3-core'; const options = { @@ -31,20 +31,7 @@ const options = { }; const httpProvider = new HttpProvider('http://localhost:8545', options); const ipcProvider = new IpcProvider('/Users/myuser/Library/Ethereum/geth.ipc', new net.Server()); -const websocketProvider = new WebsocketProvider('ws://localhost:8546'); - -const providersModuleFactory = new ProvidersModuleFactory(); - -const abstractWeb3Module = new AbstractWeb3Module( - httpProvider, - providersModuleFactory, - { - HttpProvider: httpProvider, - WebsocketProvider: websocketProvider, - IpcProvider: ipcProvider - }, - {} -); +const abstractWeb3Module = new AbstractWeb3Module(httpProvider); // $ExpectType BatchRequest new abstractWeb3Module.BatchRequest(); @@ -70,7 +57,7 @@ abstractWeb3Module.defaultGas; // $ExpectType Providers AbstractWeb3Module.providers; -// $ExpectType string | HttpProvider | IpcProvider | WebsocketProvider | EthereumProvider | null +// $ExpectType object | null abstractWeb3Module.givenProvider; // $ExpectType string | null @@ -79,9 +66,6 @@ abstractWeb3Module.defaultAccount; // $ExpectType HttpProvider | IpcProvider | WebsocketProvider | EthereumProvider abstractWeb3Module.currentProvider; -// $ExpectType string | HttpProvider | IpcProvider | WebsocketProvider | EthereumProvider | null -abstractWeb3Module.givenProvider; - // $ExpectType boolean abstractWeb3Module.setProvider(httpProvider); diff --git a/packages/web3-eth-abi/package-lock.json b/packages/web3-eth-abi/package-lock.json index 0feb751309e..cf68934d88b 100644 --- a/packages/web3-eth-abi/package-lock.json +++ b/packages/web3-eth-abi/package-lock.json @@ -20,7 +20,8 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "aes-js": { "version": "3.0.0", @@ -31,6 +32,7 @@ "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -41,17 +43,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -60,6 +65,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -67,27 +73,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -97,12 +108,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -115,6 +128,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -124,12 +138,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -143,6 +159,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -156,22 +173,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -182,6 +203,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -190,6 +212,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -200,6 +223,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -209,12 +233,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -222,12 +248,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -235,22 +263,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -263,6 +295,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -270,12 +303,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -284,17 +319,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -302,23 +340,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -339,6 +379,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -346,17 +387,20 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "ethers": { "version": "4.0.26", @@ -379,6 +423,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -392,27 +437,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -420,12 +470,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -436,6 +488,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -445,17 +498,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -464,6 +520,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -472,6 +529,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -484,17 +542,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -504,6 +565,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -511,14 +573,16 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "hash.js": { "version": "1.1.3", @@ -533,6 +597,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -543,6 +608,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -556,32 +622,38 @@ "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-sha3": { "version": "0.5.7", @@ -591,12 +663,14 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -605,27 +679,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -634,6 +713,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -645,6 +725,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -653,6 +734,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -667,37 +749,42 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimalistic-assert": { "version": "1.0.1", @@ -708,6 +795,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -715,12 +803,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -728,12 +818,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -741,17 +833,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -760,6 +855,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -769,22 +865,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -793,6 +893,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -800,47 +901,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -849,12 +959,14 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", @@ -865,6 +977,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -891,12 +1004,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -905,7 +1020,8 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true } } }, @@ -913,6 +1029,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -921,6 +1038,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -930,17 +1048,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -948,12 +1069,14 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "scrypt-js": { "version": "2.0.4", @@ -963,12 +1086,14 @@ "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "setimmediate": { "version": "1.0.4", @@ -979,6 +1104,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -986,22 +1112,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -1017,12 +1147,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -1032,6 +1164,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -1039,22 +1172,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -1063,12 +1200,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1082,13 +1221,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1097,6 +1237,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1104,22 +1245,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1133,6 +1278,7 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1143,6 +1289,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1150,12 +1297,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1164,12 +1313,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1178,6 +1329,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1188,6 +1340,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1197,7 +1350,8 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "xmlhttprequest": { "version": "1.8.0", @@ -1207,12 +1361,14 @@ "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1232,6 +1388,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-eth-abi/package.json b/packages/web3-eth-abi/package.json index 5d63d1e9831..5a4319c99fd 100644 --- a/packages/web3-eth-abi/package.json +++ b/packages/web3-eth-abi/package.json @@ -17,7 +17,6 @@ "types": "types", "dependencies": { "@babel/runtime": "^7.3.1", - "dtslint": "0.5.4", "ethers": "4.0.26", "lodash": "^4.17.11", "web3-utils": "1.0.0-beta.48" diff --git a/packages/web3-eth-accounts/jest.config.js b/packages/web3-eth-accounts/jest.config.js index 2a398143d0d..20f3e3988db 100644 --- a/packages/web3-eth-accounts/jest.config.js +++ b/packages/web3-eth-accounts/jest.config.js @@ -4,14 +4,6 @@ module.exports = jestConfig({ 'hexToBytes': 'web3-utils', 'isHexStrict': 'web3-utils', 'formatters': 'web3-core-helpers', - 'HttpProvider': 'web3-providers', - 'ProvidersModuleFactory': 'web3-providers', - 'ProviderDetector': 'web3-providers', - 'ProviderResolver': 'web3-providers', - 'GetGasPriceMethod': 'web3-core-method', - 'ChainIdMethod': 'web3-core-method', - 'GetTransactionCountMethod': 'web3-core-method', - 'MethodModuleFactory': 'web3-core-method', 'EthAccount': 'eth-lib/lib/account', 'scryptsy': 'scrypt.js' }); diff --git a/packages/web3-eth-accounts/package-lock.json b/packages/web3-eth-accounts/package-lock.json index a53f55f9b47..ab3091142f9 100644 --- a/packages/web3-eth-accounts/package-lock.json +++ b/packages/web3-eth-accounts/package-lock.json @@ -15,12 +15,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -31,17 +33,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -50,6 +55,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -57,7 +63,7 @@ "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -67,27 +73,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -97,12 +108,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -115,6 +128,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -124,12 +138,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -137,12 +153,13 @@ "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=" }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -156,7 +173,7 @@ "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -169,7 +186,7 @@ "browserify-cipher": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", "requires": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -179,7 +196,7 @@ "browserify-des": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=", "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -223,22 +240,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -249,6 +270,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -257,6 +279,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -266,7 +289,7 @@ "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -276,6 +299,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -285,12 +309,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -298,12 +324,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -311,22 +339,25 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=", "requires": { "bn.js": "^4.1.0", "elliptic": "^6.0.0" @@ -335,7 +366,7 @@ "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -347,7 +378,7 @@ "create-hmac": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -361,6 +392,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -372,7 +404,7 @@ "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", "requires": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -391,6 +423,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -398,7 +431,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decode-uri-component": { "version": "0.2.0", @@ -417,6 +451,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -425,7 +460,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "des.js": { "version": "1.0.0", @@ -439,12 +475,13 @@ "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", "requires": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -460,6 +497,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -467,23 +505,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -492,7 +532,7 @@ "elliptic": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "integrity": "sha1-wtC3d2kRuGcixjLDwGxg8vgZk5o=", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -507,6 +547,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -514,22 +555,25 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "eth-lib": { "version": "0.2.8", "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "integrity": "sha1-sZQFi+9LIgrRLqSXQx1stqoGI8g=", "requires": { "bn.js": "^4.11.6", "elliptic": "^6.4.0", @@ -539,7 +583,7 @@ "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -549,6 +593,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -562,27 +607,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -590,7 +640,7 @@ "for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "integrity": "sha1-abRH6IoKXTLD5whPPxcQA0shN24=", "requires": { "is-callable": "^1.1.3" } @@ -598,12 +648,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -614,6 +666,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -623,17 +676,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -642,6 +698,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -650,6 +707,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -671,17 +729,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -691,6 +752,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -698,14 +760,16 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "hash-base": { "version": "3.0.4", @@ -719,7 +783,7 @@ "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -739,6 +803,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -749,6 +814,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -762,17 +828,19 @@ "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "integrity": "sha1-HhrfIZ4e62hNaR+dagX/DTCiTXU=" }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-function": { "version": "1.0.1", @@ -782,32 +850,38 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -816,27 +890,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -845,6 +924,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -856,6 +936,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -864,6 +945,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -872,12 +954,13 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=" }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } @@ -885,7 +968,7 @@ "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=", "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -893,19 +976,20 @@ } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -914,25 +998,28 @@ "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "integrity": "sha1-SSNTiHju9CBjy4o+OweYeBSHqxs=" }, "min-document": { "version": "2.19.0", @@ -945,7 +1032,7 @@ "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=" }, "minimalistic-crypto-utils": { "version": "1.0.1", @@ -956,6 +1043,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -963,12 +1051,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -981,12 +1071,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -994,12 +1086,14 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "object-assign": { "version": "4.1.1", @@ -1018,6 +1112,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -1027,22 +1122,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -1051,6 +1150,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -1058,7 +1158,8 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parse-asn1": { "version": "5.1.3", @@ -1085,32 +1186,37 @@ "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "pbkdf2": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=", "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -1122,7 +1228,8 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "process": { "version": "0.5.2", @@ -1132,12 +1239,13 @@ "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=", "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -1151,6 +1259,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -1159,17 +1268,19 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "query-string": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "integrity": "sha1-p4wBK3HBfgXy4/ojGd0zBoLvs8s=", "requires": { "decode-uri-component": "^0.2.0", "object-assign": "^4.1.0", @@ -1187,7 +1298,7 @@ "randomfill": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", "requires": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -1196,12 +1307,13 @@ "regenerator-runtime": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + "integrity": "sha1-+hpxVEdkwDb4xJsToIsllMn4oN4=" }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1228,12 +1340,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -1245,6 +1359,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -1253,6 +1368,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -1262,17 +1378,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -1280,7 +1399,7 @@ "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -1289,12 +1408,13 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "scrypt": { "version": "6.0.3", @@ -1324,17 +1444,19 @@ "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -1344,6 +1466,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -1351,12 +1474,14 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "simple-concat": { "version": "1.0.0", @@ -1366,7 +1491,7 @@ "simple-get": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", - "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "integrity": "sha1-DiLpHUV12HYgYgvJEwjVenf0S10=", "requires": { "decompress-response": "^3.3.0", "once": "^1.3.1", @@ -1376,12 +1501,14 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -1397,7 +1524,8 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "strict-uri-encode": { "version": "1.1.0", @@ -1408,6 +1536,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -1417,6 +1546,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -1424,17 +1554,20 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "timed-out": { "version": "4.0.1", @@ -1445,6 +1578,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -1458,12 +1592,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1477,13 +1613,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1492,6 +1629,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1499,22 +1637,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1527,12 +1669,13 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=" }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1543,6 +1686,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1550,12 +1694,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1564,12 +1710,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1578,6 +1726,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1588,6 +1737,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1602,7 +1752,7 @@ "xhr": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", - "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", + "integrity": "sha1-vtjRZ21co2EIZnaSt0sxbEluSd0=", "requires": { "global": "~4.3.0", "is-function": "^1.0.1", @@ -1613,7 +1763,7 @@ "xhr-request": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "integrity": "sha1-9KfBhoufGYcjRE2C3K4xdkPy4u0=", "requires": { "buffer-to-arraybuffer": "^0.0.5", "object-assign": "^4.1.1", @@ -1640,12 +1790,14 @@ "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1665,6 +1817,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-eth-accounts/package.json b/packages/web3-eth-accounts/package.json index 59ea919c8f3..9f999f49af4 100644 --- a/packages/web3-eth-accounts/package.json +++ b/packages/web3-eth-accounts/package.json @@ -18,7 +18,6 @@ "dependencies": { "@babel/runtime": "^7.3.1", "crypto-browserify": "3.12.0", - "dtslint": "0.5.4", "eth-lib": "0.2.8", "lodash": "^4.17.11", "scrypt.js": "0.2.0", diff --git a/packages/web3-eth-accounts/src/Accounts.js b/packages/web3-eth-accounts/src/Accounts.js index 56652efc9d5..ad094b858d2 100644 --- a/packages/web3-eth-accounts/src/Accounts.js +++ b/packages/web3-eth-accounts/src/Accounts.js @@ -36,40 +36,22 @@ import Account from './models/Account'; export default class Accounts extends AbstractWeb3Module { /** * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory * @param {Object} formatters - * @param {ChainIdMethod} chainIdMethod - * @param {GetGasPriceMethod} getGasPriceMethod - * @param {GetTransactionCountMethod} getTransactionCountMethod + * @param {MethodFactory} methodFactory * @param {Object} options + * @param {Net.Socket} net * * @constructor */ - constructor( - provider, - providersModuleFactory, - formatters, - chainIdMethod, - getGasPriceMethod, - getTransactionCountMethod, - options - ) { - super(provider, providersModuleFactory, null, null, options); + constructor(provider, formatters, methodFactory, options, net) { + super(provider, options, methodFactory, net); + this.transactionSigner = options.transactionSigner; this.formatters = formatters; - this.chainIdMethod = chainIdMethod; - this.getGasPriceMethod = getGasPriceMethod; - this.getTransactionCountMethod = getTransactionCountMethod; this.defaultKeyName = 'web3js_wallet'; this.accounts = {}; this.accountsIndex = 0; this.wallet = this.createWalletProxy(); - - return new Proxy(this, { - get: (target, name) => { - return target[name]; - } - }); } /** @@ -375,17 +357,15 @@ export default class Accounts extends AbstractWeb3Module { const account = Account.fromPrivateKey(privateKey, this); if (!tx.chainId) { - tx.chainId = await this.chainIdMethod.execute(this); + tx.chainId = await this.getChainId(); } if (!tx.gasPrice) { - tx.gasPrice = await this.getGasPriceMethod.execute(this); + tx.gasPrice = await this.getGasPrice(); } if (!tx.nonce) { - this.getTransactionCountMethod.parameters = [account.address]; - - tx.nonce = await this.getTransactionCountMethod.execute(this); + tx.nonce = await this.getTransactionCount(account.address); } const signedTransaction = await this.transactionSigner.sign(tx, account.privateKey); diff --git a/packages/web3-eth-accounts/src/factories/MethodFactory.js b/packages/web3-eth-accounts/src/factories/MethodFactory.js new file mode 100644 index 00000000000..cc932a38785 --- /dev/null +++ b/packages/web3-eth-accounts/src/factories/MethodFactory.js @@ -0,0 +1,38 @@ +/* + This file is part of web3.js. + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file MethodFactory.js + * @author Samuel Furter + * @date 2019 + */ + +import {ChainIdMethod, GasPriceMethod, GetTransactionCountMethod, AbstractMethodFactory} from 'web3-core-method'; + +export default class MethodFactory extends AbstractMethodFactory { + /** + * @param utils + * @param formatters + * + * @constructor + */ + constructor(utils, formatters) { + super(utils, formatters); + + this.methods = { + getChainId: ChainIdMethod, + getGasPrice: GasPriceMethod, + getTransactionCount: GetTransactionCountMethod + }; + } +} diff --git a/packages/web3-eth-accounts/src/index.js b/packages/web3-eth-accounts/src/index.js index 1f4f59a41f8..a1b7cb6857e 100644 --- a/packages/web3-eth-accounts/src/index.js +++ b/packages/web3-eth-accounts/src/index.js @@ -22,27 +22,19 @@ import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; +import MethodFactory from './factories/MethodFactory'; import AccountsModule from './Accounts'; -import {ProvidersModuleFactory} from 'web3-providers'; -import {GetGasPriceMethod, ChainIdMethod, GetTransactionCountMethod} from 'web3-core-method'; /** * Returns the Accounts object * * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider * @param {Object} options + * @param {Net.Socket} net * * @returns {Accounts} * @constructor */ -export const Accounts = (provider, options) => { - return new AccountsModule( - provider, - new ProvidersModuleFactory(), - formatters, - new ChainIdMethod(Utils, formatters), - new GetGasPriceMethod(Utils, formatters), - new GetTransactionCountMethod(Utils, formatters), - options - ); +export const Accounts = (provider, net, options) => { + return new AccountsModule(provider, formatters, new MethodFactory(Utils, formatters), options, net); }; diff --git a/packages/web3-eth-accounts/src/models/Account.js b/packages/web3-eth-accounts/src/models/Account.js index 5750ba2c12e..0995729a4fa 100644 --- a/packages/web3-eth-accounts/src/models/Account.js +++ b/packages/web3-eth-accounts/src/models/Account.js @@ -102,7 +102,7 @@ export default class Account { * @returns {EncryptedKeystoreV3Json | {version, id, address, crypto}} */ encrypt(password, options) { - return Account.fromPrivateKey(this.privateKey, this.accounts.transactionSinger).toV3Keystore(password, options); + return Account.fromPrivateKey(this.privateKey, this.accounts.transactionSigner).toV3Keystore(password, options); } /** diff --git a/packages/web3-eth-accounts/tests/src/AccountsTest.js b/packages/web3-eth-accounts/tests/src/AccountsTest.js index 6e75d03424d..691f5a24872 100644 --- a/packages/web3-eth-accounts/tests/src/AccountsTest.js +++ b/packages/web3-eth-accounts/tests/src/AccountsTest.js @@ -1,11 +1,9 @@ -import {isHexStrict, randomHex, hexToBytes} from 'web3-utils'; +import {hexToBytes, isHexStrict, randomHex} from 'web3-utils'; import {formatters} from 'web3-core-helpers'; -import {ChainIdMethod, GetGasPriceMethod, GetTransactionCountMethod} from 'web3-core-method'; import Hash from 'eth-lib/lib/hash'; import RLP from 'eth-lib/lib/rlp'; import Bytes from 'eth-lib/lib/bytes'; import {encodeSignature, recover} from 'eth-lib/lib/account'; -import {HttpProvider, ProviderDetector, ProviderResolver, ProvidersModuleFactory} from 'web3-providers'; import TransactionSigner from '../__mocks__/TransactionSigner'; import Accounts from '../../src/Accounts'; import Account from '../../src/models/Account'; @@ -15,13 +13,6 @@ import {AbstractWeb3Module} from 'web3-core'; jest.mock('isHexStrict'); jest.mock('hexToBytes'); jest.mock('formatters'); -jest.mock('HttpProvider'); -jest.mock('ProviderDetector'); -jest.mock('ProviderResolver'); -jest.mock('ProvidersModuleFactory'); -jest.mock('GetGasPriceMethod'); -jest.mock('GetTransactionCountMethod'); -jest.mock('ChainIdMethod'); jest.mock('eth-lib/lib/rlp'); jest.mock('eth-lib/lib/nat'); jest.mock('eth-lib/lib/bytes'); @@ -36,74 +27,33 @@ jest.mock('../../src/models/Account'); * Accounts test */ describe('AccountsTest', () => { - let accounts, - providerMock, - providersModuleFactoryMock, - providerDetectorMock, - providerResolverMock, - chainIdMethodMock, - getGasPriceMethodMock, - getTransactionCountMethodMock, - transactionSignerMock, - options; + let accounts, providerMock, transactionSignerMock, methodFactoryMock, options; beforeEach(() => { - new HttpProvider(); - providerMock = HttpProvider.mock.instances[0]; - - new ProvidersModuleFactory(); - providersModuleFactoryMock = ProvidersModuleFactory.mock.instances[0]; - - new ProviderDetector(); - providerDetectorMock = ProviderDetector.mock.instances[0]; - providerDetectorMock.detect = jest.fn(() => { - return null; - }); - - new ProviderResolver(); - providerResolverMock = ProviderResolver.mock.instances[0]; - providerResolverMock.resolve = jest.fn(() => { - return providerMock; - }); - - providersModuleFactoryMock.createProviderDetector.mockReturnValueOnce(providerDetectorMock); - - providersModuleFactoryMock.createProviderResolver.mockReturnValueOnce(providerResolverMock); - - new ChainIdMethod(); - chainIdMethodMock = ChainIdMethod.mock.instances[0]; - - new GetGasPriceMethod(); - getGasPriceMethodMock = GetGasPriceMethod.mock.instances[0]; - - new GetTransactionCountMethod(); - getTransactionCountMethodMock = GetTransactionCountMethod.mock.instances[0]; + providerMock = {send: jest.fn(), clearSubscriptions: jest.fn()}; + methodFactoryMock = { + hasMethod: () => { + return false; + } + }; transactionSignerMock = new TransactionSigner(); options = {transactionSigner: transactionSignerMock}; - accounts = new Accounts( - providerMock, - providersModuleFactoryMock, - formatters, - chainIdMethodMock, - getGasPriceMethodMock, - getTransactionCountMethodMock, - options - ); + accounts = new Accounts(providerMock, formatters, methodFactoryMock, options, {}); }); it('constructor check', () => { expect(accounts.formatters).toEqual(formatters); - expect(accounts.chainIdMethod).toEqual(chainIdMethodMock); + expect(accounts.transactionSigner).toEqual(options.transactionSigner); - expect(accounts.getGasPriceMethod).toEqual(getGasPriceMethodMock); + expect(accounts.defaultKeyName).toEqual('web3js_wallet'); - expect(accounts.getTransactionCountMethod).toEqual(getTransactionCountMethodMock); + expect(accounts.accounts).toEqual({}); - expect(accounts.transactionSigner).toEqual(options.transactionSigner); + expect(accounts.accountsIndex).toEqual(0); expect(accounts).toBeInstanceOf(AbstractWeb3Module); }); @@ -179,7 +129,7 @@ describe('AccountsTest', () => { return Promise.resolve('signed-transaction'); }); - chainIdMethodMock.execute = jest.fn(() => { + accounts.getChainId = jest.fn(() => { return Promise.resolve(1); }); @@ -191,7 +141,7 @@ describe('AccountsTest', () => { expect(transactionSignerMock.sign).toHaveBeenCalledWith(mappedTransaction, account.privateKey); - expect(chainIdMethodMock.execute).toHaveBeenCalledWith(accounts); + expect(accounts.getChainId).toHaveBeenCalled(); }); it('calls signTransaction without the gasPrice property and resolves with a promise', async () => { @@ -220,7 +170,7 @@ describe('AccountsTest', () => { const account = {privateKey: 'pk', address: '0x0'}; Account.fromPrivateKey.mockReturnValueOnce(account); - getGasPriceMethodMock.execute = jest.fn(() => { + accounts.getGasPrice = jest.fn(() => { return Promise.resolve(1); }); @@ -232,7 +182,7 @@ describe('AccountsTest', () => { expect(transactionSignerMock.sign).toHaveBeenCalledWith(mappedTransaction, account.privateKey); - expect(getGasPriceMethodMock.execute).toHaveBeenCalledWith(accounts); + expect(accounts.getGasPrice).toHaveBeenCalled(); }); it('calls signTransaction without the nonce property and resolves with a promise', async () => { @@ -261,7 +211,7 @@ describe('AccountsTest', () => { const account = {privateKey: 'pk', address: '0x0'}; Account.fromPrivateKey.mockReturnValueOnce(account); - getTransactionCountMethodMock.execute = jest.fn(() => { + accounts.getTransactionCount = jest.fn(() => { return Promise.resolve(1); }); @@ -273,7 +223,7 @@ describe('AccountsTest', () => { expect(transactionSignerMock.sign).toHaveBeenCalledWith(mappedTransaction, account.privateKey); - expect(getTransactionCountMethodMock.execute).toHaveBeenCalledWith(accounts); + expect(accounts.getTransactionCount).toHaveBeenCalledWith('0x0'); }); it('calls signTransaction and rejects with a promise', async () => { diff --git a/packages/web3-eth-contract/jest.config.js b/packages/web3-eth-contract/jest.config.js index 23c23d5b4fb..a8ad2d7f8f7 100644 --- a/packages/web3-eth-contract/jest.config.js +++ b/packages/web3-eth-contract/jest.config.js @@ -2,13 +2,8 @@ const jestConfig = require('../../jest.config'); module.exports = jestConfig({ 'formatters': 'web3-core-helpers', - 'AbiCoder': 'web3-eth-abi', - 'MethodModuleFactory': 'web3-core-method', - 'EstimateGasMethod': 'web3-core-method', 'GetPastLogsMethod': 'web3-core-method', - 'SendRawTransactionMethod': 'web3-core-method', - 'ChainIdMethod': 'web3-core-method', - 'GetTransactionCountMethod': 'web3-core-method', + 'AbiCoder': 'web3-eth-abi', 'Accounts': 'web3-eth-accounts', 'HttpProvider': 'web3-providers', 'ProvidersModuleFactory': 'web3-providers', diff --git a/packages/web3-eth-contract/package-lock.json b/packages/web3-eth-contract/package-lock.json index afdb605d166..8d963ed21d2 100644 --- a/packages/web3-eth-contract/package-lock.json +++ b/packages/web3-eth-contract/package-lock.json @@ -15,12 +15,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -31,17 +33,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -50,6 +55,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -57,27 +63,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -87,12 +98,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -105,6 +118,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -114,12 +128,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -128,6 +144,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -136,22 +153,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -162,6 +183,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -170,6 +192,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -180,6 +203,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -189,12 +213,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -202,12 +228,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -215,22 +243,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -243,6 +275,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -250,12 +283,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -264,17 +299,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -282,23 +320,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -308,6 +348,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -315,22 +356,26 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -344,27 +389,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -372,12 +422,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -388,6 +440,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -397,17 +450,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -416,6 +472,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -424,6 +481,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -436,17 +494,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -456,6 +517,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -463,19 +525,22 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -486,6 +551,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -494,47 +560,56 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -543,27 +618,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -572,6 +652,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -583,6 +664,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -591,6 +673,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -605,42 +688,48 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -648,12 +737,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -661,12 +752,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -674,17 +767,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -693,6 +789,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -702,22 +799,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -726,6 +827,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -733,47 +835,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -782,12 +893,14 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", @@ -798,6 +911,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -824,12 +938,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -841,6 +957,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -849,6 +966,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -858,17 +976,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -876,27 +997,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -904,22 +1030,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -935,12 +1065,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -950,6 +1082,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -957,22 +1090,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -981,12 +1118,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1000,13 +1139,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1015,6 +1155,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1022,22 +1163,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1045,12 +1190,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1061,6 +1208,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1068,12 +1216,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1082,12 +1232,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1096,6 +1248,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1106,6 +1259,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1115,17 +1269,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1145,6 +1302,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-eth-contract/package.json b/packages/web3-eth-contract/package.json index 86ae695a922..d1bfdd1cef7 100644 --- a/packages/web3-eth-contract/package.json +++ b/packages/web3-eth-contract/package.json @@ -17,12 +17,10 @@ }, "dependencies": { "@babel/runtime": "^7.3.1", - "dtslint": "0.5.4", "lodash": "^4.17.11", "web3-core": "1.0.0-beta.48", "web3-core-helpers": "1.0.0-beta.48", "web3-core-method": "1.0.0-beta.48", - "web3-core-promievent": "1.0.0-beta.48", "web3-core-subscriptions": "1.0.0-beta.48", "web3-eth-abi": "1.0.0-beta.48", "web3-eth-accounts": "1.0.0-beta.48", diff --git a/packages/web3-eth-contract/src/AbstractContract.js b/packages/web3-eth-contract/src/AbstractContract.js index 9f8c4ede1a5..3f7a43ee1e0 100644 --- a/packages/web3-eth-contract/src/AbstractContract.js +++ b/packages/web3-eth-contract/src/AbstractContract.js @@ -25,8 +25,6 @@ import {AbstractWeb3Module} from 'web3-core'; export default class AbstractContract extends AbstractWeb3Module { /** * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {MethodModuleFactory} methodModuleFactory * @param {ContractModuleFactory} contractModuleFactory * @param {AbiCoder} abiCoder * @param {Accounts} accounts @@ -40,8 +38,6 @@ export default class AbstractContract extends AbstractWeb3Module { */ constructor( provider, - providersModuleFactory, - methodModuleFactory, contractModuleFactory, accounts, abiCoder, @@ -51,7 +47,7 @@ export default class AbstractContract extends AbstractWeb3Module { address = '', options = {} ) { - super(provider, providersModuleFactory, methodModuleFactory, null, options); + super(provider, options, null, null); this.contractModuleFactory = contractModuleFactory; this.abiCoder = abiCoder; @@ -165,15 +161,15 @@ export default class AbstractContract extends AbstractWeb3Module { return Promise.reject(new Error(`Event with name "${eventName}" does not exists.`)); } - method = this.methodFactory.createPastEventLogsMethod(this.abiModel.getEvent(eventName)); + method = this.methodFactory.createPastEventLogsMethod(this.abiModel.getEvent(eventName), this); } else { - method = this.methodFactory.createAllPastEventLogsMethod(this.abiModel); + method = this.methodFactory.createAllPastEventLogsMethod(this.abiModel, this); } method.parameters = [options]; method.callback = callback; - return method.execute(this); + return method.execute(); } /** @@ -201,7 +197,6 @@ export default class AbstractContract extends AbstractWeb3Module { clone() { const clone = this.contractModuleFactory.createContract( this.currentProvider, - this.providersModuleFactory, this.accounts, [], '', diff --git a/packages/web3-eth-contract/src/factories/ContractModuleFactory.js b/packages/web3-eth-contract/src/factories/ContractModuleFactory.js index 2ffc49acb2a..e58f061ea97 100644 --- a/packages/web3-eth-contract/src/factories/ContractModuleFactory.js +++ b/packages/web3-eth-contract/src/factories/ContractModuleFactory.js @@ -43,17 +43,13 @@ export default class ContractModuleFactory { * @param {Utils} utils * @param {Object} formatters * @param {AbiCoder} abiCoder - * @param {Accounts} accounts - * @param {MethodModuleFactory} methodModuleFactory * * @constructor */ - constructor(utils, formatters, abiCoder, accounts, methodModuleFactory) { + constructor(utils, formatters, abiCoder) { this.utils = utils; this.formatters = formatters; this.abiCoder = abiCoder; - this.accounts = accounts; - this.methodModuleFactory = methodModuleFactory; } /** @@ -62,7 +58,6 @@ export default class ContractModuleFactory { * @method createContract * * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory * @param {Accounts} accounts * @param {Array} abi * @param {String} address @@ -70,11 +65,9 @@ export default class ContractModuleFactory { * * @returns {AbstractContract} */ - createContract(provider, providersModuleFactory, accounts, abi, address, options) { + createContract(provider, accounts, abi, address, options) { return new AbstractContract( provider, - providersModuleFactory, - this.methodModuleFactory, this, accounts, this.abiCoder, @@ -230,7 +223,7 @@ export default class ContractModuleFactory { * @returns {MethodFactory} */ createMethodFactory() { - return new MethodFactory(this.utils, this.formatters, this, this.methodModuleFactory, this.abiCoder); + return new MethodFactory(this.utils, this.formatters, this, this.abiCoder); } /** diff --git a/packages/web3-eth-contract/src/factories/MethodFactory.js b/packages/web3-eth-contract/src/factories/MethodFactory.js index 7116acbe93e..80abb8a5d63 100644 --- a/packages/web3-eth-contract/src/factories/MethodFactory.js +++ b/packages/web3-eth-contract/src/factories/MethodFactory.js @@ -20,28 +20,35 @@ * @date 2018 */ +import { + EstimateGasMethod, + ChainIdMethod, + GetTransactionCountMethod, + GetTransactionReceiptMethod, + GetBlockByHashMethod, + SendRawTransactionMethod, + TransactionObserver +} from 'web3-core-method'; +import {NewHeadsSubscription} from 'web3-core-subscriptions'; import CallContractMethod from '../methods/CallContractMethod'; import ContractDeployMethod from '../methods/ContractDeployMethod'; import PastEventLogsMethod from '../methods/PastEventLogsMethod'; import AllPastEventLogsMethod from '../methods/AllPastEventLogsMethod'; import SendContractMethod from '../methods/SendContractMethod'; -import {EstimateGasMethod, SendRawTransactionMethod, ChainIdMethod, GetTransactionCountMethod} from 'web3-core-method'; export default class MethodFactory { /** * @param {Utils} utils * @param {Object} formatters * @param {ContractModuleFactory} contractModuleFactory - * @param {MethodModuleFactory} methodModuleFactory * @param {AbiCoder} abiCoder * * @constructor */ - constructor(utils, formatters, contractModuleFactory, methodModuleFactory, abiCoder) { + constructor(utils, formatters, contractModuleFactory, abiCoder) { this.utils = utils; this.formatters = formatters; this.contractModuleFactory = contractModuleFactory; - this.methodModuleFactory = methodModuleFactory; this.abiCoder = abiCoder; } @@ -61,13 +68,13 @@ export default class MethodFactory { switch (requestType) { case 'call': - rpcMethod = this.createCallContractMethod(abiItem); + rpcMethod = this.createCallContractMethod(abiItem, contract); break; case 'send': - rpcMethod = this.createSendContractMethod(abiItem, contract.abiModel); + rpcMethod = this.createSendContractMethod(contract); break; case 'estimate': - rpcMethod = this.createEstimateGasMethod(); + rpcMethod = this.createEstimateGasMethod(contract); break; case 'contract-deployment': rpcMethod = this.createContractDeployMethod(contract); @@ -87,13 +94,15 @@ export default class MethodFactory { * @method createPastEventLogsMethod * * @param {AbiItemModel} abiItem + * @param {AbstractContract} contract * * @returns {PastEventLogsMethod} */ - createPastEventLogsMethod(abiItem) { + createPastEventLogsMethod(abiItem, contract) { return new PastEventLogsMethod( this.utils, this.formatters, + contract, this.contractModuleFactory.createEventLogDecoder(), abiItem, this.contractModuleFactory.createEventOptionsMapper() @@ -106,13 +115,15 @@ export default class MethodFactory { * @method createPastEventLogsMethod * * @param {AbiModel} abiModel + * @param {AbstractContract} contract * * @returns {AllPastEventLogsMethod} */ - createAllPastEventLogsMethod(abiModel) { + createAllPastEventLogsMethod(abiModel, contract) { return new AllPastEventLogsMethod( this.utils, this.formatters, + contract, this.contractModuleFactory.createAllEventsLogDecoder(), abiModel, this.contractModuleFactory.createAllEventsOptionsMapper() @@ -125,11 +136,12 @@ export default class MethodFactory { * @method createCallContractMethod * * @param {AbiItemModel} abiItem + * @param {AbstractContract} contract * * @returns {CallContractMethod} */ - createCallContractMethod(abiItem) { - return new CallContractMethod(this.utils, this.formatters, this.abiCoder, abiItem); + createCallContractMethod(abiItem, contract) { + return new CallContractMethod(this.utils, this.formatters, contract, this.abiCoder, abiItem); } /** @@ -137,23 +149,30 @@ export default class MethodFactory { * * @method createSendContractMethod * - * @param {AbiItemModel} abiItem - * @param {AbiModel} abiModel + * @param {AbstractContract} contract * * @returns {SendContractMethod} */ - createSendContractMethod(abiItem, abiModel) { - const transactionConfirmationWorkflow = this.methodModuleFactory.createTransactionConfirmationWorkflow(); + createSendContractMethod(contract) { + const transactionObserver = new TransactionObserver( + contract.currentProvider, + this.getTransactionObserverTimeout(contract), + contract.transactionConfirmationBlocks, + new GetTransactionReceiptMethod(this.utils, this.formatters, contract), + new GetBlockByHashMethod(this.utils, this.formatters, contract), + new NewHeadsSubscription(this.utils, this.formatters, contract) + ); return new SendContractMethod( this.utils, this.formatters, - transactionConfirmationWorkflow, - new SendRawTransactionMethod(this.utils, this.formatters, transactionConfirmationWorkflow), - new ChainIdMethod(this.utils, this.formatters), - new GetTransactionCountMethod(this.utils, this.formatters), + contract, + transactionObserver, + new ChainIdMethod(this.utils, this.formatters, contract), + new GetTransactionCountMethod(this.utils, this.formatters, contract), + new SendRawTransactionMethod(this.utils, this.formatters, contract, transactionObserver), this.contractModuleFactory.createAllEventsLogDecoder(), - abiModel + contract.abiModel ); } @@ -167,16 +186,21 @@ export default class MethodFactory { * @returns {ContractDeployMethod} */ createContractDeployMethod(contract) { - const transactionConfirmationWorkflow = this.methodModuleFactory.createTransactionConfirmationWorkflow(); - return new ContractDeployMethod( this.utils, this.formatters, - transactionConfirmationWorkflow, - new SendRawTransactionMethod(this.utils, this.formatters, transactionConfirmationWorkflow), - new ChainIdMethod(this.utils, this.formatters), - new GetTransactionCountMethod(this.utils, this.formatters), - contract + contract, + new TransactionObserver( + contract.currentProvider, + this.getTransactionObserverTimeout(contract), + contract.transactionConfirmationBlocks, + new GetTransactionReceiptMethod(this.utils, this.formatters, contract), + new GetBlockByHashMethod(this.utils, this.formatters, contract), + new NewHeadsSubscription(this.utils, this.formatters, contract) + ), + new ChainIdMethod(this.utils, this.formatters, contract), + new GetTransactionCountMethod(this.utils, this.formatters, contract), + new SendRawTransactionMethod(this.utils, this.formatters, contract) ); } @@ -185,9 +209,31 @@ export default class MethodFactory { * * @method createEstimateGasMethod * + * @param {AbstractContract} contract + * * @returns {EstimateGasMethod} */ - createEstimateGasMethod() { - return new EstimateGasMethod(this.utils, this.formatters); + createEstimateGasMethod(contract) { + return new EstimateGasMethod(this.utils, this.formatters, contract); + } + + /** + * Returns the correct timeout value based on the provider type + * + * @method getTransactionObserverTimeout + * + * @param {AbstractContract} contract + * + * @returns {Number} + */ + getTransactionObserverTimeout(contract) { + let timeout = contract.transactionBlockTimeout; + const providerName = contract.currentProvider.constructor.name; + + if (providerName === 'HttpProvider' || providerName === 'CustomProvider') { + timeout = contract.transactionPollingTimeout; + } + + return timeout; } } diff --git a/packages/web3-eth-contract/src/index.js b/packages/web3-eth-contract/src/index.js index ab1b1fce78f..af705913d92 100644 --- a/packages/web3-eth-contract/src/index.js +++ b/packages/web3-eth-contract/src/index.js @@ -21,17 +21,16 @@ */ import * as Utils from 'web3-utils'; -import {ProvidersModuleFactory} from 'web3-providers'; import {formatters} from 'web3-core-helpers'; import {AbiCoder} from 'web3-eth-abi'; -import {MethodModuleFactory} from 'web3-core-method'; import ContractModuleFactory from './factories/ContractModuleFactory'; export AbstractContract from './AbstractContract'; export ContractModuleFactory from './factories/ContractModuleFactory'; /** - * TODO: Remove ContractModuleFactory and resolve dependencies here + * TODO: Improve this factory method for the TransactionSigner handling. + * * Returns an object of type Contract * * @method Contract @@ -47,11 +46,11 @@ export ContractModuleFactory from './factories/ContractModuleFactory'; * @constructor */ export const Contract = (provider, abi, accounts, address, options) => { - return new ContractModuleFactory( - Utils, - formatters, - new AbiCoder(), + return new ContractModuleFactory(Utils, formatters, new AbiCoder(), accounts).createContract( + provider, accounts, - new MethodModuleFactory() - ).createContract(provider, new ProvidersModuleFactory(), accounts, abi, address, options); + abi, + address, + options + ); }; diff --git a/packages/web3-eth-contract/src/methods/AllPastEventLogsMethod.js b/packages/web3-eth-contract/src/methods/AllPastEventLogsMethod.js index 603cbacd240..ce89dc4310e 100644 --- a/packages/web3-eth-contract/src/methods/AllPastEventLogsMethod.js +++ b/packages/web3-eth-contract/src/methods/AllPastEventLogsMethod.js @@ -26,14 +26,15 @@ export default class AllPastEventLogsMethod extends GetPastLogsMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * @param {AllEventsLogDecoder} allEventsLogDecoder * @param {AbiModel} abiModel * @param {AllEventsOptionsMapper} allEventsOptionsMapper * * @constructor */ - constructor(utils, formatters, allEventsLogDecoder, abiModel, allEventsOptionsMapper) { - super(utils, formatters); + constructor(utils, formatters, moduleInstance, allEventsLogDecoder, abiModel, allEventsOptionsMapper) { + super(utils, formatters, moduleInstance); this.abiModel = abiModel; this.allEventsLogDecoder = allEventsLogDecoder; this.allEventsOptionsMapper = allEventsOptionsMapper; diff --git a/packages/web3-eth-contract/src/methods/CallContractMethod.js b/packages/web3-eth-contract/src/methods/CallContractMethod.js index 8646ad1e391..eea40abc975 100644 --- a/packages/web3-eth-contract/src/methods/CallContractMethod.js +++ b/packages/web3-eth-contract/src/methods/CallContractMethod.js @@ -26,13 +26,14 @@ export default class CallContractMethod extends CallMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * @param {AbiCoder} abiCoder * @param {AbiItemModel} abiItemModel * * @constructor */ - constructor(utils, formatters, abiCoder, abiItemModel) { - super(utils, formatters); + constructor(utils, formatters, moduleInstance, abiCoder, abiItemModel) { + super(utils, formatters, moduleInstance); this.abiCoder = abiCoder; this.abiItemModel = abiItemModel; } diff --git a/packages/web3-eth-contract/src/methods/ContractDeployMethod.js b/packages/web3-eth-contract/src/methods/ContractDeployMethod.js index 799f081d3f6..fe7769ab949 100644 --- a/packages/web3-eth-contract/src/methods/ContractDeployMethod.js +++ b/packages/web3-eth-contract/src/methods/ContractDeployMethod.js @@ -20,39 +20,38 @@ * @date 2018 */ -import {SendTransactionMethod} from 'web3-core-method'; +import {EthSendTransactionMethod} from 'web3-core-method'; -export default class ContractDeployMethod extends SendTransactionMethod { +export default class ContractDeployMethod extends EthSendTransactionMethod { /** * @param {Utils} utils * @param {Object} formatters - * @param {TransactionConfirmationWorkflow} transactionConfirmationWorkflow - * @param {SendRawTransactionMethod} sendRawTransactionMethod + * @param {AbstractWeb3Module} moduleInstance + * @param {TransactionObserver} transactionObserver * @param {ChainIdMethod} chainIdMethod * @param {GetTransactionCountMethod} getTransactionCountMethod - * @param {AbstractContract} contract + * @param {SendRawTransactionMethod} sendRawTransactionMethod * * @constructor */ constructor( utils, formatters, - transactionConfirmationWorkflow, - sendRawTransactionMethod, + moduleInstance, + transactionObserver, chainIdMethod, getTransactionCountMethod, - contract + sendRawTransactionMethod ) { super( utils, formatters, - transactionConfirmationWorkflow, - sendRawTransactionMethod, + moduleInstance, + transactionObserver, chainIdMethod, - getTransactionCountMethod + getTransactionCountMethod, + sendRawTransactionMethod ); - - this.contract = contract; } /** @@ -77,7 +76,7 @@ export default class ContractDeployMethod extends SendTransactionMethod { * @returns {AbstractContract} */ afterExecution(response) { - const clonedContract = this.contract.clone(); + const clonedContract = this.moduleInstance.clone(); clonedContract.address = response.contractAddress; return clonedContract; diff --git a/packages/web3-eth-contract/src/methods/PastEventLogsMethod.js b/packages/web3-eth-contract/src/methods/PastEventLogsMethod.js index 3175434f9ae..a770debd680 100644 --- a/packages/web3-eth-contract/src/methods/PastEventLogsMethod.js +++ b/packages/web3-eth-contract/src/methods/PastEventLogsMethod.js @@ -26,14 +26,15 @@ export default class PastEventLogsMethod extends GetPastLogsMethod { /** * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * @param {EventLogDecoder} eventLogDecoder * @param {AbiItemModel} abiItemModel * @param {EventOptionsMapper} eventOptionsMapper * * @constructor */ - constructor(utils, formatters, eventLogDecoder, abiItemModel, eventOptionsMapper) { - super(utils, formatters); + constructor(utils, formatters, moduleInstance, eventLogDecoder, abiItemModel, eventOptionsMapper) { + super(utils, formatters, moduleInstance); this.abiItemModel = abiItemModel; this.eventLogDecoder = eventLogDecoder; this.eventOptionsMapper = eventOptionsMapper; diff --git a/packages/web3-eth-contract/src/methods/SendContractMethod.js b/packages/web3-eth-contract/src/methods/SendContractMethod.js index d938ae6fe5c..9ac856bb9f4 100644 --- a/packages/web3-eth-contract/src/methods/SendContractMethod.js +++ b/packages/web3-eth-contract/src/methods/SendContractMethod.js @@ -21,16 +21,17 @@ */ import isArray from 'lodash/isArray'; -import {SendTransactionMethod} from 'web3-core-method'; +import {EthSendTransactionMethod} from 'web3-core-method'; -export default class SendContractMethod extends SendTransactionMethod { +export default class SendContractMethod extends EthSendTransactionMethod { /** * @param {Utils} utils * @param {Object} formatters - * @param {TransactionConfirmationWorkflow} transactionConfirmationWorkflow - * @param {SendRawTransactionMethod} sendRawTransactionMethod + * @param {AbstractWeb3Module} moduleInstance + * @param {TransactionObserver} transactionObserver * @param {ChainIdMethod} chainIdMethod * @param {GetTransactionCountMethod} getTransactionCountMethod + * @param {SendRawTransactionMethod} sendRawTransactionMethod * @param {AllEventsLogDecoder} allEventsLogDecoder * @param {AbiModel} abiModel * @@ -39,20 +40,22 @@ export default class SendContractMethod extends SendTransactionMethod { constructor( utils, formatters, - transactionConfirmationWorkflow, - sendRawTransactionMethod, + moduleInstance, + transactionObserver, chainIdMethod, getTransactionCountMethod, + sendRawTransactionMethod, allEventsLogDecoder, abiModel ) { super( utils, formatters, - transactionConfirmationWorkflow, - sendRawTransactionMethod, + moduleInstance, + transactionObserver, chainIdMethod, - getTransactionCountMethod + getTransactionCountMethod, + sendRawTransactionMethod ); this.allEventsLogDecoder = allEventsLogDecoder; diff --git a/packages/web3-eth-contract/src/models/AbiItemModel.js b/packages/web3-eth-contract/src/models/AbiItemModel.js index 303e5c9f549..9bc3bf33ddb 100644 --- a/packages/web3-eth-contract/src/models/AbiItemModel.js +++ b/packages/web3-eth-contract/src/models/AbiItemModel.js @@ -102,25 +102,6 @@ export default class AbiItemModel { return []; } - /** - * Checks if the given parameter array length matches the abiItem inputs length - * - * @method givenParametersLengthIsValid - * - * @returns {Error|Boolean} - */ - givenParametersLengthIsValid() { - const inputLength = this.getInputLength(); - - if (this.contractMethodParameters.length === inputLength) { - return true; - } - - throw new Error( - `The number of arguments is not matching the methods required number. You need to pass ${inputLength} arguments.` - ); - } - /** * Returns the indexed input of this abiItem * diff --git a/packages/web3-eth-contract/src/proxies/MethodsProxy.js b/packages/web3-eth-contract/src/proxies/MethodsProxy.js index 5e3e29a971b..87605aba749 100644 --- a/packages/web3-eth-contract/src/proxies/MethodsProxy.js +++ b/packages/web3-eth-contract/src/proxies/MethodsProxy.js @@ -20,7 +20,7 @@ * @date 2018 */ -import {PromiEvent} from 'web3-core-promievent'; +import {PromiEvent} from 'web3-core-method'; import isArray from 'lodash/isArray'; import isFunction from 'lodash/isFunction'; @@ -54,7 +54,6 @@ export default class MethodsProxy { get: (target, name) => { if (this.contract.abiModel.hasMethod(name)) { let abiItemModel = this.contract.abiModel.getMethod(name); - let requestType = abiItemModel.requestType; // TODO: Improve the requestType detection and defining of the call/send method. @@ -92,23 +91,18 @@ export default class MethodsProxy { // If there exists more than one method with this name then find the correct abiItemModel if (isArray(abiItemModel)) { const abiItemModelFound = abiItemModel.some((model) => { - model.contractMethodParameters = methodArguments; + if (model.getInputLength() === methodArguments.length) { + abiItemModel = model; - try { - model.givenParametersLengthIsValid(); - } catch (error) { - return false; + return true; } - abiItemModel = model; - return true; + return false; }); if (!abiItemModelFound) { throw new Error(`Methods with name "${name}" found but the given parameters are wrong`); } - - return anonymousFunction; } abiItemModel.contractMethodParameters = methodArguments; @@ -154,7 +148,7 @@ export default class MethodsProxy { * @param {IArguments} methodArguments * @param {String} requestType * - * @returns {Promise|PromiEvent|String|Boolean} + * @returns {Promise|PromiEvent} */ executeMethod(abiItemModel, methodArguments, requestType) { let method; @@ -165,25 +159,19 @@ export default class MethodsProxy { const promiEvent = new PromiEvent(); method = this.methodFactory.createMethodByRequestType(abiItemModel, this.contract, requestType); - method.arguments = methodArguments; - - promiEvent.reject(error); - promiEvent.emit('error', error); + method.setArguments(methodArguments); if (isFunction(method.callback)) { method.callback(error, null); } - return promiEvent; - } + promiEvent.reject(error); + promiEvent.emit('error', error); - if (requestType === 'call' || requestType === 'estimate') { - return method.execute(this.contract); + return promiEvent; } - // TODO: The promiEvent will just be used for send methods I could move this logic directly to the AbstractSendMethod - // TODO: Because of this I could remove the promievent module because it's just used in the SendTransaction- & SendRawTransaction method. - return method.execute(this.contract, new PromiEvent()); + return method.execute(); } /** @@ -196,11 +184,9 @@ export default class MethodsProxy { * @returns {AbstractMethod} */ createMethod(abiItemModel, methodArguments, requestType) { - abiItemModel.givenParametersLengthIsValid(); - // Get correct rpc method model const method = this.methodFactory.createMethodByRequestType(abiItemModel, this.contract, requestType); - method.arguments = methodArguments; + method.setArguments(methodArguments); // If no parameters are given for the eth_call or eth_send* methods then it will set a empty options object. if (typeof method.parameters[0] === 'undefined') { diff --git a/packages/web3-eth-contract/tests/__mocks__/TransactionConfirmationWorkflow.js b/packages/web3-eth-contract/tests/__mocks__/TransactionConfirmationWorkflow.js deleted file mode 100644 index b43a2a3c596..00000000000 --- a/packages/web3-eth-contract/tests/__mocks__/TransactionConfirmationWorkflow.js +++ /dev/null @@ -1,3 +0,0 @@ -export default class TransactionConfirmationWorkflow { - constructor() {} -} diff --git a/packages/web3-eth-contract/tests/src/AbstractContractTest.js b/packages/web3-eth-contract/tests/src/AbstractContractTest.js index ba931ca50fa..2fae2da1d3c 100644 --- a/packages/web3-eth-contract/tests/src/AbstractContractTest.js +++ b/packages/web3-eth-contract/tests/src/AbstractContractTest.js @@ -1,31 +1,23 @@ import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; import {AbiCoder} from 'web3-eth-abi'; -import {HttpProvider, ProvidersModuleFactory, ProviderDetector, ProviderResolver} from 'web3-providers'; -import {MethodModuleFactory, GetPastLogsMethod} from 'web3-core-method'; import {AbstractWeb3Module} from 'web3-core'; import AbiMapper from '../../src/mappers/AbiMapper'; -import ContractModuleFactory from '../../src/factories/ContractModuleFactory'; -import MethodFactory from '../../src/factories/MethodFactory'; import AbiModel from '../../src/models/AbiModel'; import MethodsProxy from '../../src/proxies/MethodsProxy'; +import MethodFactory from '../../src/factories/MethodFactory'; +import ContractModuleFactory from '../../src/factories/ContractModuleFactory'; import EventLogSubscription from '../../src/subscriptions/EventLogSubscription'; import EventSubscriptionsProxy from '../../src/proxies/EventSubscriptionsProxy'; import AbstractContract from '../../src/AbstractContract'; // Mocks -jest.mock('HttpProvider'); -jest.mock('ProvidersModuleFactory'); -jest.mock('ProviderDetector'); -jest.mock('ProviderResolver'); -jest.mock('MethodModuleFactory'); -jest.mock('GetPastLogsMethod'); jest.mock('AbiCoder'); -jest.mock('../../src/mappers/AbiMapper'); -jest.mock('../../src/factories/ContractModuleFactory'); -jest.mock('../../src/factories/MethodFactory'); jest.mock('../../src/models/AbiModel'); +jest.mock('../../src/mappers/AbiMapper'); jest.mock('../../src/proxies/MethodsProxy'); +jest.mock('../../src/factories/MethodFactory'); +jest.mock('../../src/factories/ContractModuleFactory'); jest.mock('../../src/proxies/EventSubscriptionsProxy'); jest.mock('../../src/subscriptions/EventLogSubscription'); @@ -34,9 +26,6 @@ jest.mock('../../src/subscriptions/EventLogSubscription'); */ describe('AbstractContractTest', () => { let abstractContract, - providerMock, - providersModuleFactoryMock, - methodModuleFactoryMock, contractModuleFactoryMock, abiCoderMock, abiMapperMock, @@ -44,21 +33,10 @@ describe('AbstractContractTest', () => { abiModelMock, methodsProxyMock, eventSubscriptionsProxyMock, - providerDetectorMock, - providerResolverMock, abi, options; beforeEach(() => { - new HttpProvider(); - providerMock = HttpProvider.mock.instances[0]; - - new ProvidersModuleFactory(); - providersModuleFactoryMock = ProvidersModuleFactory.mock.instances[0]; - - new MethodModuleFactory(); - methodModuleFactoryMock = MethodModuleFactory.mock.instances[0]; - new ContractModuleFactory(); contractModuleFactoryMock = ContractModuleFactory.mock.instances[0]; @@ -68,9 +46,6 @@ describe('AbstractContractTest', () => { new AbiMapper(); abiMapperMock = AbiMapper.mock.instances[0]; - new MethodFactory(); - methodFactoryMock = MethodFactory.mock.instances[0]; - new AbiModel(); abiModelMock = AbiModel.mock.instances[0]; @@ -80,27 +55,12 @@ describe('AbstractContractTest', () => { new EventSubscriptionsProxy(); eventSubscriptionsProxyMock = EventSubscriptionsProxy.mock.instances[0]; - new ProviderDetector(); - providerDetectorMock = ProviderDetector.mock.instances[0]; - - new ProviderResolver(); - providerResolverMock = ProviderResolver.mock.instances[0]; + new MethodFactory(); + methodFactoryMock = MethodFactory.mock.instances[0]; abi = []; options = {transactionSigner: {}}; - providerDetectorMock.detect = jest.fn(() => { - return null; - }); - - providerResolverMock.resolve = jest.fn(() => { - return providerMock; - }); - - providersModuleFactoryMock.createProviderDetector.mockReturnValueOnce(providerDetectorMock); - - providersModuleFactoryMock.createProviderResolver.mockReturnValueOnce(providerResolverMock); - contractModuleFactoryMock.createAbiMapper.mockReturnValueOnce(abiMapperMock); contractModuleFactoryMock.createMethodFactory.mockReturnValueOnce(methodFactoryMock); @@ -112,9 +72,7 @@ describe('AbstractContractTest', () => { abiMapperMock.map.mockReturnValueOnce(abiModelMock); abstractContract = new AbstractContract( - providerMock, - providersModuleFactoryMock, - methodModuleFactoryMock, + 'http://localhost:8545', contractModuleFactoryMock, {}, abiCoderMock, @@ -207,9 +165,8 @@ describe('AbstractContractTest', () => { abiModelMock.getEvent.mockReturnValueOnce({}); - new GetPastLogsMethod(); - const getPastLogsMethodMock = GetPastLogsMethod.mock.instances[0]; - + const getPastLogsMethodMock = {}; + getPastLogsMethodMock.execute = jest.fn(); getPastLogsMethodMock.execute.mockReturnValueOnce(Promise.resolve(true)); methodFactoryMock.createPastEventLogsMethod.mockReturnValueOnce(getPastLogsMethodMock); @@ -220,9 +177,9 @@ describe('AbstractContractTest', () => { expect(abiModelMock.getEvent).toHaveBeenCalledWith('eventName'); - expect(getPastLogsMethodMock.execute).toHaveBeenCalledWith(abstractContract); + expect(getPastLogsMethodMock.execute).toHaveBeenCalled(); - expect(methodFactoryMock.createPastEventLogsMethod).toHaveBeenCalledWith({}); + expect(methodFactoryMock.createPastEventLogsMethod).toHaveBeenCalledWith({}, abstractContract); expect(getPastLogsMethodMock.parameters).toEqual([{}]); @@ -230,18 +187,17 @@ describe('AbstractContractTest', () => { }); it('calls getPastEvents with "allEvents" and returns a resolved promise', async () => { - new GetPastLogsMethod(); - const getPastLogsMethodMock = GetPastLogsMethod.mock.instances[0]; - + const getPastLogsMethodMock = {}; + getPastLogsMethodMock.execute = jest.fn(); getPastLogsMethodMock.execute.mockReturnValueOnce(Promise.resolve(true)); methodFactoryMock.createAllPastEventLogsMethod.mockReturnValueOnce(getPastLogsMethodMock); await expect(abstractContract.getPastEvents('allEvents', {}, () => {})).resolves.toEqual(true); - expect(getPastLogsMethodMock.execute).toHaveBeenCalledWith(abstractContract); + expect(getPastLogsMethodMock.execute).toHaveBeenCalled(); - expect(methodFactoryMock.createAllPastEventLogsMethod).toHaveBeenCalledWith(abiModelMock); + expect(methodFactoryMock.createAllPastEventLogsMethod).toHaveBeenCalledWith(abiModelMock, abstractContract); expect(getPastLogsMethodMock.parameters).toEqual([{}]); @@ -275,7 +231,6 @@ describe('AbstractContractTest', () => { expect(contractModuleFactoryMock.createContract).toHaveBeenCalledWith( abstractContract.currentProvider, - abstractContract.providersModuleFactory, abstractContract.accounts, [], '', diff --git a/packages/web3-eth-contract/tests/src/factories/ContractModuleFactoryTest.js b/packages/web3-eth-contract/tests/src/factories/ContractModuleFactoryTest.js index bf981ecff19..d888d9ecf91 100644 --- a/packages/web3-eth-contract/tests/src/factories/ContractModuleFactoryTest.js +++ b/packages/web3-eth-contract/tests/src/factories/ContractModuleFactoryTest.js @@ -1,6 +1,4 @@ import {AbiCoder} from 'web3-eth-abi'; -import {MethodModuleFactory} from 'web3-core-method'; -import {Accounts} from 'web3-eth-accounts'; import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; @@ -25,8 +23,6 @@ import ContractModuleFactory from '../../../src/factories/ContractModuleFactory' // Mocks jest.mock('AbiCoder'); -jest.mock('MethodModuleFactory'); -jest.mock('Accounts'); jest.mock('Utils'); jest.mock('formatters'); jest.mock('../../../src/validators/MethodOptionsValidator'); @@ -51,25 +47,13 @@ jest.mock('../../../src/factories/MethodFactory'); * ContractModuleFactory test */ describe('ContractModuleFactoryTest', () => { - let contractModuleFactory, abiCoderMock, accountsMock, methodModuleFactoryMock; + let contractModuleFactory, abiCoderMock; beforeEach(() => { new AbiCoder(); abiCoderMock = AbiCoder.mock.instances[0]; - new Accounts({}, {}); - accountsMock = Accounts.mock.instances[0]; - - new MethodModuleFactory(); - methodModuleFactoryMock = MethodModuleFactory.mock.instances[0]; - - contractModuleFactory = new ContractModuleFactory( - Utils, - formatters, - abiCoderMock, - accountsMock, - methodModuleFactoryMock - ); + contractModuleFactory = new ContractModuleFactory(Utils, formatters, abiCoderMock); }); it('constructor check', () => { @@ -78,10 +62,6 @@ describe('ContractModuleFactoryTest', () => { expect(contractModuleFactory.formatters).toEqual(formatters); expect(contractModuleFactory.abiCoder).toEqual(abiCoderMock); - - expect(contractModuleFactory.accounts).toEqual(accountsMock); - - expect(contractModuleFactory.methodModuleFactory).toEqual(methodModuleFactoryMock); }); it('calls createContract and returns an AbstractContract object', () => { diff --git a/packages/web3-eth-contract/tests/src/factories/MethodFactoryTest.js b/packages/web3-eth-contract/tests/src/factories/MethodFactoryTest.js index e2e63da9faa..e3c339dd1a6 100644 --- a/packages/web3-eth-contract/tests/src/factories/MethodFactoryTest.js +++ b/packages/web3-eth-contract/tests/src/factories/MethodFactoryTest.js @@ -1,4 +1,4 @@ -import {MethodModuleFactory, EstimateGasMethod} from 'web3-core-method'; +import {EstimateGasMethod} from 'web3-core-method'; import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; import {AbiCoder} from 'web3-eth-abi'; @@ -15,8 +15,6 @@ import AllPastEventLogsMethod from '../../../src/methods/AllPastEventLogsMethod' jest.mock('Accounts'); jest.mock('Utils'); jest.mock('formatters'); -jest.mock('MethodModuleFactory'); -jest.mock('EstimateGasMethod'); jest.mock('AbiCoder'); jest.mock('../../../src/factories/ContractModuleFactory'); jest.mock('../../../src/methods/CallContractMethod'); @@ -29,26 +27,16 @@ jest.mock('../../../src/methods/AllPastEventLogsMethod'); * MethodFactory test */ describe('MethodFactoryTest', () => { - let methodFactory, contractModuleFactoryMock, methodModuleFactoryMock, abiCoderMock; + let methodFactory, contractModuleFactoryMock, abiCoderMock; beforeEach(() => { - new MethodModuleFactory(); - methodModuleFactoryMock = MethodModuleFactory.mock.instances[0]; - methodModuleFactoryMock.createTransactionConfirmationWorkflow = jest.fn(); - - new ContractModuleFactory({}, {}, {}, {}, {}); + new ContractModuleFactory({}, {}, {}); contractModuleFactoryMock = ContractModuleFactory.mock.instances[0]; new AbiCoder(); abiCoderMock = AbiCoder.mock.instances[0]; - methodFactory = new MethodFactory( - Utils, - formatters, - contractModuleFactoryMock, - methodModuleFactoryMock, - abiCoderMock - ); + methodFactory = new MethodFactory(Utils, formatters, contractModuleFactoryMock, abiCoderMock); }); it('constructor check', () => { @@ -57,8 +45,6 @@ describe('MethodFactoryTest', () => { expect(methodFactory.formatters).toEqual(formatters); expect(methodFactory.contractModuleFactory).toEqual(contractModuleFactoryMock); - - expect(methodFactory.methodModuleFactory).toEqual(methodModuleFactoryMock); }); it('calls createMethodByRequestType with requestType call', () => { @@ -66,7 +52,15 @@ describe('MethodFactoryTest', () => { }); it('calls createMethodByRequestType with requestType send', () => { - expect(methodFactory.createMethodByRequestType({}, {}, 'send')).toBeInstanceOf(SendContractMethod); + const contract = {currentProvider: {constructor: {name: 'HttpProvider'}}}; + + expect(methodFactory.createMethodByRequestType({}, contract, 'send')).toBeInstanceOf(SendContractMethod); + }); + + it('calls createMethodByRequestType with requestType send and a socketProvider', () => { + const contract = {currentProvider: {constructor: {name: 'WebsocketProvider'}}}; + + expect(methodFactory.createMethodByRequestType({}, contract, 'send')).toBeInstanceOf(SendContractMethod); }); it('calls createMethodByRequestType with requestType estimate', () => { @@ -74,7 +68,9 @@ describe('MethodFactoryTest', () => { }); it('calls createMethodByRequestType with requestType contract-deployment', () => { - expect(methodFactory.createMethodByRequestType({}, {}, 'contract-deployment')).toBeInstanceOf( + const contract = {currentProvider: {constructor: {name: 'WebsocketProvider'}}}; + + expect(methodFactory.createMethodByRequestType({}, contract, 'contract-deployment')).toBeInstanceOf( ContractDeployMethod ); }); @@ -102,17 +98,17 @@ describe('MethodFactoryTest', () => { }); it('calls createSendContractMethod and returns SendContractMethod object', () => { - expect(methodFactory.createSendContractMethod({})).toBeInstanceOf(SendContractMethod); + const contract = {currentProvider: {constructor: {name: 'HttpProvider'}}}; - expect(contractModuleFactoryMock.createAllEventsLogDecoder).toHaveBeenCalled(); + expect(methodFactory.createSendContractMethod(contract)).toBeInstanceOf(SendContractMethod); - expect(methodModuleFactoryMock.createTransactionConfirmationWorkflow).toHaveBeenCalled(); + expect(contractModuleFactoryMock.createAllEventsLogDecoder).toHaveBeenCalled(); }); it('calls createContractDeployMethod and returns ContractDeployMethod object', () => { - expect(methodFactory.createContractDeployMethod({})).toBeInstanceOf(ContractDeployMethod); + const contract = {currentProvider: {constructor: {name: 'HttpProvider'}}}; - expect(methodModuleFactoryMock.createTransactionConfirmationWorkflow).toHaveBeenCalled(); + expect(methodFactory.createContractDeployMethod(contract)).toBeInstanceOf(ContractDeployMethod); }); it('calls createEstimateGasMethod and returns EstimateGasMethod object', () => { diff --git a/packages/web3-eth-contract/tests/src/methods/AllPastEventLogsMethodTest.js b/packages/web3-eth-contract/tests/src/methods/AllPastEventLogsMethodTest.js index 886020ec2d7..122cfedaa03 100644 --- a/packages/web3-eth-contract/tests/src/methods/AllPastEventLogsMethodTest.js +++ b/packages/web3-eth-contract/tests/src/methods/AllPastEventLogsMethodTest.js @@ -34,6 +34,7 @@ describe('AllPastEventLogsMethodTest', () => { allPastEventLogsMethod = new AllPastEventLogsMethod( Utils, formatters, + {}, allEventsLogDecoderMock, abiModelMock, allEventsOptionsMapperMock @@ -41,10 +42,6 @@ describe('AllPastEventLogsMethodTest', () => { }); it('constructor check', () => { - expect(allPastEventLogsMethod.utils).toEqual(Utils); - - expect(allPastEventLogsMethod.formatters).toEqual(formatters); - expect(allPastEventLogsMethod.allEventsLogDecoder).toEqual(allEventsLogDecoderMock); expect(allPastEventLogsMethod.abiModel).toEqual(abiModelMock); @@ -68,6 +65,24 @@ describe('AllPastEventLogsMethodTest', () => { expect(formatters.inputLogFormatter).toHaveBeenCalledWith({}); }); + it('calls beforeExecution with the filter property and executes the expected methods', () => { + new AbstractContract(); + const contractMock = AbstractContract.mock.instances[0]; + + allEventsOptionsMapperMock.map.mockReturnValueOnce({mapped: true, filter: true}); + + formatters.inputLogFormatter.mockReturnValueOnce({options: true}); + + allPastEventLogsMethod.parameters = [{}]; + allPastEventLogsMethod.beforeExecution(contractMock); + + expect(allEventsOptionsMapperMock.map).toHaveBeenCalledWith(abiModelMock, contractMock, {options: true}); + + expect(formatters.inputLogFormatter).toHaveBeenCalledWith({}); + + expect(allPastEventLogsMethod.parameters[0].filter).toBeUndefined(); + }); + it('calls afterExecution and returns the expected result', () => { const response = [false, false, false]; diff --git a/packages/web3-eth-contract/tests/src/methods/CallContractMethodTest.js b/packages/web3-eth-contract/tests/src/methods/CallContractMethodTest.js index 21d7fe94484..e7b6bb75f71 100644 --- a/packages/web3-eth-contract/tests/src/methods/CallContractMethodTest.js +++ b/packages/web3-eth-contract/tests/src/methods/CallContractMethodTest.js @@ -1,13 +1,9 @@ -import * as Utils from 'web3-utils'; -import {formatters} from 'web3-core-helpers'; import {AbiCoder} from 'web3-eth-abi'; import {CallMethod} from 'web3-core-method'; import AbiItemModel from '../../../src/models/AbiItemModel'; import CallContractMethod from '../../../src/methods/CallContractMethod'; // Mocks -jest.mock('Utils'); -jest.mock('formatters'); jest.mock('AbiCoder'); jest.mock('../../../src/models/AbiItemModel'); @@ -24,13 +20,11 @@ describe('CallContractMethodTest', () => { new AbiItemModel(); abiItemModelMock = AbiItemModel.mock.instances[0]; - callContractMethod = new CallContractMethod(Utils, formatters, abiCoderMock, abiItemModelMock); + callContractMethod = new CallContractMethod({}, {}, {}, abiCoderMock, abiItemModelMock); }); it('constructor check', () => { - expect(callContractMethod.utils).toEqual(Utils); - - expect(callContractMethod.formatters).toEqual(formatters); + expect(callContractMethod.abiCoder).toEqual(abiCoderMock); expect(callContractMethod.abiItemModel).toEqual(abiItemModelMock); diff --git a/packages/web3-eth-contract/tests/src/methods/ContractDeployMethodTest.js b/packages/web3-eth-contract/tests/src/methods/ContractDeployMethodTest.js index 36a6a34e057..8491b59e5da 100644 --- a/packages/web3-eth-contract/tests/src/methods/ContractDeployMethodTest.js +++ b/packages/web3-eth-contract/tests/src/methods/ContractDeployMethodTest.js @@ -1,69 +1,34 @@ -import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; -import { - ChainIdMethod, - GetTransactionCountMethod, - SendRawTransactionMethod, - SendTransactionMethod -} from 'web3-core-method'; -import TransactionConfirmationWorkflow from '../../__mocks__/TransactionConfirmationWorkflow'; +import {EthSendTransactionMethod} from 'web3-core-method'; import AbstractContract from '../../../src/AbstractContract'; import ContractDeployMethod from '../../../src/methods/ContractDeployMethod'; // Mocks -jest.mock('Utils'); jest.mock('formatters'); -jest.mock('SendRawTransactionMethod'); -jest.mock('ChainIdMethod'); -jest.mock('GetTransactionCountMethod'); jest.mock('../../../src/AbstractContract'); /** * ContractDeployMethod test */ describe('ContractDeployMethodTest', () => { - let contractDeployMethod, - transactionConfirmationWorkflowMock, - contractMock, - sendRawTransactionMethodMock, - chainIdMethodMock, - getTransactionCountMethodMock; + let contractDeployMethod, contractMock; beforeEach(() => { new AbstractContract(); contractMock = AbstractContract.mock.instances[0]; - new SendRawTransactionMethod(); - sendRawTransactionMethodMock = SendRawTransactionMethod.mock.instances[0]; - - new ChainIdMethod(); - chainIdMethodMock = ChainIdMethod.mock.instances[0]; - - new GetTransactionCountMethod(); - getTransactionCountMethodMock = GetTransactionCountMethod.mock.instances[0]; - - transactionConfirmationWorkflowMock = new TransactionConfirmationWorkflow(); - - contractDeployMethod = new ContractDeployMethod( - Utils, - formatters, - transactionConfirmationWorkflowMock, - sendRawTransactionMethodMock, - chainIdMethodMock, - getTransactionCountMethodMock, - contractMock - ); + contractDeployMethod = new ContractDeployMethod({}, formatters, contractMock, {}, {}, {}, {}); }); it('constructor check', () => { - expect(contractDeployMethod.contract).toEqual(contractMock); - - expect(contractDeployMethod).toBeInstanceOf(SendTransactionMethod); + expect(contractDeployMethod).toBeInstanceOf(EthSendTransactionMethod); }); it('calls beforeExecution and removes the to property from the options', () => { contractDeployMethod.parameters = [{to: true}]; + formatters.inputTransactionFormatter.mockReturnValueOnce([{to: true}]); + contractDeployMethod.beforeExecution(contractMock); expect(contractDeployMethod.parameters[0].to).toBeUndefined(); diff --git a/packages/web3-eth-contract/tests/src/methods/PastEventLogsMethodTest.js b/packages/web3-eth-contract/tests/src/methods/PastEventLogsMethodTest.js index 6016c3ec13d..ab5901b69fd 100644 --- a/packages/web3-eth-contract/tests/src/methods/PastEventLogsMethodTest.js +++ b/packages/web3-eth-contract/tests/src/methods/PastEventLogsMethodTest.js @@ -1,4 +1,3 @@ -import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; import {GetPastLogsMethod} from 'web3-core-method'; import EventLogDecoder from '../../../src/decoders/EventLogDecoder'; @@ -8,7 +7,6 @@ import AbstractContract from '../../../src/AbstractContract'; import PastEventLogsMethod from '../../../src/methods/PastEventLogsMethod'; // Mocks -jest.mock('Utils'); jest.mock('formatters'); jest.mock('../../../src/decoders/EventLogDecoder'); jest.mock('../../../src/models/AbiItemModel'); @@ -32,8 +30,9 @@ describe('PastEventLogsMethodTest', () => { eventOptionsMapperMock = EventOptionsMapper.mock.instances[0]; pastEventLogsMethod = new PastEventLogsMethod( - Utils, + {}, formatters, + {}, eventLogDecoderMock, abiItemModelMock, eventOptionsMapperMock @@ -41,17 +40,33 @@ describe('PastEventLogsMethodTest', () => { }); it('constructor check', () => { - expect(pastEventLogsMethod.utils).toEqual(Utils); - - expect(pastEventLogsMethod.formatters).toEqual(formatters); - expect(pastEventLogsMethod.eventLogDecoder).toEqual(eventLogDecoderMock); expect(pastEventLogsMethod.abiItemModel).toEqual(abiItemModelMock); + expect(pastEventLogsMethod.eventOptionsMapper).toEqual(eventOptionsMapperMock); + expect(pastEventLogsMethod).toBeInstanceOf(GetPastLogsMethod); }); + it('calls beforeExecution with filter property and executes the expected methods', () => { + new AbstractContract(); + const contractMock = AbstractContract.mock.instances[0]; + + eventOptionsMapperMock.map.mockReturnValueOnce({mapped: true, filter: true}); + + formatters.inputLogFormatter.mockReturnValueOnce({options: true}); + + pastEventLogsMethod.parameters = [{}]; + pastEventLogsMethod.beforeExecution(contractMock); + + expect(eventOptionsMapperMock.map).toHaveBeenCalledWith(abiItemModelMock, contractMock, {options: true}); + + expect(formatters.inputLogFormatter).toHaveBeenCalledWith({}); + + expect(pastEventLogsMethod.parameters[0].filter).toBeUndefined(); + }); + it('calls beforeExecution and executes the expected methods', () => { new AbstractContract(); const contractMock = AbstractContract.mock.instances[0]; diff --git a/packages/web3-eth-contract/tests/src/methods/SendContractMethodTest.js b/packages/web3-eth-contract/tests/src/methods/SendContractMethodTest.js index dc3482cf45a..3b3c5cc4e55 100644 --- a/packages/web3-eth-contract/tests/src/methods/SendContractMethodTest.js +++ b/packages/web3-eth-contract/tests/src/methods/SendContractMethodTest.js @@ -1,23 +1,9 @@ -import { - SendTransactionMethod, - SendRawTransactionMethod, - ChainIdMethod, - GetTransactionCountMethod -} from 'web3-core-method'; -import * as Utils from 'web3-utils'; -import {formatters} from 'web3-core-helpers'; -import TransactionConfirmationWorkflow from '../../__mocks__/TransactionConfirmationWorkflow'; -import AllEventsLogDecoder from '../../../src/decoders/AllEventsLogDecoder'; +import {EthSendTransactionMethod} from 'web3-core-method'; import AbiModel from '../../../src/models/AbiModel'; +import AllEventsLogDecoder from '../../../src/decoders/AllEventsLogDecoder'; import SendContractMethod from '../../../src/methods/SendContractMethod'; // Mocks -jest.mock('Utils'); -jest.mock('formatters'); -jest.mock('Accounts'); -jest.mock('SendRawTransactionMethod'); -jest.mock('ChainIdMethod'); -jest.mock('GetTransactionCountMethod'); jest.mock('../../../src/decoders/AllEventsLogDecoder'); jest.mock('../../../src/models/AbiItemModel'); jest.mock('../../../src/models/AbiModel'); @@ -26,42 +12,16 @@ jest.mock('../../../src/models/AbiModel'); * SendContractMethod test */ describe('SendContractMethodTest', () => { - let sendContractMethod, - transactionConfirmationWorkflowMock, - allEventsLogDecoderMock, - abiModelMock, - sendRawTransactionMethodMock, - chainIdMethodMock, - getTransactionCountMethodMock; + let sendContractMethod, allEventsLogDecoderMock, abiModelMock; beforeEach(() => { - transactionConfirmationWorkflowMock = new TransactionConfirmationWorkflow(); - new AbiModel(); abiModelMock = AbiModel.mock.instances[0]; new AllEventsLogDecoder(); allEventsLogDecoderMock = AllEventsLogDecoder.mock.instances[0]; - new SendRawTransactionMethod(); - sendRawTransactionMethodMock = SendRawTransactionMethod.mock.instances[0]; - - new ChainIdMethod(); - chainIdMethodMock = ChainIdMethod.mock.instances[0]; - - new GetTransactionCountMethod(); - getTransactionCountMethodMock = GetTransactionCountMethod.mock.instances[0]; - - sendContractMethod = new SendContractMethod( - Utils, - formatters, - transactionConfirmationWorkflowMock, - sendRawTransactionMethodMock, - chainIdMethodMock, - getTransactionCountMethodMock, - allEventsLogDecoderMock, - abiModelMock - ); + sendContractMethod = new SendContractMethod({}, {}, {}, {}, {}, {}, {}, allEventsLogDecoderMock, abiModelMock); }); it('constructor check', () => { @@ -69,7 +29,7 @@ describe('SendContractMethodTest', () => { expect(sendContractMethod.abiModel).toEqual(abiModelMock); - expect(sendContractMethod).toBeInstanceOf(SendTransactionMethod); + expect(sendContractMethod).toBeInstanceOf(EthSendTransactionMethod); }); it('calls afterExecution and returns the expected result', () => { diff --git a/packages/web3-eth-contract/tests/src/models/AbiItemModelTest.js b/packages/web3-eth-contract/tests/src/models/AbiItemModelTest.js index df1b4757ee5..2f41d379e7f 100644 --- a/packages/web3-eth-contract/tests/src/models/AbiItemModelTest.js +++ b/packages/web3-eth-contract/tests/src/models/AbiItemModelTest.js @@ -64,24 +64,6 @@ describe('AbiItemModelTest', () => { expect(abiItemModel.getOutputs()).toEqual([true]); }); - it('calls givenParametersLengthIsValid and returns true', () => { - abiItem.inputs = [true]; - abiItemModel.contractMethodParameters = [true]; - - expect(abiItemModel.givenParametersLengthIsValid()).toEqual(true); - }); - - it('calls givenParametersLengthIsValid and throw an error', () => { - abiItem.inputs = [true]; - abiItemModel.contractMethodParameters = []; - - expect(() => { - abiItemModel.givenParametersLengthIsValid(); - }).toThrow( - 'The number of arguments is not matching the methods required number. You need to pass 1 arguments.' - ); - }); - it('calls getIndexedInputs and returns the expected inputs', () => { abiItem.inputs = [{indexed: true}, {indexed: false}]; diff --git a/packages/web3-eth-contract/tests/src/proxies/MethodsProxyTest.js b/packages/web3-eth-contract/tests/src/proxies/MethodsProxyTest.js index 9bb5e6be11a..ad991d32cf3 100644 --- a/packages/web3-eth-contract/tests/src/proxies/MethodsProxyTest.js +++ b/packages/web3-eth-contract/tests/src/proxies/MethodsProxyTest.js @@ -1,5 +1,3 @@ -import {PromiEvent} from 'web3-core-promievent'; -import {EstimateGasMethod} from 'web3-core-method'; import MethodEncoder from '../../../src/encoders/MethodEncoder'; import MethodFactory from '../../../src/factories/MethodFactory'; import MethodOptionsMapper from '../../../src/mappers/MethodOptionsMapper'; @@ -8,8 +6,6 @@ import AbiModel from '../../../src/models/AbiModel'; import AbstractContract from '../../../src/AbstractContract'; import MethodsProxy from '../../../src/proxies/MethodsProxy'; import AbiItemModel from '../../../src/models/AbiItemModel'; -import CallContractMethod from '../../../src/methods/CallContractMethod'; -import SendContractMethod from '../../../src/methods/SendContractMethod'; // Mocks jest.mock('../../../src/encoders/MethodEncoder'); @@ -19,9 +15,6 @@ jest.mock('../../../src/models/AbiModel'); jest.mock('../../../src/AbstractContract'); jest.mock('../../../src/factories/MethodFactory'); jest.mock('../../../src/models/AbiItemModel'); -jest.mock('../../../src/methods/CallContractMethod'); -jest.mock('../../../src/methods/SendContractMethod'); -jest.mock('EstimateGasMethod'); /** * MethodsProxy test @@ -88,13 +81,10 @@ describe('MethodsProxyTest', () => { abiModelMock.getMethod.mockReturnValueOnce(abiItemModelMock); - new CallContractMethod(); - const callMethodMock = CallContractMethod.mock.instances[0]; + const callMethodMock = {}; callMethodMock.parameters = [{}]; - - callMethodMock.execute = jest.fn((contractInstance) => { - expect(contractInstance).toEqual(contractMock); - + callMethodMock.setArguments = jest.fn(); + callMethodMock.execute = jest.fn(() => { return Promise.resolve(true); }); @@ -112,8 +102,6 @@ describe('MethodsProxyTest', () => { expect(abiItemModelMock.contractMethodParameters[0]).toEqual(true); - expect(abiItemModelMock.givenParametersLengthIsValid).toHaveBeenCalled(); - expect(methodFactoryMock.createMethodByRequestType).toHaveBeenCalledWith( abiItemModelMock, contractMock, @@ -138,15 +126,10 @@ describe('MethodsProxyTest', () => { abiItemModelMock.isOfType.mockReturnValue(true); - new SendContractMethod(); - const sendMethodMock = SendContractMethod.mock.instances[0]; + const sendMethodMock = {}; sendMethodMock.parameters = [{}]; - - sendMethodMock.execute = jest.fn((contractInstance, promiEventInstance) => { - expect(contractInstance).toEqual(contractMock); - - expect(promiEventInstance).toBeInstanceOf(PromiEvent); - + sendMethodMock.setArguments = jest.fn(); + sendMethodMock.execute = jest.fn(() => { return Promise.resolve(true); }); @@ -170,8 +153,6 @@ describe('MethodsProxyTest', () => { expect(abiItemModelMock.contractMethodParameters).toEqual([true]); - expect(abiItemModelMock.givenParametersLengthIsValid).toHaveBeenCalled(); - expect(methodFactoryMock.createMethodByRequestType).toHaveBeenCalledWith( abiItemModelMock, contractMock, @@ -190,19 +171,16 @@ describe('MethodsProxyTest', () => { it('calls a method that exists with different arguments over the proxy', async () => { abiItemModelMock.requestType = 'send'; + abiItemModelMock.getInputLength.mockReturnValueOnce(1); + abiModelMock.hasMethod.mockReturnValueOnce(true); abiModelMock.getMethod.mockReturnValueOnce([abiItemModelMock]); - new SendContractMethod(); - const sendMethodMock = SendContractMethod.mock.instances[0]; + const sendMethodMock = {}; sendMethodMock.parameters = [{}]; - - sendMethodMock.execute = jest.fn((contractInstance, promiEventInstance) => { - expect(contractInstance).toEqual(contractMock); - - expect(promiEventInstance).toBeInstanceOf(PromiEvent); - + sendMethodMock.setArguments = jest.fn(); + sendMethodMock.execute = jest.fn(() => { return Promise.resolve(true); }); @@ -220,8 +198,6 @@ describe('MethodsProxyTest', () => { expect(abiItemModelMock.contractMethodParameters[0]).toEqual(true); - expect(abiItemModelMock.givenParametersLengthIsValid).toHaveBeenCalled(); - expect(methodFactoryMock.createMethodByRequestType).toHaveBeenCalledWith( abiItemModelMock, contractMock, @@ -237,7 +213,7 @@ describe('MethodsProxyTest', () => { expect(methodOptionsValidatorMock.validate).toHaveBeenCalledWith(abiItemModelMock, sendMethodMock); }); - it('calls a method that exists with different arguments but also not with the given and throws an error', async () => { + it('calls a method that exists with different arguments but with a invalid arguments length and throws an error', async () => { abiItemModelMock.requestType = 'send'; abiItemModelMock.givenParametersLengthIsValid = jest.fn(() => { @@ -259,22 +235,21 @@ describe('MethodsProxyTest', () => { expect(abiModelMock.hasMethod).toHaveBeenCalledWith('myMethod'); expect(abiModelMock.getMethod).toHaveBeenCalledWith('myMethod'); - - expect(abiItemModelMock.contractMethodParameters[0]).toEqual({arguments: [true], data: '0x0'}); - - expect(abiItemModelMock.givenParametersLengthIsValid).toHaveBeenCalled(); }); it('calls executeMethod and returns a rejected PromiEvent', async () => { - abiItemModelMock.givenParametersLengthIsValid = jest.fn(() => { - throw new Error('Nope'); - }); - const method = { - callback: jest.fn() + parameters: [], + callback: jest.fn(), + setArguments: jest.fn() }; - methodFactoryMock.createMethodByRequestType.mockReturnValue(method); + methodFactoryMock.createMethodByRequestType.mockReturnValueOnce(method); + methodFactoryMock.createMethodByRequestType.mockReturnValueOnce(method); + + methodEncoderMock.encode = jest.fn(() => { + throw new Error('Nope'); + }); await expect(methodsProxy.executeMethod(abiItemModelMock, [true], 'send')).rejects.toThrow('Nope'); @@ -286,7 +261,7 @@ describe('MethodsProxyTest', () => { 'send' ); - expect(method.arguments).toEqual([true]); + expect(method.setArguments).toHaveBeenCalledWith([true]); }); it('calls the request method on a contract method and returns the expect AbstractMethod object', () => { @@ -294,11 +269,12 @@ describe('MethodsProxyTest', () => { abiModelMock.hasMethod.mockReturnValueOnce(true); - abiModelMock.getMethod.mockReturnValueOnce([abiItemModelMock]); + abiModelMock.getMethod.mockReturnValueOnce(abiItemModelMock); - new CallContractMethod(); - const callMethodMock = CallContractMethod.mock.instances[0]; + const callMethodMock = {}; callMethodMock.parameters = [{}]; + callMethodMock.setArguments = jest.fn(); + callMethodMock.execute = jest.fn(); methodFactoryMock.createMethodByRequestType.mockReturnValueOnce(callMethodMock); @@ -308,8 +284,6 @@ describe('MethodsProxyTest', () => { expect(methodsProxy.myMethod(true).call.request({options: false})).toEqual(callMethodMock); - expect(abiItemModelMock.givenParametersLengthIsValid).toHaveBeenCalled(); - expect(methodFactoryMock.createMethodByRequestType).toHaveBeenCalledWith( abiItemModelMock, contractMock, @@ -330,15 +304,12 @@ describe('MethodsProxyTest', () => { abiModelMock.hasMethod.mockReturnValueOnce(true); - abiModelMock.getMethod.mockReturnValueOnce([abiItemModelMock]); + abiModelMock.getMethod.mockReturnValueOnce(abiItemModelMock); - new EstimateGasMethod(); - const estimateGasMethod = EstimateGasMethod.mock.instances[0]; + const estimateGasMethod = {}; estimateGasMethod.parameters = [{}]; - - estimateGasMethod.execute = jest.fn((contractInstance) => { - expect(contractInstance).toEqual(contractMock); - + estimateGasMethod.setArguments = jest.fn(); + estimateGasMethod.execute = jest.fn(() => { return Promise.resolve(true); }); @@ -350,8 +321,6 @@ describe('MethodsProxyTest', () => { await expect(methodsProxy.myMethod(true).estimateGas({options: false})).resolves.toEqual(true); - expect(abiItemModelMock.givenParametersLengthIsValid).toHaveBeenCalled(); - expect(methodFactoryMock.createMethodByRequestType).toHaveBeenCalledWith( abiItemModelMock, contractMock, @@ -360,6 +329,8 @@ describe('MethodsProxyTest', () => { expect(estimateGasMethod.parameters[0]).toEqual({options: true}); + expect(estimateGasMethod.execute).toHaveBeenCalled(); + expect(methodEncoderMock.encode).toHaveBeenCalledWith(abiItemModelMock, contractMock.options.data); expect(methodOptionsMapperMock.map).toHaveBeenCalledWith(contractMock, {data: '0x0'}); diff --git a/packages/web3-eth-ens/jest.config.js b/packages/web3-eth-ens/jest.config.js index d23405559b0..286ed451c76 100644 --- a/packages/web3-eth-ens/jest.config.js +++ b/packages/web3-eth-ens/jest.config.js @@ -4,9 +4,6 @@ module.exports = jestConfig({ ContractModuleFactory: 'web3-eth-contract', formatters: 'web3-core-helpers', Utils: 'web3-utils', - ProvidersModuleFactory: 'web3-providers', - HttpProvider: 'web3-providers', - MethodModuleFactory: 'web3-core-method', AbiCoder: 'web3-eth-abi', Network: 'web3-net', namehash: 'eth-ens-namehash' diff --git a/packages/web3-eth-ens/package-lock.json b/packages/web3-eth-ens/package-lock.json index ffb3cd18938..5a0e2b1eac2 100644 --- a/packages/web3-eth-ens/package-lock.json +++ b/packages/web3-eth-ens/package-lock.json @@ -15,12 +15,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -31,17 +33,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -50,6 +55,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -57,27 +63,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -87,12 +98,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -105,6 +118,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -114,12 +128,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -128,6 +144,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -136,22 +153,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -162,6 +183,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -170,6 +192,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -180,6 +203,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -189,12 +213,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -202,12 +228,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -215,22 +243,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -243,6 +275,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -250,12 +283,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -264,17 +299,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -282,23 +320,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -308,6 +348,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -315,17 +356,20 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "eth-ens-namehash": { "version": "2.0.8", @@ -340,6 +384,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -353,27 +398,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -381,12 +431,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -397,6 +449,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -406,17 +459,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -425,6 +481,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -433,6 +490,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -445,17 +503,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -465,6 +526,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -472,19 +534,22 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -503,6 +568,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -511,37 +577,44 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-sha3": { "version": "0.5.7", @@ -551,12 +624,14 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -565,27 +640,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -594,6 +674,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -605,6 +686,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -613,6 +695,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -627,42 +710,48 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -670,12 +759,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -683,12 +774,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -696,17 +789,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -715,6 +811,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -724,22 +821,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -748,6 +849,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -755,47 +857,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -809,7 +920,8 @@ "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", @@ -820,6 +932,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -846,12 +959,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -863,6 +978,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -871,6 +987,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -880,17 +997,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -898,27 +1018,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -926,22 +1051,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -957,12 +1086,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -972,6 +1103,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -979,22 +1111,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -1003,19 +1139,22 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true } } }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1029,13 +1168,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1044,6 +1184,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1051,22 +1192,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1074,12 +1219,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1090,6 +1237,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1097,12 +1245,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1111,12 +1261,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1125,6 +1277,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1135,6 +1288,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1144,17 +1298,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1174,6 +1331,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-eth-ens/package.json b/packages/web3-eth-ens/package.json index eb3ef7262b1..9a528778759 100644 --- a/packages/web3-eth-ens/package.json +++ b/packages/web3-eth-ens/package.json @@ -16,13 +16,11 @@ }, "dependencies": { "@babel/runtime": "^7.3.1", - "dtslint": "0.5.4", "eth-ens-namehash": "2.0.8", "lodash": "^4.17.11", "web3-core": "1.0.0-beta.48", "web3-core-helpers": "1.0.0-beta.48", "web3-core-method": "1.0.0-beta.48", - "web3-core-promievent": "1.0.0-beta.48", "web3-eth-abi": "1.0.0-beta.48", "web3-eth-contract": "1.0.0-beta.48", "web3-net": "1.0.0-beta.48", diff --git a/packages/web3-eth-ens/src/Ens.js b/packages/web3-eth-ens/src/Ens.js index f1bb4046794..2481b003534 100644 --- a/packages/web3-eth-ens/src/Ens.js +++ b/packages/web3-eth-ens/src/Ens.js @@ -17,6 +17,7 @@ * @date 2018 */ +import {PromiEvent} from 'web3-core-method'; import {AbstractWeb3Module} from 'web3-core'; import isFunction from 'lodash/isFunction'; import namehash from 'eth-ens-namehash'; @@ -25,43 +26,39 @@ import namehash from 'eth-ens-namehash'; export default class Ens extends AbstractWeb3Module { /** * @param {HttpProvider|WebsocketProvider|IpcProvider|Web3EthereumProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {MethodModuleFactory} methodModuleFactory - * @param {ContractModuleFactory} contractModuleFactory * @param {Object} options * @param {EnsModuleFactory} ensModuleFactory - * @param {PromiEvent} promiEvent + * @param {ContractModuleFactory} contractModuleFactory + * @param {Accounts} accounts * @param {AbiCoder} abiCoder * @param {Utils} utils * @param {Object} formatters - * @param {Object} registryOptions * @param {Network} net + * @param {Net.Socket} nodeNet * * @constructor */ constructor( provider, - providersModuleFactory, - methodModuleFactory, options, ensModuleFactory, contractModuleFactory, - promiEvent, + accounts, abiCoder, utils, formatters, - registryOptions, - net + net, + nodeNet ) { - super(provider, providersModuleFactory, methodModuleFactory, null, options); + super(provider, options, null, nodeNet); + this.accounts = accounts; this.ensModuleFactory = ensModuleFactory; this.contractModuleFactory = contractModuleFactory; - this.promiEvent = promiEvent; this.abiCoder = abiCoder; this.utils = utils; this.formatters = formatters; - this.registryOptions = registryOptions; + this.registryOptions = options; this.net = net; this.transactionSigner = options.transactionSigner; this._registry = false; @@ -78,10 +75,8 @@ export default class Ens extends AbstractWeb3Module { if (!this._registry) { this._registry = this.ensModuleFactory.createRegistry( this.currentProvider, - this.providersModuleFactory, - this.methodModuleFactory, this.contractModuleFactory, - this.promiEvent, + this.accounts, this.abiCoder, this.utils, this.formatters, @@ -105,7 +100,7 @@ export default class Ens extends AbstractWeb3Module { * @returns {Boolean} */ setProvider(provider, net) { - return !!(super.setProvider(provider, net) && this.registry.setProvider(provider, net)); + return super.setProvider(provider, net) && this.registry.setProvider(provider, net); } /** @@ -133,7 +128,7 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {Promise} */ - async supportsInterface(name, interfaceId, callback = null) { + async supportsInterface(name, interfaceId, callback) { const resolver = await this.registry.resolver(name); return resolver.methods.supportsInterface(interfaceId).call(callback); @@ -150,7 +145,7 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {Promise} */ - async getAddress(name, callback = null) { + async getAddress(name, callback) { const resolver = await this.registry.resolver(name); return resolver.methods.addr(namehash.hash(name)).call(callback); @@ -169,8 +164,8 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {PromiEvent} */ - setAddress(name, address, sendOptions, callback = null) { - const promiEvent = new this.registry.PromiEvent(); + setAddress(name, address, sendOptions, callback) { + const promiEvent = new PromiEvent(); this.registry.resolver(name).then((resolver) => { resolver.methods @@ -214,7 +209,7 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {Promise} */ - async getPubkey(name, callback = null) { + async getPubkey(name, callback) { const resolver = await this.registry.resolver(name); return resolver.methods.pubkey(namehash.hash(name)).call(callback); @@ -234,8 +229,8 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {PromiEvent} */ - setPubkey(name, x, y, sendOptions, callback = null) { - const promiEvent = new this.registry.PromiEvent(); + setPubkey(name, x, y, sendOptions, callback) { + const promiEvent = new PromiEvent(); this.registry.resolver(name).then((resolver) => { resolver.methods @@ -280,7 +275,7 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {Promise} */ - async getText(name, key, callback = null) { + async getText(name, key, callback) { const resolver = await this.registry.resolver(name); return resolver.methods.text(namehash.hash(name), key).call(callback); @@ -300,8 +295,8 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {PromiEvent} */ - setText(name, key, value, sendOptions, callback = null) { - const promiEvent = new this.registry.PromiEvent(); + setText(name, key, value, sendOptions, callback) { + const promiEvent = new PromiEvent(); this.registry.resolver(name).then((resolver) => { resolver.methods @@ -345,7 +340,7 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {Promise} */ - async getContent(name, callback = null) { + async getContent(name, callback) { const resolver = await this.registry.resolver(name); return resolver.methods.content(namehash.hash(name)).call(callback); @@ -364,8 +359,8 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {PromiEvent} */ - setContent(name, hash, sendOptions, callback = null) { - const promiEvent = new this.registry.PromiEvent(); + setContent(name, hash, sendOptions, callback) { + const promiEvent = new PromiEvent(); this.registry.resolver(name).then((resolver) => { resolver.methods @@ -409,7 +404,7 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {Promise} */ - async getMultihash(name, callback = null) { + async getMultihash(name, callback) { const resolver = await this.registry.resolver(name); return resolver.methods.multihash(namehash.hash(name)).call(callback); @@ -428,8 +423,8 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {PromiEvent} */ - setMultihash(name, hash, sendOptions, callback = null) { - const promiEvent = new this.registry.PromiEvent(); + setMultihash(name, hash, sendOptions, callback) { + const promiEvent = new PromiEvent(); this.registry.resolver(name).then((resolver) => { resolver.methods @@ -473,7 +468,7 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {Promise} */ - async getContenthash(name, callback = null) { + async getContenthash(name, callback) { const resolver = await this.registry.resolver(name); return resolver.methods.contenthash(namehash.hash(name)).call(callback); @@ -492,8 +487,8 @@ export default class Ens extends AbstractWeb3Module { * @callback callback callback(error, result) * @returns {PromiEvent} */ - setContenthash(name, hash, sendOptions, callback = null) { - const promiEvent = new this.registry.PromiEvent(); + setContenthash(name, hash, sendOptions, callback) { + const promiEvent = new PromiEvent(); this.registry.resolver(name).then((resolver) => { resolver.methods diff --git a/packages/web3-eth-ens/src/contracts/Registry.js b/packages/web3-eth-ens/src/contracts/Registry.js index 6fc7b36534b..81e9ada5c8e 100644 --- a/packages/web3-eth-ens/src/contracts/Registry.js +++ b/packages/web3-eth-ens/src/contracts/Registry.js @@ -26,10 +26,8 @@ import {RESOLVER_ABI} from '../../ressources/ABI/Resolver'; export default class Registry extends AbstractContract { /** * @param {HttpProvider|WebsocketProvider|IpcProvider|Web3EthereumProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory * @param {ContractModuleFactory} contractModuleFactory - * @param {MethodModuleFactory} methodModuleFactory - * @param {PromiEvent} promiEvent + * @param {Accounts} accounts * @param {AbiCoder} abiCoder * @param {Utils} utils * @param {Object} formatters @@ -38,31 +36,8 @@ export default class Registry extends AbstractContract { * * @constructor */ - constructor( - provider, - providersModuleFactory, - methodModuleFactory, - contractModuleFactory, - promiEvent, - abiCoder, - utils, - formatters, - options, - net - ) { - super( - provider, - providersModuleFactory, - methodModuleFactory, - contractModuleFactory, - promiEvent, - abiCoder, - utils, - formatters, - REGISTRY_ABI, - '', - options - ); + constructor(provider, contractModuleFactory, accounts, abiCoder, utils, formatters, options, net) { + super(provider, contractModuleFactory, accounts, abiCoder, utils, formatters, REGISTRY_ABI, '', options); this.net = net; this.resolverContract = null; @@ -84,7 +59,7 @@ export default class Registry extends AbstractContract { * @callback callback callback(error, result) * @returns {Promise} */ - owner(name, callback = null) { + owner(name, callback) { return new Promise((resolve, reject) => { this.methods .owner(namehash.hash(name)) @@ -119,7 +94,7 @@ export default class Registry extends AbstractContract { */ setProvider(provider, net) { if (this.resolverContract) { - return !!(super.setProvider(provider, net) && this.resolverContract.setProvider(provider, net)); + return this.resolverContract.setProvider(provider, net) && super.setProvider(provider, net); } return super.setProvider(provider, net); diff --git a/packages/web3-eth-ens/src/factories/EnsModuleFactory.js b/packages/web3-eth-ens/src/factories/EnsModuleFactory.js index 938761f1701..977cf2ff98d 100644 --- a/packages/web3-eth-ens/src/factories/EnsModuleFactory.js +++ b/packages/web3-eth-ens/src/factories/EnsModuleFactory.js @@ -27,45 +27,29 @@ export default class EnsModuleFactory { * @method createENS * * @param {HttpProvider|WebsocketProvider|IpcProvider|Web3EthereumProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {MethodModuleFactory} methodModuleFactory * @param {ContractModuleFactory} contractModuleFactory - * @param {PromiEvent} promiEvent + * @param {Accounts} accounts * @param {AbiCoder} abiCoder * @param {Utils} utils * @param {Object} formatters * @param {Network} net - * @param {Object} registryOptions * @param {Object} ensModuleOptions + * @param {Net.Socket} nodeNet * * @returns {Ens} */ - createENS( - provider, - providersModuleFactory, - methodModuleFactory, - contractModuleFactory, - promiEvent, - abiCoder, - utils, - formatters, - net, - registryOptions, - ensModuleOptions - ) { + createENS(provider, contractModuleFactory, accounts, abiCoder, utils, formatters, net, ensModuleOptions, nodeNet) { return new Ens( provider, - providersModuleFactory, - methodModuleFactory, ensModuleOptions, this, contractModuleFactory, - promiEvent, + accounts, abiCoder, utils, formatters, - registryOptions, - net + net, + nodeNet ); } @@ -75,10 +59,8 @@ export default class EnsModuleFactory { * @method createRegistry * * @param {HttpProvider|WebsocketProvider|IpcProvider|Web3EthereumProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {MethodModuleFactory} methodModuleFactory * @param {ContractModuleFactory} contractModuleFactory - * @param {PromiEvent} promiEvent + * @param {Accounts} accounts * @param {AbiCoder} abiCoder * @param {Utils} utils * @param {Object} formatters @@ -87,29 +69,7 @@ export default class EnsModuleFactory { * * @returns {Registry} */ - createRegistry( - provider, - providersModuleFactory, - methodModuleFactory, - contractModuleFactory, - promiEvent, - abiCoder, - utils, - formatters, - options, - net - ) { - return new Registry( - provider, - providersModuleFactory, - methodModuleFactory, - contractModuleFactory, - promiEvent, - abiCoder, - utils, - formatters, - options, - net - ); + createRegistry(provider, contractModuleFactory, accounts, abiCoder, utils, formatters, options, net) { + return new Registry(provider, contractModuleFactory, accounts, abiCoder, utils, formatters, options, net); } } diff --git a/packages/web3-eth-ens/src/index.js b/packages/web3-eth-ens/src/index.js index 2c1157a2be0..1f91a77fd46 100644 --- a/packages/web3-eth-ens/src/index.js +++ b/packages/web3-eth-ens/src/index.js @@ -17,11 +17,8 @@ * @date 2018 */ -import {PromiEvent} from 'web3-core-promievent'; -import {ProvidersModuleFactory} from 'web3-providers'; import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; -import {MethodModuleFactory} from 'web3-core-method'; import {ContractModuleFactory} from 'web3-eth-contract'; import {AbiCoder} from 'web3-eth-abi'; import {Network} from 'web3-net'; @@ -33,27 +30,24 @@ import EnsModuleFactory from './factories/EnsModuleFactory'; * @method Ens * * @param {HttpProvider|WebsocketProvider|IpcProvider|Web3EthereumProvider|String} provider + * @param {Net.Socket} net * @param {Object} options * @param {Accounts} accounts * * @returns {Ens} */ -export const Ens = (provider, options, accounts) => { +export const Ens = (provider, net, options, accounts) => { const abiCoder = new AbiCoder(); - const methodModuleFactory = new MethodModuleFactory(); - return new EnsModuleFactory().createENS( provider, - new ProvidersModuleFactory(), - new MethodModuleFactory(), - new ContractModuleFactory(Utils, formatters, abiCoder, accounts, methodModuleFactory), - PromiEvent, + new ContractModuleFactory(Utils, formatters, abiCoder), + accounts, abiCoder, Utils, formatters, - new Network(provider), - {}, - options + new Network(provider, net, options), + options, + net ); }; diff --git a/packages/web3-eth-ens/tests/src/EnsTest.js b/packages/web3-eth-ens/tests/src/EnsTest.js index a19087bdef2..49cb0a494ca 100644 --- a/packages/web3-eth-ens/tests/src/EnsTest.js +++ b/packages/web3-eth-ens/tests/src/EnsTest.js @@ -1,11 +1,7 @@ import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; -import {PromiEvent} from 'web3-core-promievent'; -import {HttpProvider, ProvidersModuleFactory} from 'web3-providers'; -import {MethodModuleFactory} from 'web3-core-method'; import {Network} from 'web3-net'; import {AbiCoder} from 'web3-eth-abi'; -import {ContractModuleFactory} from 'web3-eth-contract'; import Registry from '../../src/contracts/Registry'; import namehash from 'eth-ens-namehash'; import Ens from '../../src/Ens'; @@ -14,46 +10,21 @@ import EnsModuleFactory from '../../src/factories/EnsModuleFactory'; // Mocks jest.mock('../../src/factories/EnsModuleFactory'); jest.mock('../../src/contracts/Registry'); -jest.mock('ProvidersModuleFactory'); -jest.mock('HttpProvider'); -jest.mock('MethodModuleFactory'); jest.mock('Network'); jest.mock('AbiCoder'); jest.mock('Utils'); jest.mock('formatters'); jest.mock('namehash'); -jest.mock('ContractModuleFactory'); /** * Ens test */ describe('EnsTest', () => { - let ens, - providerMock, - providersModuleFactoryMock, - methodModuleFactoryMock, - constractModuleFactoryMock, - registryMock, - ensModuleFactoryMock, - abiCoderMock, - networkMock; + let ens, registryMock, ensModuleFactoryMock, abiCoderMock, networkMock; beforeEach(() => { - new HttpProvider(); - providerMock = HttpProvider.mock.instances[0]; - - new ProvidersModuleFactory(); - providersModuleFactoryMock = ProvidersModuleFactory.mock.instances[0]; - - new MethodModuleFactory(); - methodModuleFactoryMock = MethodModuleFactory.mock.instances[0]; - new Registry(); registryMock = Registry.mock.instances[0]; - registryMock.PromiEvent = PromiEvent; - - new ContractModuleFactory(); - constractModuleFactoryMock = ContractModuleFactory.mock.instances[0]; new EnsModuleFactory(); ensModuleFactoryMock = EnsModuleFactory.mock.instances[0]; @@ -65,26 +36,21 @@ describe('EnsTest', () => { new Network(); networkMock = Network.mock.instances[0]; - providersModuleFactoryMock.createProviderDetector.mockReturnValueOnce({detect: jest.fn()}); - providersModuleFactoryMock.createProviderResolver.mockReturnValueOnce({resolve: jest.fn()}); - namehash.hash = jest.fn(() => { return '0x0'; }); ens = new Ens( - providerMock, - providersModuleFactoryMock, - methodModuleFactoryMock, + {send: jest.fn(), clearSubscriptions: jest.fn()}, {}, ensModuleFactoryMock, - constractModuleFactoryMock, - PromiEvent, + {}, + {}, abiCoderMock, Utils, formatters, - {}, - networkMock + networkMock, + {} ); }); @@ -93,10 +59,8 @@ describe('EnsTest', () => { expect(ensModuleFactoryMock.createRegistry).toHaveBeenCalledWith( ens.currentProvider, - ens.providersModuleFactory, - ens.methodModuleFactory, ens.contractModuleFactory, - ens.promiEvent, + ens.accounts, ens.abiCoder, ens.utils, ens.formatters, @@ -106,9 +70,7 @@ describe('EnsTest', () => { expect(ens.ensModuleFactory).toEqual(ensModuleFactoryMock); - expect(ens.contractModuleFactory).toEqual(constractModuleFactoryMock); - - expect(ens.promiEvent).toEqual(PromiEvent); + expect(ens.contractModuleFactory).toEqual({}); expect(ens.abiCoder).toEqual(abiCoderMock); @@ -1244,4 +1206,14 @@ describe('EnsTest', () => { expect(namehash.hash).toHaveBeenCalledWith('name'); }); + + it('calls setProvider and returns true', () => { + const providerMock = {send: jest.fn(), clearSubscriptions: jest.fn()}; + + registryMock.setProvider.mockReturnValueOnce(true); + + expect(ens.setProvider(providerMock, 'net')).toEqual(true); + + expect(registryMock.setProvider).toHaveBeenCalledWith(providerMock, 'net'); + }); }); diff --git a/packages/web3-eth-ens/tests/src/contracts/RegistryTest.js b/packages/web3-eth-ens/tests/src/contracts/RegistryTest.js index d0bee52df93..7fd0c9c3862 100644 --- a/packages/web3-eth-ens/tests/src/contracts/RegistryTest.js +++ b/packages/web3-eth-ens/tests/src/contracts/RegistryTest.js @@ -1,23 +1,10 @@ -import {AbstractContract, ContractModuleFactory} from 'web3-eth-contract'; -import {formatters} from 'web3-core-helpers'; -import * as Utils from 'web3-utils'; -import {HttpProvider, ProvidersModuleFactory} from 'web3-providers'; -import {MethodModuleFactory} from 'web3-core-method'; -import {AbiCoder} from 'web3-eth-abi'; +import {AbstractContract} from 'web3-eth-contract'; import {Network} from 'web3-net'; -import {PromiEvent} from 'web3-core-promievent'; import namehash from 'eth-ens-namehash'; import {RESOLVER_ABI} from '../../../ressources/ABI/Resolver'; import Registry from '../../../src/contracts/Registry'; // Mocks -jest.mock('ContractModuleFactory'); -jest.mock('formatters'); -jest.mock('Utils'); -jest.mock('ProvidersModuleFactory'); -jest.mock('HttpProvider'); -jest.mock('MethodModuleFactory'); -jest.mock('AbiCoder'); jest.mock('Network'); jest.mock('namehash'); @@ -25,29 +12,18 @@ jest.mock('namehash'); * Registry test */ describe('RegistryTest', () => { - let registry, - providerMock, - providersModuleFactoryMock, - methodModuleFactoryMock, - contractModuleFactoryMock, - abiCoderMock, - networkMock; + let registry, providerMock, contractModuleFactoryMock, networkMock; beforeEach(() => { - new HttpProvider(); - providerMock = HttpProvider.mock.instances[0]; - - new ProvidersModuleFactory(); - providersModuleFactoryMock = ProvidersModuleFactory.mock.instances[0]; - - new MethodModuleFactory(); - methodModuleFactoryMock = MethodModuleFactory.mock.instances[0]; - - new ContractModuleFactory(); - contractModuleFactoryMock = ContractModuleFactory.mock.instances[0]; - - new AbiCoder(); - abiCoderMock = AbiCoder.mock.instances[0]; + providerMock = {send: jest.fn(), clearSubscriptions: jest.fn()}; + contractModuleFactoryMock = { + createAbiMapper: () => { + return {map: jest.fn()}; + }, + createMethodFactory: jest.fn(), + createEventSubscriptionsProxy: jest.fn(), + createMethodsProxy: jest.fn() + }; new Network(); networkMock = Network.mock.instances[0]; @@ -60,18 +36,7 @@ describe('RegistryTest', () => { return Promise.resolve('rinkeby'); }); - registry = new Registry( - providerMock, - providersModuleFactoryMock, - methodModuleFactoryMock, - contractModuleFactoryMock, - PromiEvent, - abiCoderMock, - Utils, - formatters, - {}, - networkMock - ); + registry = new Registry(providerMock, contractModuleFactoryMock, {}, {}, {}, {}, {}, networkMock); registry.methods = {}; registry.events = {}; @@ -203,4 +168,18 @@ describe('RegistryTest', () => { expect(networkMock.getNetworkType).toHaveBeenCalled(); }); + + it('calls setProvider with resolver defined and returns true', () => { + const providerMock = {send: jest.fn(), clearSubscriptions: jest.fn()}; + registry.resolverContract = {setProvider: jest.fn()}; + registry.resolverContract.setProvider.mockReturnValueOnce(true); + + expect(registry.setProvider(providerMock, 'net')).toEqual(true); + + expect(registry.resolverContract.setProvider).toHaveBeenCalledWith(providerMock, 'net'); + }); + + it('calls setProvider returns true', () => { + expect(registry.setProvider({send: jest.fn(), clearSubscriptions: jest.fn()}, 'net')).toEqual(true); + }); }); diff --git a/packages/web3-eth-iban/package-lock.json b/packages/web3-eth-iban/package-lock.json index 20608f27f0d..807a719cd08 100644 --- a/packages/web3-eth-iban/package-lock.json +++ b/packages/web3-eth-iban/package-lock.json @@ -15,12 +15,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -31,17 +33,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -50,6 +55,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -57,27 +63,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -87,12 +98,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -105,6 +118,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -114,12 +128,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -133,6 +149,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -141,22 +158,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -167,6 +188,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -175,6 +197,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -185,6 +208,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -194,12 +218,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -207,12 +233,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -220,22 +248,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -248,6 +280,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -255,12 +288,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -269,17 +304,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -287,23 +325,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -313,6 +353,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -320,22 +361,26 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -349,27 +394,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -377,12 +427,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -393,6 +445,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -402,17 +455,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -421,6 +477,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -429,6 +486,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -441,17 +499,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -461,6 +522,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -468,19 +530,22 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -491,6 +556,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -499,47 +565,56 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -548,27 +623,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -577,6 +657,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -588,6 +669,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -596,6 +678,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -604,48 +687,55 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -653,12 +743,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -666,12 +758,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -679,17 +773,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -698,6 +795,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -707,22 +805,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -731,6 +833,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -738,47 +841,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -787,12 +899,14 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", @@ -803,6 +917,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -829,12 +944,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -846,6 +963,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -854,6 +972,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -863,17 +982,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -881,27 +1003,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -909,22 +1036,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -940,12 +1071,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -955,6 +1088,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -962,22 +1096,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -986,12 +1124,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1005,13 +1145,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1020,6 +1161,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1027,22 +1169,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1050,12 +1196,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1066,6 +1214,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1073,12 +1222,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1087,12 +1238,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1101,6 +1254,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1111,6 +1265,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1120,17 +1275,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1150,6 +1308,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-eth-iban/package.json b/packages/web3-eth-iban/package.json index 77e1066bc48..1d077ca1858 100644 --- a/packages/web3-eth-iban/package.json +++ b/packages/web3-eth-iban/package.json @@ -18,7 +18,6 @@ "dependencies": { "@babel/runtime": "^7.3.1", "bn.js": "4.11.8", - "dtslint": "0.5.4", "web3-utils": "1.0.0-beta.48" }, "devDependencies": { diff --git a/packages/web3-eth-personal/jest.config.js b/packages/web3-eth-personal/jest.config.js index f8851b87b59..a53759bd776 100644 --- a/packages/web3-eth-personal/jest.config.js +++ b/packages/web3-eth-personal/jest.config.js @@ -3,10 +3,5 @@ const jestConfig = require('../../jest.config'); module.exports = jestConfig({ formatters: 'web3-core-helpers', Utils: 'web3-utils', - HttpProvider: 'web3-providers', - ProvidersModuleFactory: 'web3-providers', - ProviderDetector: 'web3-providers', - ProviderResolver: 'web3-providers', - MethodModuleFactory: 'web3-core-method', Network: 'web3-net' }); diff --git a/packages/web3-eth-personal/package-lock.json b/packages/web3-eth-personal/package-lock.json index 802849d04f8..5f6736c9462 100644 --- a/packages/web3-eth-personal/package-lock.json +++ b/packages/web3-eth-personal/package-lock.json @@ -15,12 +15,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -31,17 +33,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -50,6 +55,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -57,27 +63,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -87,12 +98,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -105,6 +118,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -114,12 +128,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -128,6 +144,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -136,22 +153,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -162,6 +183,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -170,6 +192,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -180,6 +203,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -189,12 +213,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -202,12 +228,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -215,22 +243,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -243,6 +275,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -250,12 +283,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -264,17 +299,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -282,23 +320,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -308,6 +348,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -315,22 +356,26 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -344,27 +389,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -372,12 +422,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -388,6 +440,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -397,17 +450,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -416,6 +472,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -424,6 +481,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -436,17 +494,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -456,6 +517,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -463,19 +525,22 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -486,6 +551,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -494,47 +560,56 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -543,27 +618,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -572,6 +652,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -583,6 +664,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -591,6 +673,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -599,48 +682,55 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -648,12 +738,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -661,12 +753,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -674,17 +768,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -693,6 +790,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -702,22 +800,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -726,6 +828,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -733,47 +836,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -782,12 +894,14 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", @@ -798,6 +912,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -824,12 +939,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -841,6 +958,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -849,6 +967,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -858,17 +977,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -876,27 +998,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -904,22 +1031,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -935,12 +1066,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -950,6 +1083,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -957,22 +1091,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -981,12 +1119,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1000,13 +1140,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1015,6 +1156,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1022,22 +1164,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1045,12 +1191,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1061,6 +1209,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1068,12 +1217,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1082,12 +1233,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1096,6 +1249,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1106,6 +1260,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1115,17 +1270,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1145,6 +1303,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-eth-personal/package.json b/packages/web3-eth-personal/package.json index 88f22978d39..35ab15880ed 100644 --- a/packages/web3-eth-personal/package.json +++ b/packages/web3-eth-personal/package.json @@ -17,7 +17,6 @@ "types": "types", "dependencies": { "@babel/runtime": "^7.3.1", - "dtslint": "0.5.4", "web3-core": "1.0.0-beta.48", "web3-core-helpers": "1.0.0-beta.48", "web3-core-method": "1.0.0-beta.48", diff --git a/packages/web3-eth-personal/src/Personal.js b/packages/web3-eth-personal/src/Personal.js index 7b0e9bb0818..676f0fe63bd 100644 --- a/packages/web3-eth-personal/src/Personal.js +++ b/packages/web3-eth-personal/src/Personal.js @@ -27,18 +27,17 @@ export default class Personal extends AbstractWeb3Module { /** * TODO: Add missing documentation for getAccounts, lockAccount and sendTransaction! * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {MethodModuleFactory} methodModuleFactory * @param {MethodFactory} methodFactory * @param {Network} net * @param {Utils} utils * @param {Object} formatters * @param {Object} options + * @param {Net.Socket} nodeNet * * @constructor */ - constructor(provider, providersModuleFactory, methodModuleFactory, methodFactory, net, utils, formatters, options) { - super(provider, providersModuleFactory, methodModuleFactory, methodFactory, options); + constructor(provider, methodFactory, net, utils, formatters, options, nodeNet) { + super(provider, options, methodFactory, nodeNet); this.utils = utils; this.formatters = formatters; diff --git a/packages/web3-eth-personal/src/factories/MethodFactory.js b/packages/web3-eth-personal/src/factories/MethodFactory.js index c73d5d4de67..c8dc5acc181 100644 --- a/packages/web3-eth-personal/src/factories/MethodFactory.js +++ b/packages/web3-eth-personal/src/factories/MethodFactory.js @@ -35,14 +35,13 @@ import { export default class MethodFactory extends AbstractMethodFactory { /** - * @param {MethodModuleFactory} methodModuleFactory * @param {Utils} utils * @param {Object} formatters * * @constructor */ - constructor(methodModuleFactory, utils, formatters) { - super(methodModuleFactory, utils, formatters); + constructor(utils, formatters) { + super(utils, formatters); this.methods = { getAccounts: GetAccountsMethod, diff --git a/packages/web3-eth-personal/src/factories/PersonalModuleFactory.js b/packages/web3-eth-personal/src/factories/PersonalModuleFactory.js deleted file mode 100644 index 3708522a9f9..00000000000 --- a/packages/web3-eth-personal/src/factories/PersonalModuleFactory.js +++ /dev/null @@ -1,76 +0,0 @@ -/* - This file is part of web3.js. - - web3.js is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - web3.js is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with web3.js. If not, see . -*/ -/** - * @file PersonalModuleFactory.js - * @author Samuel Furter - * @date 2018 - */ - -import Personal from '../Personal'; -import MethodFactory from './MethodFactory'; - -export default class PersonalModuleFactory { - /** - * @param {Utils} utils - * @param {Object} formatters - * - * @constructor - */ - constructor(utils, formatters) { - this.utils = utils; - this.formatters = formatters; - } - - /** - * Returns an object of type Personal - * - * @method createPersonal - * - * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {MethodModuleFactory} methodModuleFactory - * @param {Network} net - * @param {Object} options - * - * @returns {Personal} - */ - createPersonalModule(provider, providersModuleFactory, methodModuleFactory, net, options) { - return new Personal( - provider, - providersModuleFactory, - methodModuleFactory, - this.createMethodFactory(methodModuleFactory), - net, - this.utils, - this.formatters, - options - ); - } - - /** - * Returns an object of type MethodFactory - * - * @method createMethodFactory - * - * @param {MethodModuleFactory} methodModuleFactory - * - * @returns {MethodFactory} - */ - createMethodFactory(methodModuleFactory) { - return new MethodFactory(methodModuleFactory, this.utils, this.formatters); - } -} diff --git a/packages/web3-eth-personal/src/index.js b/packages/web3-eth-personal/src/index.js index 4de28ae9c8e..955a818dce8 100644 --- a/packages/web3-eth-personal/src/index.js +++ b/packages/web3-eth-personal/src/index.js @@ -20,12 +20,11 @@ * @date 2018 */ -import {MethodModuleFactory} from 'web3-core-method'; import {Network} from 'web3-net'; -import {ProvidersModuleFactory} from 'web3-providers'; import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; -import PersonalModuleFactory from './factories/PersonalModuleFactory'; +import MethodFactory from './factories/MethodFactory'; +import PersonalModule from './Personal.js'; /** * Returns the Personal object @@ -33,17 +32,20 @@ import PersonalModuleFactory from './factories/PersonalModuleFactory'; * @method Personal * * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider + * @param {Net.Socket} net * @param {Accounts} accounts * @param {Object} options * * @returns {Personal} */ -export const Personal = (provider, accounts, options) => { - return new PersonalModuleFactory(Utils, formatters).createPersonalModule( +export const Personal = (provider, net, accounts, options) => { + return new PersonalModule( provider, - new ProvidersModuleFactory(), - new MethodModuleFactory(accounts), - new Network(provider, options), - options + new MethodFactory(Utils, formatters), + new Network(provider, net, options), + Utils, + formatters, + options, + net ); }; diff --git a/packages/web3-eth-personal/tests/src/PersonalTest.js b/packages/web3-eth-personal/tests/src/PersonalTest.js index 2b372c5f914..73b2c3b9e38 100644 --- a/packages/web3-eth-personal/tests/src/PersonalTest.js +++ b/packages/web3-eth-personal/tests/src/PersonalTest.js @@ -1,18 +1,5 @@ import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; -import {HttpProvider, ProvidersModuleFactory, ProviderDetector, ProviderResolver} from 'web3-providers'; -import { - MethodModuleFactory, - GetAccountsMethod, - NewAccountMethod, - UnlockAccountMethod, - LockAccountMethod, - ImportRawKeyMethod, - PersonalSendTransactionMethod, - PersonalSignTransactionMethod, - PersonalSignMethod, - EcRecoverMethod -} from 'web3-core-method'; import {Network} from 'web3-net'; import {AbstractWeb3Module} from 'web3-core'; import MethodFactory from '../../src/factories/MethodFactory'; @@ -21,77 +8,25 @@ import Personal from '../../src/Personal'; // Mocks jest.mock('Utils'); jest.mock('formatters'); -jest.mock('HttpProvider'); -jest.mock('ProvidersModuleFactory'); -jest.mock('ProviderDetector'); -jest.mock('ProviderResolver'); -jest.mock('MethodModuleFactory'); jest.mock('Network'); /** * Personal test */ describe('PersonalTest', () => { - let personal, - providerMock, - providersModuleFactoryMock, - providerDetectorMock, - providerResolverMock, - methodModuleFactoryMock, - methodFactory, - networkMock; + let personal, providerMock, methodFactory, networkMock; beforeEach(() => { - new HttpProvider(); - providerMock = HttpProvider.mock.instances[0]; - - new ProvidersModuleFactory(); - providersModuleFactoryMock = ProvidersModuleFactory.mock.instances[0]; - - new ProviderDetector(); - providerDetectorMock = ProviderDetector.mock.instances[0]; - providerDetectorMock.detect = jest.fn(() => { - return null; - }); - - new ProviderResolver(); - providerResolverMock = ProviderResolver.mock.instances[0]; - providerResolverMock.resolve = jest.fn(() => { - return providerMock; - }); - - providersModuleFactoryMock.createProviderDetector.mockReturnValueOnce(providerDetectorMock); - - providersModuleFactoryMock.createProviderResolver.mockReturnValueOnce(providerResolverMock); - - new MethodModuleFactory(); - methodModuleFactoryMock = MethodModuleFactory.mock.instances[0]; - methodModuleFactoryMock.createMethodProxy = jest.fn(); - - methodFactory = new MethodFactory(methodModuleFactoryMock, Utils, formatters); + providerMock = {send: jest.fn(), clearSubscriptions: jest.fn()}; + methodFactory = new MethodFactory(Utils, formatters); new Network(); networkMock = Network.mock.instances[0]; - personal = new Personal( - providerMock, - providersModuleFactoryMock, - methodModuleFactoryMock, - methodFactory, - networkMock, - Utils, - formatters, - {} - ); + personal = new Personal(providerMock, methodFactory, networkMock, Utils, formatters, {}, {}); }); it('constructor check', () => { - expect(personal.currentProvider).toEqual(providerMock); - - expect(personal.providersModuleFactory).toEqual(providersModuleFactoryMock); - - expect(personal.methodFactory).toEqual(methodFactory); - expect(personal.net).toEqual(networkMock); expect(personal.utils).toEqual(Utils); @@ -101,27 +36,13 @@ describe('PersonalTest', () => { expect(personal).toBeInstanceOf(AbstractWeb3Module); }); - it('JSON-RPC methods check', () => { - expect(personal.methodFactory.methods).toEqual({ - getAccounts: GetAccountsMethod, - newAccount: NewAccountMethod, - unlockAccount: UnlockAccountMethod, - lockAccount: LockAccountMethod, - importRawKey: ImportRawKeyMethod, - sendTransaction: PersonalSendTransactionMethod, - signTransaction: PersonalSignTransactionMethod, - sign: PersonalSignMethod, - ecRecover: EcRecoverMethod - }); - }); - it('calls setProvider and returns true', () => { networkMock.setProvider = jest.fn(); networkMock.setProvider.mockReturnValueOnce(true); - expect(personal.setProvider('provider', 'net')).toEqual(true); + expect(personal.setProvider(providerMock, 'net')).toEqual(true); - expect(networkMock.setProvider).toHaveBeenCalledWith('provider', 'net'); + expect(networkMock.setProvider).toHaveBeenCalledWith(providerMock, 'net'); }); it('sets the defaultGasPrice property', () => { diff --git a/packages/web3-eth-personal/tests/src/factories/MethodFactoryTest.js b/packages/web3-eth-personal/tests/src/factories/MethodFactoryTest.js new file mode 100644 index 00000000000..b9135b673fd --- /dev/null +++ b/packages/web3-eth-personal/tests/src/factories/MethodFactoryTest.js @@ -0,0 +1,50 @@ +import * as Utils from 'web3-utils'; +import {formatters} from 'web3-core-helpers'; +import { + EcRecoverMethod, + GetAccountsMethod, + ImportRawKeyMethod, + LockAccountMethod, + NewAccountMethod, + PersonalSendTransactionMethod, + PersonalSignMethod, + PersonalSignTransactionMethod, + UnlockAccountMethod +} from 'web3-core-method'; + +import MethodFactory from '../../../src/factories/MethodFactory'; + +// Mocks +jest.mock('Utils'); +jest.mock('formatters'); + +/** + * MethodFactory test + */ +describe('MethodFactoryTest', () => { + let methodFactory; + + beforeEach(() => { + methodFactory = new MethodFactory(Utils, formatters); + }); + + it('constructor check', () => { + expect(methodFactory.utils).toEqual(Utils); + + expect(methodFactory.formatters).toEqual(formatters); + }); + + it('JSON-RPC methods check', () => { + expect(methodFactory.methods).toEqual({ + getAccounts: GetAccountsMethod, + newAccount: NewAccountMethod, + unlockAccount: UnlockAccountMethod, + lockAccount: LockAccountMethod, + importRawKey: ImportRawKeyMethod, + sendTransaction: PersonalSendTransactionMethod, + signTransaction: PersonalSignTransactionMethod, + sign: PersonalSignMethod, + ecRecover: EcRecoverMethod + }); + }); +}); diff --git a/packages/web3-eth-personal/tests/src/factories/PersonalModuleFactoryTest.js b/packages/web3-eth-personal/tests/src/factories/PersonalModuleFactoryTest.js deleted file mode 100644 index 5c9fff76f6e..00000000000 --- a/packages/web3-eth-personal/tests/src/factories/PersonalModuleFactoryTest.js +++ /dev/null @@ -1,36 +0,0 @@ -import * as Utils from 'web3-utils'; -import {formatters} from 'web3-core-helpers'; -import Personal from '../../../src/Personal'; -import MethodFactory from '../../../src/factories/MethodFactory'; -import PersonalModuleFactory from '../../../src/factories/PersonalModuleFactory'; - -// Mocks -jest.mock('Utils'); -jest.mock('formatters'); -jest.mock('../../../src/Personal'); -jest.mock('../../../src/factories/MethodFactory'); - -/** - * PersonalModuleFactory test - */ -describe('PersonalModuleFactoryTest', () => { - let personalModuleFactory; - - beforeEach(() => { - personalModuleFactory = new PersonalModuleFactory(Utils, formatters); - }); - - it('constructor check', () => { - expect(personalModuleFactory.utils).toEqual(Utils); - - expect(personalModuleFactory.formatters).toEqual(formatters); - }); - - it('calls createPersonalModule and returns the expected Personal object', () => { - expect(personalModuleFactory.createPersonalModule({}, {}, {}, {}, {})).toBeInstanceOf(Personal); - }); - - it('calls createMethodFactory and returns the expected MethodFactory object', () => { - expect(personalModuleFactory.createMethodFactory({})).toBeInstanceOf(MethodFactory); - }); -}); diff --git a/packages/web3-eth/jest.config.js b/packages/web3-eth/jest.config.js index acf18ee0ab3..dcbd0655398 100644 --- a/packages/web3-eth/jest.config.js +++ b/packages/web3-eth/jest.config.js @@ -1,22 +1,19 @@ const jestConfig = require('../../jest.config'); module.exports = jestConfig({ - HttpProvider: 'web3-providers', - ProvidersModuleFactory: 'web3-providers', - ProviderDetector: 'web3-providers', - ProviderResolver: 'web3-providers', - MethodModuleFactory: 'web3-core-method', - GetPastLogsMethod: 'web3-core-method', - SubscriptionsFactory: 'web3-core-subscriptions', - LogSubscription: 'web3-core-subscriptions', - AbstractSubscription: 'web3-core-subscriptions', - formatters: 'web3-core-helpers', - Accounts: 'web3-eth-accounts', - ContractModuleFactory: 'web3-eth-contract', - AbiCoder: 'web3-eth-abi', - Ens: 'web3-eth-ens', - Personal: 'web3-eth-personal', - Network: 'web3-net', - Utils: 'web3-utils', - AbstractContract: 'web3-eth-contract' + 'AbstractWeb3Module': 'web3-core', + 'GetPastLogsMethod': 'web3-core-method', + 'LogSubscription': 'web3-core-subscriptions', + 'NewHeadsSubscription': 'web3-core-subscriptions', + 'NewPendingTransactionsSubscription': 'web3-core-subscriptions', + 'SyncingSubscription': 'web3-core-subscriptions', + 'AbstractSubscription': 'web3-core-subscriptions', + 'formatters': 'web3-core-helpers', + 'Accounts': 'web3-eth-accounts', + 'ContractModuleFactory': 'web3-eth-contract', + 'AbiCoder': 'web3-eth-abi', + 'Ens': 'web3-eth-ens', + 'Personal': 'web3-eth-personal', + 'Network': 'web3-net', + 'Utils': 'web3-utils' }); diff --git a/packages/web3-eth/package-lock.json b/packages/web3-eth/package-lock.json index abd10a7a124..ed9a607b48d 100644 --- a/packages/web3-eth/package-lock.json +++ b/packages/web3-eth/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@babel/runtime": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz", - "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz", + "integrity": "sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==", "requires": { "regenerator-runtime": "^0.12.0" } @@ -15,12 +15,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -31,17 +33,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -50,6 +55,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -57,27 +63,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -87,12 +98,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -105,6 +118,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -114,12 +128,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -133,6 +149,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -151,22 +168,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -177,6 +198,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -185,6 +207,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -195,6 +218,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -204,12 +228,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -217,12 +243,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -230,22 +258,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -258,6 +290,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -265,7 +298,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decode-uri-component": { "version": "0.2.0", @@ -292,6 +326,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -300,12 +335,14 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dom-walk": { "version": "0.1.1", @@ -316,6 +353,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -323,23 +361,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -363,6 +403,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -393,17 +434,20 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "eth-lib": { "version": "0.2.8", @@ -419,6 +463,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -432,27 +477,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -468,12 +518,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -484,6 +536,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -493,7 +546,8 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "function-bind": { "version": "1.1.1", @@ -503,12 +557,14 @@ "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -517,6 +573,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -525,6 +582,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -546,17 +604,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -574,6 +635,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -581,14 +643,16 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-symbols": { "version": "1.0.0", @@ -618,6 +682,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -628,6 +693,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -641,7 +707,8 @@ "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-callable": { "version": "1.1.4", @@ -656,7 +723,8 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-function": { "version": "1.0.1", @@ -674,7 +742,8 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-symbol": { "version": "1.0.2", @@ -687,27 +756,32 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -716,27 +790,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -745,6 +824,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -756,6 +836,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -764,6 +845,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -772,43 +854,49 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "mimic-response": { "version": "1.0.1", @@ -837,6 +925,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -844,12 +933,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -857,12 +948,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -870,12 +963,14 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "object-assign": { "version": "4.1.1", @@ -899,6 +994,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -908,22 +1004,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -932,6 +1032,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -939,7 +1040,8 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parse-headers": { "version": "2.0.2", @@ -953,32 +1055,38 @@ "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "process": { "version": "0.5.2", @@ -988,12 +1096,14 @@ "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -1002,12 +1112,14 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "query-string": { "version": "5.1.1", @@ -1028,6 +1140,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1054,12 +1167,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -1071,6 +1186,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -1079,6 +1195,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -1088,45 +1205,61 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } }, + "rxjs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -1134,12 +1267,14 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "simple-concat": { "version": "1.0.0", @@ -1159,12 +1294,14 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -1180,7 +1317,8 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "strict-uri-encode": { "version": "1.1.0", @@ -1191,6 +1329,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -1210,6 +1349,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -1217,17 +1357,20 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "timed-out": { "version": "4.0.1", @@ -1238,6 +1381,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -1249,9 +1393,10 @@ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1265,13 +1410,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1280,6 +1426,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1287,22 +1434,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1315,12 +1466,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1331,6 +1484,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1338,12 +1492,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1352,12 +1508,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1366,6 +1524,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1376,6 +1535,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1428,12 +1588,14 @@ "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1453,6 +1615,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-eth/package.json b/packages/web3-eth/package.json index 3af9ed629f8..74f10e5e0b3 100644 --- a/packages/web3-eth/package.json +++ b/packages/web3-eth/package.json @@ -17,8 +17,8 @@ "types": "types", "dependencies": { "@babel/runtime": "^7.3.1", - "dtslint": "0.5.4", "eth-lib": "0.2.8", + "rxjs": "^6.4.0", "web3-core": "1.0.0-beta.48", "web3-core-helpers": "1.0.0-beta.48", "web3-core-method": "1.0.0-beta.48", diff --git a/packages/web3-eth/src/Eth.js b/packages/web3-eth/src/Eth.js index 3e9130ff612..a90b8ecb2db 100644 --- a/packages/web3-eth/src/Eth.js +++ b/packages/web3-eth/src/Eth.js @@ -25,8 +25,6 @@ import {AbstractWeb3Module} from 'web3-core'; export default class Eth extends AbstractWeb3Module { /** * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {MethodModuleFactory} methodModuleFactory * @param {MethodFactory} methodFactory * @param {Network} net * @param {Accounts} accounts @@ -38,7 +36,6 @@ export default class Eth extends AbstractWeb3Module { * @param {Object} formatters * @param {SubscriptionsFactory} subscriptionsFactory * @param {ContractModuleFactory} contractModuleFactory - * @param {TransactionSigner} transactionSigner * @param {Object} options * @param {Net} nodeNet * @@ -46,8 +43,6 @@ export default class Eth extends AbstractWeb3Module { */ constructor( provider, - providersModuleFactory, - methodModuleFactory, methodFactory, net, accounts, @@ -62,7 +57,7 @@ export default class Eth extends AbstractWeb3Module { options, nodeNet ) { - super(provider, providersModuleFactory, methodModuleFactory, methodFactory, options, nodeNet); + super(provider, options, methodFactory, nodeNet); this.net = net; this.accounts = accounts; @@ -94,11 +89,19 @@ export default class Eth extends AbstractWeb3Module { const contract = this.contractModuleFactory.createContract( this.currentProvider, - this.providersModuleFactory, this.accounts, abi, address, - options + { + defaultAccount: this.defaultAccount, + defaultBlock: this.defaultBlock, + defaultGas: this.defaultGas, + defaultGasPrice: this.defaultGasPrice, + transactionBlockTimeout: this.transactionBlockTimeout, + transactionConfirmationBlocks: this.transactionConfirmationBlocks, + transactionPollingTimeout: this.transactionPollingTimeout, + transactionSigner: this.transactionSigner + } ); this.initiatedContracts.push(contract); @@ -119,6 +122,8 @@ export default class Eth extends AbstractWeb3Module { } /** + * TODO: Remove setter + * * Setter for the transactionSigner property * * @property transactionSigner @@ -362,24 +367,7 @@ export default class Eth extends AbstractWeb3Module { * @returns {Subscription} */ subscribe(type, options, callback) { - switch (type) { - case 'logs': - return this.subscriptionsFactory - .createLogSubscription(options, this, this.methodFactory.createMethod('getPastLogs')) - .subscribe(callback); - - case 'newBlockHeaders': - return this.subscriptionsFactory.createNewHeadsSubscription(this).subscribe(callback); - - case 'pendingTransactions': - return this.subscriptionsFactory.createNewPendingTransactionsSubscription(this).subscribe(callback); - - case 'syncing': - return this.subscriptionsFactory.createSyncingSubscription(this).subscribe(callback); - - default: - throw new Error(`Unknown subscription: ${type}`); - } + return this.subscriptionsFactory.getSubscription(this, type, options).subscribe(callback); } /** diff --git a/packages/web3-eth/src/factories/MethodFactory.js b/packages/web3-eth/src/factories/MethodFactory.js index 7021652f126..3e22fcb5a53 100644 --- a/packages/web3-eth/src/factories/MethodFactory.js +++ b/packages/web3-eth/src/factories/MethodFactory.js @@ -15,57 +15,57 @@ along with web3.js. If not, see . */ /** - * @file MethodFactory + * @file MethodFactory.js * @author Samuel Furter * @date 2018 */ import { AbstractMethodFactory, - GetNodeInfoMethod, - GetProtocolVersionMethod, - GetCoinbaseMethod, - IsMiningMethod, - GetHashrateMethod, - IsSyncingMethod, - GetGasPriceMethod, + CallMethod, + ChainIdMethod, + EstimateGasMethod, GetAccountsMethod, - GetBlockNumberMethod, GetBalanceMethod, - GetStorageAtMethod, + GetBlockNumberMethod, GetCodeMethod, - GetBlockMethod, - GetUncleMethod, - GetBlockTransactionCountMethod, - GetBlockUncleCountMethod, - GetTransactionMethod, - GetTransactionFromBlockMethod, - GetTransactionReceipt, + GetCoinbaseMethod, + GetGasPriceMethod, + GetHashrateMethod, + GetNodeInfoMethod, + GetPastLogsMethod, + GetProtocolVersionMethod, + GetStorageAtMethod, GetTransactionCountMethod, - SendRawTransactionMethod, - SignTransactionMethod, - SendTransactionMethod, - SignMethod, - CallMethod, - EstimateGasMethod, - SubmitWorkMethod, + GetTransactionMethod, + GetTransactionReceiptMethod, GetWorkMethod, - GetPastLogsMethod, + IsMiningMethod, + IsSyncingMethod, RequestAccountsMethod, + SubmitWorkMethod, VersionMethod, - ChainIdMethod + SendRawTransactionMethod, + EthSendTransactionMethod } from 'web3-core-method'; +import GetBlockMethod from '../methods/GetBlockMethod'; +import GetUncleMethod from '../methods/GetUncleMethod'; +import GetBlockTransactionCountMethod from '../methods/GetBlockTransactionCountMethod'; +import GetBlockUncleCountMethod from '../methods/GetBlockUncleCountMethod'; +import GetTransactionFromBlockMethod from '../methods/GetTransactionFromBlockMethod'; +import EthSignTransactionMethod from '../methods/EthSignTransactionMethod'; +import EthSignMethod from '../methods/EthSignMethod'; + export default class MethodFactory extends AbstractMethodFactory { /** - * @param {MethodModuleFactory} methodModuleFactory * @param {Utils} utils * @param {Object} formatters * * @constructor */ - constructor(methodModuleFactory, utils, formatters) { - super(methodModuleFactory, utils, formatters); + constructor(utils, formatters) { + super(utils, formatters); this.methods = { getNodeInfo: GetNodeInfoMethod, @@ -86,12 +86,12 @@ export default class MethodFactory extends AbstractMethodFactory { getBlockUncleCount: GetBlockUncleCountMethod, getTransaction: GetTransactionMethod, getTransactionFromBlock: GetTransactionFromBlockMethod, - getTransactionReceipt: GetTransactionReceipt, + getTransactionReceipt: GetTransactionReceiptMethod, getTransactionCount: GetTransactionCountMethod, sendSignedTransaction: SendRawTransactionMethod, - signTransaction: SignTransactionMethod, - sendTransaction: SendTransactionMethod, - sign: SignMethod, + signTransaction: EthSignTransactionMethod, + sendTransaction: EthSendTransactionMethod, + sign: EthSignMethod, call: CallMethod, estimateGas: EstimateGasMethod, submitWork: SubmitWorkMethod, diff --git a/packages/web3-eth/src/factories/SubscriptionsFactory.js b/packages/web3-eth/src/factories/SubscriptionsFactory.js new file mode 100644 index 00000000000..884d61dc500 --- /dev/null +++ b/packages/web3-eth/src/factories/SubscriptionsFactory.js @@ -0,0 +1,72 @@ +/* + This file is part of web3.js. + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file SubscriptionsFactory.js + * @author Samuel Furter + * @date 2019 + */ + +import { + LogSubscription, + NewHeadsSubscription, + NewPendingTransactionsSubscription, + SyncingSubscription +} from 'web3-core-subscriptions'; + +import {GetPastLogsMethod} from 'web3-core-method'; + +export default class SubscriptionsFactory { + /** + * @param {Utils} utils + * @param {Object} formatters + * + * @constructor + */ + constructor(utils, formatters) { + this.utils = utils; + this.formatters = formatters; + } + + /** + * Gets the correct subscription class by the given name. + * + * @method getSubscription + * + * @param {AbstractWeb3Module} moduleInstance + * @param {String} type + * @param {Object} options + * + * @returns {AbstractSubscription} + */ + getSubscription(moduleInstance, type, options) { + switch (type) { + case 'logs': + return new LogSubscription( + options, + this.utils, + this.formatters, + moduleInstance, + new GetPastLogsMethod(this.utils, this.formatters) + ); + case 'newBlockHeaders': + return new NewHeadsSubscription(this.utils, this.formatters, moduleInstance); + case 'pendingTransactions': + return new NewPendingTransactionsSubscription(this.utils, this.formatters, moduleInstance); + case 'syncing': + return new SyncingSubscription(this.utils, this.formatters, moduleInstance); + default: + throw new Error(`Unknown subscription: ${type}`); + } + } +} diff --git a/packages/web3-eth/src/index.js b/packages/web3-eth/src/index.js index ab4c6a0e6e5..b38ff0fa83a 100644 --- a/packages/web3-eth/src/index.js +++ b/packages/web3-eth/src/index.js @@ -20,44 +20,30 @@ * @date 2018 */ -import {MethodModuleFactory} from 'web3-core-method'; import {formatters} from 'web3-core-helpers'; -import {SubscriptionsFactory} from 'web3-core-subscriptions'; import {Accounts} from 'web3-eth-accounts'; import {Ens} from 'web3-eth-ens'; import {ContractModuleFactory} from 'web3-eth-contract'; import {Personal} from 'web3-eth-personal'; import {AbiCoder} from 'web3-eth-abi'; import {Iban} from 'web3-eth-iban'; -import {ProvidersModuleFactory} from 'web3-providers'; import {Network} from 'web3-net'; import * as Utils from 'web3-utils'; import EthTransactionSigner from './signers/TransactionSigner'; +import MethodFactory from './factories/MethodFactory'; +import SubscriptionsFactory from './factories/SubscriptionsFactory'; import EthModule from './Eth.js'; -import EthMethodFactory from './factories/MethodFactory'; /** * Creates the TransactionSigner class * * @returns {TransactionSigner} - * * @constructor */ export const TransactionSigner = () => { return new EthTransactionSigner(Utils, formatters); }; -/** - * Creates the MethodFactory class of the eth module - * - * @returns {MethodFactory} - * - * @constructor - */ -export const MethodFactory = () => { - return new EthMethodFactory(new MethodModuleFactory(), Utils, formatters); -}; - /** * Creates the Eth object * @@ -68,7 +54,6 @@ export const MethodFactory = () => { * @param {Object} options * * @returns {Eth} - * * @constructor */ export const Eth = (provider, net, options) => { @@ -76,25 +61,22 @@ export const Eth = (provider, net, options) => { options.transactionSigner = new TransactionSigner(); } - const accounts = new Accounts(provider, options); + const accounts = new Accounts(provider, net, options); const abiCoder = new AbiCoder(); - const methodModuleFactory = new MethodModuleFactory(); return new EthModule( provider, - new ProvidersModuleFactory(), - methodModuleFactory, - new MethodFactory(), - new Network(provider, options), + new MethodFactory(Utils, formatters), + new Network(provider, net, options), accounts, - new Personal(provider, accounts, options), + new Personal(provider, net, accounts, options), Iban, abiCoder, - new Ens(provider, accounts, options), + new Ens(provider, net, accounts, options), Utils, formatters, - new SubscriptionsFactory(), - new ContractModuleFactory(Utils, formatters, abiCoder, accounts, methodModuleFactory), + new SubscriptionsFactory(Utils, formatters), + new ContractModuleFactory(Utils, formatters, abiCoder, accounts), options, net ); diff --git a/packages/web3-core-method/lib/methods/AbstractCallMethod.js b/packages/web3-eth/src/methods/EthSignMethod.js similarity index 52% rename from packages/web3-core-method/lib/methods/AbstractCallMethod.js rename to packages/web3-eth/src/methods/EthSignMethod.js index 89330c9c768..b9dd9675032 100644 --- a/packages/web3-core-method/lib/methods/AbstractCallMethod.js +++ b/packages/web3-eth/src/methods/EthSignMethod.js @@ -15,37 +15,23 @@ along with web3.js. If not, see . */ /** - * @file AbstractCallMethod.js + * @file EthSignMethod.js * @author Samuel Furter * @date 2018 */ -import AbstractMethod from './AbstractMethod'; +import {SignMethod} from 'web3-core-method'; -export default class AbstractCallMethod extends AbstractMethod { +export default class EthSignMethod extends SignMethod { /** - * @param {String} rpcMethod - * @param {Number} parametersAmount * @param {Utils} utils * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance * * @constructor */ - constructor(rpcMethod, parametersAmount, utils, formatters) { - super(rpcMethod, parametersAmount, utils, formatters); - } - - /** - * TODO: Implementing of a custom 'instanceof' with an JS reflection would remove this type and we could do: - * TODO: ConcreteCallMethod instanceof AbstractCallMethod - * Returns the commandType of this Method - * - * @property CommandType - * - * @returns {String} - */ - static get Type() { - return 'CALL'; + constructor(utils, formatters, moduleInstance) { + super(utils, formatters, moduleInstance); } /** @@ -53,32 +39,38 @@ export default class AbstractCallMethod extends AbstractMethod { * * @method execute * - * @param {AbstractWeb3Module} moduleInstance - * * @callback callback callback(error, result) * @returns {Promise} */ - async execute(moduleInstance) { - this.beforeExecution(moduleInstance); - - if (this.parameters.length !== this.parametersAmount) { - throw new Error( - `Invalid Arguments length: expected: ${this.parametersAmount}, given: ${this.parameters.length}` - ); + execute() { + if (this.moduleInstance.accounts.wallet[this.parameters[1]]) { + return this.signLocally(); } + return super.execute(); + } + + /** + * Signs the message on the client. + * + * @method signLocally + * + * @returns {Promise} + */ + async signLocally() { try { - let response = await moduleInstance.currentProvider.send(this.rpcMethod, this.parameters); + this.beforeExecution(this.moduleInstance); - if (response) { - response = this.afterExecution(response); - } + let signedMessage = this.moduleInstance.accounts.sign( + this.parameters[0], + this.moduleInstance.accounts.wallet[this.parameters[1]].address + ); if (this.callback) { - this.callback(false, response); + this.callback(false, signedMessage); } - return response; + return signedMessage; } catch (error) { if (this.callback) { this.callback(error, null); diff --git a/packages/web3-eth/src/methods/EthSignTransactionMethod.js b/packages/web3-eth/src/methods/EthSignTransactionMethod.js new file mode 100644 index 00000000000..62dd89c712b --- /dev/null +++ b/packages/web3-eth/src/methods/EthSignTransactionMethod.js @@ -0,0 +1,67 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file SignTransactionMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import isString from 'lodash/isString'; +import {SignTransactionMethod} from 'web3-core-method'; + +export default class EthSignTransactionMethod extends SignTransactionMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super(utils, formatters, moduleInstance); + } + + /** + * This method will be executed before the RPC request. + * + * @method beforeExecution + * + * @param {AbstractWeb3Module} moduleInstance + */ + beforeExecution(moduleInstance) { + this.parameters[0] = this.formatters.inputTransactionFormatter(this.parameters[0], moduleInstance); + } + + /** + * Sends a JSON-RPC call request + * + * @method execute + * + * @callback callback callback(error, result) + * @returns {Promise} + */ + execute() { + if (isString(this.parameters[1])) { + const account = this.moduleInstance.accounts.wallet[this.parameters[1]]; + if (account) { + return this.moduleInstance.transactionSigner.sign(this.parameters[0], account.privateKey); + } + } + + return super.execute(); + } +} diff --git a/packages/web3-eth/src/methods/GetBlockMethod.js b/packages/web3-eth/src/methods/GetBlockMethod.js new file mode 100644 index 00000000000..53ddd6fc86c --- /dev/null +++ b/packages/web3-eth/src/methods/GetBlockMethod.js @@ -0,0 +1,51 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetBlockMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import {AbstractGetBlockMethod} from 'web3-core-method'; + +export default class GetBlockMethod extends AbstractGetBlockMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getBlockByNumber', utils, formatters, moduleInstance); + } + + /** + * This method will be executed before the RPC request. + * + * @method beforeExecution + * + * @param {AbstractWeb3Module} moduleInstance + */ + beforeExecution(moduleInstance) { + if (this.isHash(this.parameters[0])) { + this.rpcMethod = 'eth_getBlockByHash'; + } + + super.beforeExecution(moduleInstance); + } +} diff --git a/packages/web3-eth/src/methods/GetBlockTransactionCountMethod.js b/packages/web3-eth/src/methods/GetBlockTransactionCountMethod.js new file mode 100644 index 00000000000..dcbb0c243ae --- /dev/null +++ b/packages/web3-eth/src/methods/GetBlockTransactionCountMethod.js @@ -0,0 +1,53 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetBlockTransactionCountMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import {AbstractGetBlockTransactionCountMethod} from 'web3-core-method'; + +export default class GetBlockTransactionCountMethod extends AbstractGetBlockTransactionCountMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getBlockTransactionCountByNumber', utils, formatters, moduleInstance); + } + + /** + * TODO: Refactor public API and create two methods out of it: eth.getBlockTransactionCountByHash(...) + * + * This method will be executed before the RPC request. + * + * @method beforeExecution + * + * @param {AbstractWeb3Module} moduleInstance + */ + beforeExecution(moduleInstance) { + if (this.isHash(this.parameters[0])) { + this.rpcMethod = 'eth_getBlockTransactionCountByHash'; + } + + super.beforeExecution(moduleInstance); + } +} diff --git a/packages/web3-eth/src/methods/GetBlockUncleCountMethod.js b/packages/web3-eth/src/methods/GetBlockUncleCountMethod.js new file mode 100644 index 00000000000..eea230b67e3 --- /dev/null +++ b/packages/web3-eth/src/methods/GetBlockUncleCountMethod.js @@ -0,0 +1,51 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetBlockUncleCountMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import {AbstractGetBlockUncleCountMethod} from 'web3-core-method'; + +export default class GetBlockUncleCountMethod extends AbstractGetBlockUncleCountMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getUncleCountByBlockNumber', utils, formatters, moduleInstance); + } + + /** + * This method will be executed before the RPC request. + * + * @method beforeExecution + * + * @param {AbstractWeb3Module} moduleInstance + */ + beforeExecution(moduleInstance) { + if (this.isHash(this.parameters[0])) { + this.rpcMethod = 'eth_getUncleCountByBlockHash'; + } + + super.beforeExecution(moduleInstance); + } +} diff --git a/packages/web3-eth/src/methods/GetTransactionFromBlockMethod.js b/packages/web3-eth/src/methods/GetTransactionFromBlockMethod.js new file mode 100644 index 00000000000..cdb15b1d827 --- /dev/null +++ b/packages/web3-eth/src/methods/GetTransactionFromBlockMethod.js @@ -0,0 +1,51 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetTransactionFromBlockMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import {AbstractGetTransactionFromBlockMethod} from 'web3-core-method'; + +export default class GetTransactionFromBlockMethod extends AbstractGetTransactionFromBlockMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getTransactionByBlockNumberAndIndex', utils, formatters, moduleInstance); + } + + /** + * This method will be executed before the RPC request. + * + * @method beforeExecution + * + * @param {AbstractWeb3Module} moduleInstance + */ + beforeExecution(moduleInstance) { + if (this.isHash(this.parameters[0])) { + this.rpcMethod = 'eth_getTransactionByBlockHashAndIndex'; + } + + super.beforeExecution(moduleInstance); + } +} diff --git a/packages/web3-eth/src/methods/GetUncleMethod.js b/packages/web3-eth/src/methods/GetUncleMethod.js new file mode 100644 index 00000000000..111f0191313 --- /dev/null +++ b/packages/web3-eth/src/methods/GetUncleMethod.js @@ -0,0 +1,51 @@ +/* + This file is part of web3.js. + + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file GetUncleMethod.js + * @author Samuel Furter + * @date 2018 + */ + +import {AbstractGetUncleMethod} from 'web3-core-method'; + +export default class GetUncleMethod extends AbstractGetUncleMethod { + /** + * @param {Utils} utils + * @param {Object} formatters + * @param {AbstractWeb3Module} moduleInstance + * + * @constructor + */ + constructor(utils, formatters, moduleInstance) { + super('eth_getUncleByBlockNumberAndIndex', utils, formatters, moduleInstance); + } + + /** + * This method will be executed before the RPC request. + * + * @method beforeExecution + * + * @param {AbstractWeb3Module} moduleInstance + */ + beforeExecution(moduleInstance) { + if (this.isHash(this.parameters[0])) { + this.rpcMethod = 'eth_getUncleByBlockHashAndIndex'; + } + + super.beforeExecution(moduleInstance); + } +} diff --git a/packages/web3-eth/src/signers/TransactionSigner.js b/packages/web3-eth/src/signers/TransactionSigner.js index 4409d2900a0..a3f318c4821 100644 --- a/packages/web3-eth/src/signers/TransactionSigner.js +++ b/packages/web3-eth/src/signers/TransactionSigner.js @@ -16,6 +16,7 @@ * @author Samuel Furter , Fabian Vogelsteller * @date 2019 */ + import Nat from 'eth-lib/lib/nat'; import Bytes from 'eth-lib/lib/bytes'; import Hash from 'eth-lib/lib/hash'; diff --git a/packages/web3-eth/tests/src/EthTest.js b/packages/web3-eth/tests/src/EthTest.js index 2d3c4129105..67cc8c36b1c 100644 --- a/packages/web3-eth/tests/src/EthTest.js +++ b/packages/web3-eth/tests/src/EthTest.js @@ -1,63 +1,22 @@ import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; -import {AbstractSubscription, LogSubscription, SubscriptionsFactory} from 'web3-core-subscriptions'; -import { - CallMethod, - EstimateGasMethod, - GetAccountsMethod, - GetBalanceMethod, - GetBlockMethod, - GetBlockNumberMethod, - GetBlockTransactionCountMethod, - GetBlockUncleCountMethod, - GetCodeMethod, - GetCoinbaseMethod, - GetGasPriceMethod, - GetHashrateMethod, - GetNodeInfoMethod, - GetPastLogsMethod, - GetProtocolVersionMethod, - GetStorageAtMethod, - GetTransactionCountMethod, - GetTransactionFromBlockMethod, - GetTransactionMethod, - GetTransactionReceipt, - GetUncleMethod, - GetWorkMethod, - IsMiningMethod, - IsSyncingMethod, - MethodModuleFactory, - RequestAccountsMethod, - SendRawTransactionMethod, - SendTransactionMethod, - SignMethod, - SignTransactionMethod, - SubmitWorkMethod, - ChainIdMethod, - VersionMethod -} from 'web3-core-method'; +import {AbstractSubscription, LogSubscription} from 'web3-core-subscriptions'; import {AbiCoder} from 'web3-eth-abi'; import {Accounts} from 'web3-eth-accounts'; import {Ens} from 'web3-eth-ens'; import {Iban} from 'web3-eth-iban'; import {Personal} from 'web3-eth-personal'; import {Network} from 'web3-net'; -import {AbstractContract, ContractModuleFactory} from 'web3-eth-contract'; -import {HttpProvider, ProviderDetector, ProviderResolver, ProvidersModuleFactory} from 'web3-providers'; +import {ContractModuleFactory} from 'web3-eth-contract'; import MethodFactory from '../../src/factories/MethodFactory'; import TransactionSigner from '../../src/signers/TransactionSigner'; +import SubscriptionsFactory from '../../src/factories/SubscriptionsFactory'; import Eth from '../../src/Eth'; // Mocks -jest.mock('HttpProvider'); -jest.mock('ProvidersModuleFactory'); -jest.mock('ProviderDetector'); -jest.mock('ProviderResolver'); -jest.mock('MethodModuleFactory'); +jest.mock('AbstractWeb3Module'); jest.mock('AbstractSubscription'); jest.mock('LogSubscription'); -jest.mock('GetPastLogsMethod'); -jest.mock('SubscriptionsFactory'); jest.mock('AbiCoder'); jest.mock('Accounts'); jest.mock('Ens'); @@ -65,9 +24,10 @@ jest.mock('Personal'); jest.mock('Network'); jest.mock('Utils'); jest.mock('formatters'); -jest.mock('AbstractContract'); jest.mock('ContractModuleFactory'); +jest.mock('../../src/factories/MethodFactory'); jest.mock('../../src/signers/TransactionSigner'); +jest.mock('../../src/factories/SubscriptionsFactory'); /** * Eth test @@ -75,11 +35,7 @@ jest.mock('../../src/signers/TransactionSigner'); describe('EthTest', () => { let eth, providerMock, - providersModuleFactoryMock, - providerDetectorMock, - providerResolverMock, - methodModuleFactoryMock, - methodFactory, + methodFactoryMock, contractModuleFactoryMock, networkMock, accountsMock, @@ -90,33 +46,10 @@ describe('EthTest', () => { transactionSignerMock; beforeEach(() => { - new HttpProvider(); - providerMock = HttpProvider.mock.instances[0]; + providerMock = {send: jest.fn(), clearSubscriptions: jest.fn()}; - new ProvidersModuleFactory(); - providersModuleFactoryMock = ProvidersModuleFactory.mock.instances[0]; - - new ProviderDetector(); - providerDetectorMock = ProviderDetector.mock.instances[0]; - providerDetectorMock.detect = jest.fn(() => { - return null; - }); - - new ProviderResolver(); - providerResolverMock = ProviderResolver.mock.instances[0]; - providerResolverMock.resolve = jest.fn(() => { - return providerMock; - }); - - providersModuleFactoryMock.createProviderDetector.mockReturnValueOnce(providerDetectorMock); - - providersModuleFactoryMock.createProviderResolver.mockReturnValueOnce(providerResolverMock); - - new MethodModuleFactory(); - methodModuleFactoryMock = MethodModuleFactory.mock.instances[0]; - methodModuleFactoryMock.createMethodProxy = jest.fn(); - - methodFactory = new MethodFactory(methodModuleFactoryMock, Utils, formatters); + new MethodFactory(); + methodFactoryMock = MethodFactory.mock.instances[0]; new ContractModuleFactory(); contractModuleFactoryMock = ContractModuleFactory.mock.instances[0]; @@ -144,9 +77,7 @@ describe('EthTest', () => { eth = new Eth( providerMock, - providersModuleFactoryMock, - methodModuleFactoryMock, - methodFactory, + methodFactoryMock, networkMock, accountsMock, personalMock, @@ -157,7 +88,8 @@ describe('EthTest', () => { formatters, subscriptionsFactoryMock, contractModuleFactoryMock, - {transactionSigner: transactionSignerMock} + {transactionSigner: transactionSignerMock}, + {} ); }); @@ -185,45 +117,9 @@ describe('EthTest', () => { expect(eth.Contract).toBeInstanceOf(Function); }); - it('JSON-RPC methods check', () => { - expect(eth.methodFactory.methods).toEqual({ - getNodeInfo: GetNodeInfoMethod, - getProtocolVersion: GetProtocolVersionMethod, - getCoinbase: GetCoinbaseMethod, - isMining: IsMiningMethod, - getHashrate: GetHashrateMethod, - isSyncing: IsSyncingMethod, - getGasPrice: GetGasPriceMethod, - getAccounts: GetAccountsMethod, - getBlockNumber: GetBlockNumberMethod, - getBalance: GetBalanceMethod, - getStorageAt: GetStorageAtMethod, - getCode: GetCodeMethod, - getBlock: GetBlockMethod, - getUncle: GetUncleMethod, - getBlockTransactionCount: GetBlockTransactionCountMethod, - getBlockUncleCount: GetBlockUncleCountMethod, - getTransaction: GetTransactionMethod, - getTransactionFromBlock: GetTransactionFromBlockMethod, - getTransactionReceipt: GetTransactionReceipt, - getTransactionCount: GetTransactionCountMethod, - sendSignedTransaction: SendRawTransactionMethod, - signTransaction: SignTransactionMethod, - sendTransaction: SendTransactionMethod, - sign: SignMethod, - call: CallMethod, - estimateGas: EstimateGasMethod, - submitWork: SubmitWorkMethod, - getWork: GetWorkMethod, - getPastLogs: GetPastLogsMethod, - requestAccounts: RequestAccountsMethod, - getChainId: ChainIdMethod, - getId: VersionMethod - }); - }); - it('sets the defaultGasPrice property', () => { eth.initiatedContracts = [{defaultGasPrice: 20}]; + eth.defaultGasPrice = 10; expect(eth.initiatedContracts[0].defaultGasPrice).toEqual(10); @@ -290,13 +186,13 @@ describe('EthTest', () => { it('sets the defaultAccount property', () => { eth.initiatedContracts = [{defaultAccount: '0x0'}]; - Utils.toChecksumAddress.mockReturnValue('0x2'); + Utils.toChecksumAddress.mockReturnValueOnce('0x1'); eth.defaultAccount = '0x1'; - expect(eth.initiatedContracts[0].defaultAccount).toEqual('0x2'); + expect(eth.initiatedContracts[0].defaultAccount).toEqual('0x1'); - expect(eth.defaultAccount).toEqual('0x2'); + expect(eth.defaultAccount).toEqual('0x1'); expect(networkMock.defaultAccount).toEqual('0x1'); @@ -319,21 +215,6 @@ describe('EthTest', () => { }); it('calls subscribe wih "logs" as type', () => { - new GetPastLogsMethod(); - const getPastLogsMethodMock = GetPastLogsMethod.mock.instances[0]; - - const methodFactoryMock = { - createMethod: jest.fn(() => { - return getPastLogsMethodMock; - }) - }; - - eth.methodFactory = methodFactoryMock; - - providersModuleFactoryMock.createProviderDetector.mockReturnValueOnce(providerDetectorMock); - - providersModuleFactoryMock.createProviderResolver.mockReturnValueOnce(providerResolverMock); - subscriptionsFactoryMock.createLogSubscription = jest.fn(); new LogSubscription(); @@ -341,17 +222,15 @@ describe('EthTest', () => { logSubscriptionMock.subscribe.mockReturnValueOnce(logSubscriptionMock); - subscriptionsFactoryMock.createLogSubscription.mockReturnValueOnce(logSubscriptionMock); + subscriptionsFactoryMock.getSubscription.mockReturnValueOnce(logSubscriptionMock); const callback = () => {}; expect(eth.subscribe('logs', {}, callback)).toBeInstanceOf(LogSubscription); - expect(subscriptionsFactoryMock.createLogSubscription).toHaveBeenCalledWith({}, eth, getPastLogsMethodMock); + expect(subscriptionsFactoryMock.getSubscription).toHaveBeenCalledWith(eth, 'logs', {}); expect(logSubscriptionMock.subscribe).toHaveBeenCalledWith(callback); - - expect(methodFactoryMock.createMethod).toHaveBeenCalledWith('getPastLogs'); }); it('calls subscribe wih "newBlockHeaders" as type', () => { @@ -362,13 +241,13 @@ describe('EthTest', () => { abstractSubscriptionMock.subscribe.mockReturnValueOnce(abstractSubscriptionMock); - subscriptionsFactoryMock.createNewHeadsSubscription.mockReturnValueOnce(abstractSubscriptionMock); + subscriptionsFactoryMock.getSubscription.mockReturnValueOnce(abstractSubscriptionMock); const callback = () => {}; expect(eth.subscribe('newBlockHeaders', {}, callback)).toBeInstanceOf(AbstractSubscription); - expect(subscriptionsFactoryMock.createNewHeadsSubscription).toHaveBeenCalledWith(eth); + expect(subscriptionsFactoryMock.getSubscription).toHaveBeenCalledWith(eth, 'newBlockHeaders', {}); expect(abstractSubscriptionMock.subscribe).toHaveBeenCalledWith(callback); }); @@ -381,13 +260,13 @@ describe('EthTest', () => { abstractSubscriptionMock.subscribe.mockReturnValueOnce(abstractSubscriptionMock); - subscriptionsFactoryMock.createNewPendingTransactionsSubscription.mockReturnValueOnce(abstractSubscriptionMock); + subscriptionsFactoryMock.getSubscription.mockReturnValueOnce(abstractSubscriptionMock); const callback = () => {}; expect(eth.subscribe('pendingTransactions', {}, callback)).toBeInstanceOf(AbstractSubscription); - expect(subscriptionsFactoryMock.createNewPendingTransactionsSubscription).toHaveBeenCalledWith(eth); + expect(subscriptionsFactoryMock.getSubscription).toHaveBeenCalledWith(eth, 'pendingTransactions', {}); expect(abstractSubscriptionMock.subscribe).toHaveBeenCalledWith(callback); }); @@ -400,62 +279,34 @@ describe('EthTest', () => { abstractSubscriptionMock.subscribe.mockReturnValueOnce(abstractSubscriptionMock); - subscriptionsFactoryMock.createSyncingSubscription.mockReturnValueOnce(abstractSubscriptionMock); + subscriptionsFactoryMock.getSubscription.mockReturnValueOnce(abstractSubscriptionMock); const callback = () => {}; expect(eth.subscribe('syncing', {}, callback)).toBeInstanceOf(AbstractSubscription); - expect(subscriptionsFactoryMock.createSyncingSubscription).toHaveBeenCalledWith(eth); + expect(subscriptionsFactoryMock.getSubscription).toHaveBeenCalledWith(eth, 'syncing', {}); expect(abstractSubscriptionMock.subscribe).toHaveBeenCalledWith(callback); }); - it('calls subscribe wih unknown type', () => { - expect(() => { - eth.subscribe('NOPE', {}, () => {}); - }).toThrow('Unknown subscription: NOPE'); - }); - it('calls the Contract factory method from the constructor', () => { - contractModuleFactoryMock.createContract.mockReturnValueOnce(new AbstractContract()); + contractModuleFactoryMock.createContract.mockReturnValueOnce({}); - expect(new eth.Contract([], '0x0', {})).toBeInstanceOf(AbstractContract); + eth.currentProvider = providerMock; + expect(new eth.Contract([], '0x0', {})).toEqual({}); expect(eth.initiatedContracts).toHaveLength(1); - expect(contractModuleFactoryMock.createContract).toHaveBeenCalledWith( - eth.currentProvider, - eth.providersModuleFactory, - eth.accounts, - [], - '0x0', - {transactionSigner: transactionSignerMock} - ); - }); - - it('calls setProvider and returns true', () => { - eth.initiatedContracts = [ - { - setProvider: jest.fn(() => { - return true; - }) - } - ]; - - networkMock.setProvider = jest.fn(); - personalMock.setProvider = jest.fn(); - - networkMock.setProvider.mockReturnValueOnce(true); - - personalMock.setProvider.mockReturnValueOnce(true); - - expect(eth.setProvider('provider', 'net')).toEqual(true); - - expect(eth.initiatedContracts[0].setProvider).toHaveBeenCalledWith('provider', 'net'); - - expect(networkMock.setProvider).toHaveBeenCalledWith('provider', 'net'); - - expect(personalMock.setProvider).toHaveBeenCalledWith('provider', 'net'); + expect(contractModuleFactoryMock.createContract).toHaveBeenCalledWith(providerMock, eth.accounts, [], '0x0', { + defaultAccount: eth.defaultAccount, + defaultBlock: eth.defaultBlock, + defaultGas: eth.defaultGas, + defaultGasPrice: eth.defaultGasPrice, + transactionBlockTimeout: eth.transactionBlockTimeout, + transactionConfirmationBlocks: eth.transactionConfirmationBlocks, + transactionPollingTimeout: eth.transactionPollingTimeout, + transactionSigner: eth.transactionSigner + }); }); }); diff --git a/packages/web3-eth/tests/src/factories/MethodFactoryTest.js b/packages/web3-eth/tests/src/factories/MethodFactoryTest.js new file mode 100644 index 00000000000..5966e29da12 --- /dev/null +++ b/packages/web3-eth/tests/src/factories/MethodFactoryTest.js @@ -0,0 +1,94 @@ +import { + CallMethod, + ChainIdMethod, + EstimateGasMethod, + EthSendTransactionMethod, + GetAccountsMethod, + GetBalanceMethod, + GetBlockNumberMethod, + GetCodeMethod, + GetCoinbaseMethod, + GetGasPriceMethod, + GetHashrateMethod, + GetNodeInfoMethod, + GetPastLogsMethod, + GetProtocolVersionMethod, + GetStorageAtMethod, + GetTransactionCountMethod, + GetTransactionMethod, + GetTransactionReceiptMethod, + GetWorkMethod, + IsMiningMethod, + IsSyncingMethod, + RequestAccountsMethod, + SendRawTransactionMethod, + SubmitWorkMethod, + VersionMethod +} from 'web3-core-method'; +import * as Utils from 'web3-utils'; +import {formatters} from 'web3-core-helpers'; +import MethodFactory from '../../../src/factories/MethodFactory'; +import GetBlockMethod from '../../../src/methods/GetBlockMethod'; +import GetUncleMethod from '../../../src/methods/GetUncleMethod'; +import GetBlockTransactionCountMethod from '../../../src/methods/GetBlockTransactionCountMethod'; +import GetBlockUncleCountMethod from '../../../src/methods/GetBlockUncleCountMethod'; +import GetTransactionFromBlockMethod from '../../../src/methods/GetTransactionFromBlockMethod'; +import EthSignTransactionMethod from '../../../src/methods/EthSignTransactionMethod'; +import EthSignMethod from '../../../src/methods/EthSignMethod'; + +jest.mock('Utils'); +jest.mock('formatters'); + +/** + * MethodFactory test + */ +describe('MethodFactoryTest', () => { + let methodFactory; + + beforeEach(() => { + methodFactory = new MethodFactory(Utils, formatters); + }); + + it('constructor check', () => { + expect(methodFactory.utils).toEqual(Utils); + + expect(methodFactory.formatters).toEqual(formatters); + }); + + it('JSON-RPC methods check', () => { + expect(methodFactory.methods).toEqual({ + getNodeInfo: GetNodeInfoMethod, + getProtocolVersion: GetProtocolVersionMethod, + getCoinbase: GetCoinbaseMethod, + isMining: IsMiningMethod, + getHashrate: GetHashrateMethod, + isSyncing: IsSyncingMethod, + getGasPrice: GetGasPriceMethod, + getAccounts: GetAccountsMethod, + getBlockNumber: GetBlockNumberMethod, + getBalance: GetBalanceMethod, + getStorageAt: GetStorageAtMethod, + getCode: GetCodeMethod, + getBlock: GetBlockMethod, + getUncle: GetUncleMethod, + getBlockTransactionCount: GetBlockTransactionCountMethod, + getBlockUncleCount: GetBlockUncleCountMethod, + getTransaction: GetTransactionMethod, + getTransactionFromBlock: GetTransactionFromBlockMethod, + getTransactionReceipt: GetTransactionReceiptMethod, + getTransactionCount: GetTransactionCountMethod, + sendSignedTransaction: SendRawTransactionMethod, + signTransaction: EthSignTransactionMethod, + sendTransaction: EthSendTransactionMethod, + sign: EthSignMethod, + call: CallMethod, + estimateGas: EstimateGasMethod, + submitWork: SubmitWorkMethod, + getWork: GetWorkMethod, + getPastLogs: GetPastLogsMethod, + requestAccounts: RequestAccountsMethod, + getChainId: ChainIdMethod, + getId: VersionMethod + }); + }); +}); diff --git a/packages/web3-eth/tests/src/factories/SubscriptionsFactoryTest.js b/packages/web3-eth/tests/src/factories/SubscriptionsFactoryTest.js new file mode 100644 index 00000000000..1b1ebbe9b64 --- /dev/null +++ b/packages/web3-eth/tests/src/factories/SubscriptionsFactoryTest.js @@ -0,0 +1,59 @@ +import * as Utils from 'web3-utils'; +import {formatters} from 'web3-core-helpers'; +import { + LogSubscription, + NewHeadsSubscription, + NewPendingTransactionsSubscription, + SyncingSubscription +} from 'web3-core-subscriptions'; + +import SubscriptionsFactory from '../../../src/factories/SubscriptionsFactory'; + +// Mocks +jest.mock('LogSubscription'); +jest.mock('NewHeadsSubscription'); +jest.mock('NewPendingTransactionsSubscription'); +jest.mock('SyncingSubscription'); +jest.mock('Utils'); +jest.mock('formatters'); + +/** + * SubscriptionsFactory test + */ +describe('SubscriptionsFactoryTest', () => { + let subscriptionsFactory; + + beforeEach(() => { + subscriptionsFactory = new SubscriptionsFactory(Utils, formatters); + }); + + it('constructor check', () => { + expect(subscriptionsFactory.utils).toEqual(Utils); + + expect(subscriptionsFactory.formatters).toEqual(formatters); + }); + + it('calls getSubscription with "logs" and returns the LogsSubscription', () => { + expect(subscriptionsFactory.getSubscription({}, 'logs', {})).toBeInstanceOf(LogSubscription); + }); + + it('calls getSubscription with "newBlockHeaders" and returns the LogsSubscription', () => { + expect(subscriptionsFactory.getSubscription({}, 'newBlockHeaders', {})).toBeInstanceOf(NewHeadsSubscription); + }); + + it('calls getSubscription with "pendingTransactions" and returns the LogsSubscription', () => { + expect(subscriptionsFactory.getSubscription({}, 'pendingTransactions', {})).toBeInstanceOf( + NewPendingTransactionsSubscription + ); + }); + + it('calls getSubscription with "syncing" and returns the LogsSubscription', () => { + expect(subscriptionsFactory.getSubscription({}, 'syncing', {})).toBeInstanceOf(SyncingSubscription); + }); + + it('calls getSubscription and throws an error', () => { + expect(() => { + subscriptionsFactory.getSubscription({}, 'blub', {}); + }).toThrow('Unknown subscription: blub'); + }); +}); diff --git a/packages/web3-eth/tests/src/methods/EthSignMethodTest.js b/packages/web3-eth/tests/src/methods/EthSignMethodTest.js new file mode 100644 index 00000000000..fc9e8a34347 --- /dev/null +++ b/packages/web3-eth/tests/src/methods/EthSignMethodTest.js @@ -0,0 +1,86 @@ +import {formatters} from 'web3-core-helpers'; +import {AbstractWeb3Module} from 'web3-core'; +import {SignMethod} from 'web3-core-method'; +import * as Utils from 'web3-utils'; +import EthSignMethod from '../../../src/methods/EthSignMethod'; + +// Mocks +jest.mock('Utils'); +jest.mock('formatters'); +jest.mock('AbstractWeb3Module'); + +/** + * EthSignMethod test + */ +describe('EthSignMethodTest', () => { + let method, moduleInstanceMock, accountsMock; + + beforeEach(() => { + accountsMock = {}; + accountsMock.sign = jest.fn(); + accountsMock.wallet = {'0x0': {privateKey: '0x0', address: '0x0'}}; + accountsMock.accountsIndex = 1; + + new AbstractWeb3Module({}, {}, {}, {}); + moduleInstanceMock = AbstractWeb3Module.mock.instances[0]; + moduleInstanceMock.accounts = accountsMock; + + formatters.inputAddressFormatter.mockReturnValue('0x0'); + formatters.inputSignFormatter.mockReturnValue('string'); + + method = new EthSignMethod(Utils, formatters, moduleInstanceMock); + method.callback = jest.fn(); + method.parameters = ['nope', '0x0']; + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(SignMethod); + }); + + it('calls execute with wallets defined', async () => { + accountsMock.sign.mockReturnValueOnce('0x00'); + + const response = await method.execute(moduleInstanceMock); + + expect(response).toEqual('0x00'); + + expect(method.callback).toHaveBeenCalledWith(false, '0x00'); + + expect(method.parameters[0]).toEqual('string'); + + expect(method.parameters[1]).toEqual('0x0'); + + expect(formatters.inputAddressFormatter).toHaveBeenCalledWith('0x0'); + + expect(formatters.inputSignFormatter).toHaveBeenCalledWith('nope'); + + expect(accountsMock.sign).toHaveBeenCalledWith('string', '0x0'); + }); + + it('calls execute with wallets defined but accounts.sign throws an error', async () => { + const error = new Error('SIGN ERROR'); + accountsMock.sign = jest.fn(() => { + throw error; + }); + + try { + await method.execute(moduleInstanceMock); + } catch (error2) { + expect(error2).toEqual(error); + + expect(method.callback).toHaveBeenCalledWith(error, null); + + expect(accountsMock.sign).toHaveBeenCalledWith('string', '0x0'); + } + }); + + it('calls execute and the account does not exist in the eth-accounts wallet', async () => { + accountsMock.wallet = {nope: {privateKey: '0x0'}}; + + moduleInstanceMock.currentProvider = {send: jest.fn()}; + + method.execute(moduleInstanceMock); + + expect(moduleInstanceMock.currentProvider.send).toHaveBeenCalledWith('eth_sign', method.parameters); + }); +}); diff --git a/packages/web3-eth/tests/src/methods/EthSignTransactionMethodTest.js b/packages/web3-eth/tests/src/methods/EthSignTransactionMethodTest.js new file mode 100644 index 00000000000..906d5bfa1b2 --- /dev/null +++ b/packages/web3-eth/tests/src/methods/EthSignTransactionMethodTest.js @@ -0,0 +1,61 @@ +import {formatters} from 'web3-core-helpers'; +import {SignTransactionMethod} from 'web3-core-method'; +import EthSignTransactionMethod from '../../../src/methods/EthSignTransactionMethod'; + +// Mocks +jest.mock('formatters'); + +/** + * EthSignTransactionMethod test + */ +describe('EthSignTransactionMethodTest', () => { + let method, moduleInstanceMock; + + beforeEach(() => { + moduleInstanceMock = {}; + moduleInstanceMock.accounts = {wallet: {'0x0': {privateKey: '0x0'}}}; + moduleInstanceMock.transactionSigner = { + sign: jest.fn(() => { + return Promise.resolve('0x00'); + }) + }; + + method = new EthSignTransactionMethod(null, formatters, moduleInstanceMock); + }); + + it('constructor check', () => { + expect(method).toBeInstanceOf(SignTransactionMethod); + }); + + it('beforeExecution should execute the inputTransactionFormatter', () => { + method.parameters = [{}]; + + formatters.inputTransactionFormatter.mockReturnValueOnce({empty: false}); + + method.beforeExecution({}); + + expect(method.parameters[0]).toHaveProperty('empty', false); + + expect(formatters.inputTransactionFormatter).toHaveBeenCalledWith({}, {}); + }); + + it('calls execute and a local unlocked account does exist', async () => { + method.parameters = [{}, '0x0']; + + const response = await method.execute(); + + expect(response).toEqual('0x00'); + + expect(method.moduleInstance.transactionSigner.sign).toHaveBeenCalledWith({}, '0x0'); + }); + + it('calls execute and a local unlocked account does not exist', async () => { + moduleInstanceMock.accounts = {wallet: {}}; + moduleInstanceMock.currentProvider = {send: jest.fn()}; + + method.parameters = [{}]; + method.execute(); + + expect(moduleInstanceMock.currentProvider.send).toHaveBeenCalledWith('eth_signTransaction', method.parameters); + }); +}); diff --git a/packages/web3-eth/tests/src/methods/GetBlockMethodTest.js b/packages/web3-eth/tests/src/methods/GetBlockMethodTest.js new file mode 100644 index 00000000000..58ea17f451d --- /dev/null +++ b/packages/web3-eth/tests/src/methods/GetBlockMethodTest.js @@ -0,0 +1,33 @@ +import {formatters} from 'web3-core-helpers'; +import GetBlockMethod from '../../../src/methods/GetBlockMethod'; + +/** + * GetBlockMethod test + */ +describe('GetBlockMethodTest', () => { + let getBlockMethod; + + beforeEach(() => { + getBlockMethod = new GetBlockMethod({}, formatters, {}); + }); + + it('constructor check', () => { + expect(getBlockMethod.rpcMethod).toEqual('eth_getBlockByNumber'); + }); + + it('calls execute with hash', () => { + getBlockMethod.parameters = ['0x0']; + + getBlockMethod.beforeExecution({}); + + expect(getBlockMethod.rpcMethod).toEqual('eth_getBlockByHash'); + }); + + it('calls execute with number', () => { + getBlockMethod.parameters = [100]; + + getBlockMethod.beforeExecution({}); + + expect(getBlockMethod.rpcMethod).toEqual('eth_getBlockByNumber'); + }); +}); diff --git a/packages/web3-eth/tests/src/methods/GetBlockTransactionCountMethodTest.js b/packages/web3-eth/tests/src/methods/GetBlockTransactionCountMethodTest.js new file mode 100644 index 00000000000..03bc18c0774 --- /dev/null +++ b/packages/web3-eth/tests/src/methods/GetBlockTransactionCountMethodTest.js @@ -0,0 +1,33 @@ +import {formatters} from 'web3-core-helpers'; +import GetBlockTransactionCountMethod from '../../../src/methods/GetBlockTransactionCountMethod'; + +/** + * GetBlockTransactionCountMethod test + */ +describe('GetBlockTransactionCountMethodTest', () => { + let getBlockTransactionCountMethod; + + beforeEach(() => { + getBlockTransactionCountMethod = new GetBlockTransactionCountMethod({}, formatters, {}); + }); + + it('constructor check', () => { + expect(getBlockTransactionCountMethod.rpcMethod).toEqual('eth_getBlockTransactionCountByNumber'); + }); + + it('calls execute with hash', () => { + getBlockTransactionCountMethod.parameters = ['0x0']; + + getBlockTransactionCountMethod.beforeExecution({}); + + expect(getBlockTransactionCountMethod.rpcMethod).toEqual('eth_getBlockTransactionCountByHash'); + }); + + it('calls execute with number', () => { + getBlockTransactionCountMethod.parameters = [100]; + + getBlockTransactionCountMethod.beforeExecution({}); + + expect(getBlockTransactionCountMethod.rpcMethod).toEqual('eth_getBlockTransactionCountByNumber'); + }); +}); diff --git a/packages/web3-eth/tests/src/methods/GetBlockUncleCountMethodTest.js b/packages/web3-eth/tests/src/methods/GetBlockUncleCountMethodTest.js new file mode 100644 index 00000000000..9274ebd5463 --- /dev/null +++ b/packages/web3-eth/tests/src/methods/GetBlockUncleCountMethodTest.js @@ -0,0 +1,33 @@ +import {formatters} from 'web3-core-helpers'; +import GetBlockUncleCountMethod from '../../../src/methods/GetBlockUncleCountMethod'; + +/** + * GetBlockUncleCountMethod test + */ +describe('GetBlockUncleCountMethodTest', () => { + let getBlockUncleCountMethod; + + beforeEach(() => { + getBlockUncleCountMethod = new GetBlockUncleCountMethod({}, formatters, {}); + }); + + it('constructor check', () => { + expect(getBlockUncleCountMethod.rpcMethod).toEqual('eth_getUncleCountByBlockNumber'); + }); + + it('calls execute with hash', () => { + getBlockUncleCountMethod.parameters = ['0x0']; + + getBlockUncleCountMethod.beforeExecution({}); + + expect(getBlockUncleCountMethod.rpcMethod).toEqual('eth_getUncleCountByBlockHash'); + }); + + it('calls execute with number', () => { + getBlockUncleCountMethod.parameters = [100]; + + getBlockUncleCountMethod.beforeExecution({}); + + expect(getBlockUncleCountMethod.rpcMethod).toEqual('eth_getUncleCountByBlockNumber'); + }); +}); diff --git a/packages/web3-eth/tests/src/methods/GetTransactionFromBlockMethodTest.js b/packages/web3-eth/tests/src/methods/GetTransactionFromBlockMethodTest.js new file mode 100644 index 00000000000..b8af9c32789 --- /dev/null +++ b/packages/web3-eth/tests/src/methods/GetTransactionFromBlockMethodTest.js @@ -0,0 +1,34 @@ +import * as Utils from 'web3-utils'; +import {formatters} from 'web3-core-helpers'; +import GetTransactionFromBlockMethod from '../../../src/methods/GetTransactionFromBlockMethod'; + +/** + * GetTransactionFromBlockMethod test + */ +describe('GetTransactionFromBlockMethodTest', () => { + let getTransactionFromBlockMethod; + + beforeEach(() => { + getTransactionFromBlockMethod = new GetTransactionFromBlockMethod(Utils, formatters, {}); + }); + + it('constructor check', () => { + expect(getTransactionFromBlockMethod.rpcMethod).toEqual('eth_getTransactionByBlockNumberAndIndex'); + }); + + it('calls execute with hash', () => { + getTransactionFromBlockMethod.parameters = ['0x0']; + + getTransactionFromBlockMethod.beforeExecution({}); + + expect(getTransactionFromBlockMethod.rpcMethod).toEqual('eth_getTransactionByBlockHashAndIndex'); + }); + + it('calls execute with number', () => { + getTransactionFromBlockMethod.parameters = [100]; + + getTransactionFromBlockMethod.beforeExecution({}); + + expect(getTransactionFromBlockMethod.rpcMethod).toEqual('eth_getTransactionByBlockNumberAndIndex'); + }); +}); diff --git a/packages/web3-eth/tests/src/methods/GetUncleMethodTest.js b/packages/web3-eth/tests/src/methods/GetUncleMethodTest.js new file mode 100644 index 00000000000..187b1581c39 --- /dev/null +++ b/packages/web3-eth/tests/src/methods/GetUncleMethodTest.js @@ -0,0 +1,34 @@ +import * as Utils from 'web3-utils'; +import {formatters} from 'web3-core-helpers'; +import GetUncleMethod from '../../../src/methods/GetUncleMethod'; + +/** + * GetUncleMethodTest test + */ +describe('GetUncleMethodTest', () => { + let getUncleMethod; + + beforeEach(() => { + getUncleMethod = new GetUncleMethod(Utils, formatters, {}); + }); + + it('constructor check', () => { + expect(getUncleMethod.rpcMethod).toEqual('eth_getUncleByBlockNumberAndIndex'); + }); + + it('calls execute with hash', () => { + getUncleMethod.parameters = ['0x0']; + + getUncleMethod.beforeExecution({}); + + expect(getUncleMethod.rpcMethod).toEqual('eth_getUncleByBlockHashAndIndex'); + }); + + it('calls execute with number', () => { + getUncleMethod.parameters = [100]; + + getUncleMethod.beforeExecution({}); + + expect(getUncleMethod.rpcMethod).toEqual('eth_getUncleByBlockNumberAndIndex'); + }); +}); diff --git a/packages/web3-eth/tests/src/signers/TransactionSignerTest.js b/packages/web3-eth/tests/src/signers/TransactionSignerTest.js index 0ce7b10be90..12817d876d4 100644 --- a/packages/web3-eth/tests/src/signers/TransactionSignerTest.js +++ b/packages/web3-eth/tests/src/signers/TransactionSignerTest.js @@ -118,4 +118,100 @@ describe('TransactionSignerTest', () => { expect(Account.decodeSignature).toHaveBeenCalledWith('signature'); }); + + it('calls sign and throws an error because no private key is given', async () => { + await expect(transactionSigner.sign({})).rejects.toThrow('No privateKey given to the TransactionSigner.'); + }); + + it('calls sign with a prefixed pk and returns the expected resolved promise', async () => { + const tx = { + gas: 1, + nonce: 2, + gasPrice: 3, + chainId: 4, + value: 5, + to: 'LOWERCASE', + data: 'data' + }; + + RLP.encode = jest.fn(); + RLP.decode = jest.fn(); + Hash.keccak256 = jest.fn(); + Account.makeSigner = jest.fn(); + Account.decodeSignature = jest.fn(); + Nat.toNumber = jest.fn(); + Bytes.fromNat = jest.fn(); + + formatters.txInputFormatter.mockReturnValueOnce(tx); + + Utils.numberToHex.mockReturnValueOnce(1); + + RLP.encode.mockReturnValue('encoded'); + + Bytes.fromNat.mockReturnValue(1); + + Hash.keccak256.mockReturnValue('hash'); + + const signer = jest.fn(); + + Account.makeSigner.mockReturnValueOnce(signer); + + signer.mockReturnValueOnce('signature'); + + Nat.toNumber.mockReturnValueOnce(1); + + Account.decodeSignature.mockReturnValueOnce(['seven', 'eight', 'nine']); + + RLP.decode + .mockReturnValueOnce(['zero', 'one', 'two', 'three', 'four', 'five', 'six']) + .mockReturnValueOnce(['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight']); + + await expect(transactionSigner.sign(tx, '0xpk')).resolves.toEqual({ + messageHash: 'hash', + v: 'six', + r: 'seven', + s: 'eight', + rawTransaction: 'encoded' + }); + + expect(formatters.txInputFormatter).toHaveBeenCalledWith(tx); + + expect(Utils.numberToHex).toHaveBeenCalledWith(4); + + expect(Bytes.fromNat).toHaveBeenNthCalledWith(1, 2); + + expect(Bytes.fromNat).toHaveBeenNthCalledWith(2, 3); + + expect(Bytes.fromNat).toHaveBeenNthCalledWith(3, 1); + + expect(Bytes.fromNat).toHaveBeenNthCalledWith(4, 5); + + expect(Bytes.fromNat).toHaveBeenNthCalledWith(5, 1); + + expect(RLP.encode).toHaveBeenNthCalledWith(1, [1, 1, 1, 'lowercase', 1, 'data', 1, '0x', '0x']); + + expect(RLP.encode).toHaveBeenNthCalledWith(2, [ + 'zero', + 'one', + 'two', + 'three', + 'four', + 'five', + 'seven', + 'eight', + 'nine' + ]); + + expect(Hash.keccak256).toHaveBeenCalledWith('encoded'); + + expect(Nat.toNumber).toHaveBeenCalledWith(1); + + expect(Account.makeSigner).toHaveBeenCalledWith(37); + + expect(signer).toHaveBeenCalledWith('hash', 'pk'); + + expect(RLP.decode).toHaveBeenCalledWith('encoded'); + + expect(Account.decodeSignature).toHaveBeenCalledWith('signature'); + }); }); diff --git a/packages/web3-eth/types/tests/eth.tests.ts b/packages/web3-eth/types/tests/eth.tests.ts index e863abdfb32..a5694ab5d6d 100644 --- a/packages/web3-eth/types/tests/eth.tests.ts +++ b/packages/web3-eth/types/tests/eth.tests.ts @@ -71,7 +71,7 @@ eth.subscribe('pendingTransactions', null, (error: Error, transactionHash: strin // $ExpectType Providers Eth.providers; -// $ExpectType string | HttpProvider | IpcProvider | WebsocketProvider | EthereumProvider | null +// $ExpectType object | null eth.givenProvider; // $ExpectType BatchRequest diff --git a/packages/web3-net/package-lock.json b/packages/web3-net/package-lock.json index d76bda5f4ee..92ec72ff8b2 100644 --- a/packages/web3-net/package-lock.json +++ b/packages/web3-net/package-lock.json @@ -15,12 +15,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -31,17 +33,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -50,6 +55,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -57,27 +63,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -87,12 +98,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -105,6 +118,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -114,12 +128,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -128,6 +144,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -136,22 +153,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -162,6 +183,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -170,6 +192,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -180,6 +203,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -189,12 +213,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -202,12 +228,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -215,22 +243,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -243,6 +275,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -250,12 +283,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -264,17 +299,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -282,23 +320,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -308,6 +348,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -315,22 +356,26 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -344,27 +389,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -372,12 +422,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -388,6 +440,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -397,17 +450,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -416,6 +472,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -424,6 +481,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -436,17 +494,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -456,6 +517,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -463,19 +525,22 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -486,6 +551,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -494,47 +560,56 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -543,27 +618,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -572,6 +652,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -583,6 +664,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -591,6 +673,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -605,42 +688,48 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -648,12 +737,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -661,12 +752,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -674,17 +767,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -693,6 +789,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -702,22 +799,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -726,6 +827,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -733,47 +835,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -782,12 +893,14 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", @@ -798,6 +911,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -824,12 +938,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -841,6 +957,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -849,6 +966,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -858,17 +976,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -876,27 +997,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -904,22 +1030,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -935,12 +1065,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -950,6 +1082,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -957,22 +1090,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -981,12 +1118,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1000,13 +1139,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1015,6 +1155,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1022,22 +1163,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1045,12 +1190,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1061,6 +1208,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1068,12 +1216,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1082,12 +1232,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1096,6 +1248,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1106,6 +1259,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1115,17 +1269,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1145,6 +1302,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-net/package.json b/packages/web3-net/package.json index 479bca7628c..ae1cac3d048 100644 --- a/packages/web3-net/package.json +++ b/packages/web3-net/package.json @@ -17,7 +17,6 @@ }, "dependencies": { "@babel/runtime": "^7.3.1", - "dtslint": "0.5.4", "lodash": "^4.17.11", "web3-core": "1.0.0-beta.48", "web3-core-helpers": "1.0.0-beta.48", diff --git a/packages/web3-net/src/Network.js b/packages/web3-net/src/Network.js index 8a2274e79ef..846063f930b 100644 --- a/packages/web3-net/src/Network.js +++ b/packages/web3-net/src/Network.js @@ -26,17 +26,16 @@ import isFunction from 'lodash/isFunction'; export default class Network extends AbstractWeb3Module { /** * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {MethodModuleFactory} methodModuleFactory * @param {MethodFactory} methodFactory * @param {Utils} utils * @param {Object} formatters * @param {Object} options + * @param {Net.Socket} nodeNet * * @constructor */ - constructor(provider, providersModuleFactory, methodModuleFactory, methodFactory, utils, formatters, options) { - super(provider, providersModuleFactory, methodModuleFactory, methodFactory, options); + constructor(provider, methodFactory, utils, formatters, options, nodeNet) { + super(provider, options, methodFactory, nodeNet); this.utils = utils; this.formatters = formatters; diff --git a/packages/web3-net/src/factories/MethodFactory.js b/packages/web3-net/src/factories/MethodFactory.js index 64347a98ad1..0092155e717 100644 --- a/packages/web3-net/src/factories/MethodFactory.js +++ b/packages/web3-net/src/factories/MethodFactory.js @@ -24,14 +24,13 @@ import {AbstractMethodFactory, GetBlockMethod, ListeningMethod, PeerCountMethod, export default class MethodFactory extends AbstractMethodFactory { /** - * @param {MethodModuleFactory} methodModuleFactory * @param {Utils} utils * @param {Object} formatters * * @constructor */ - constructor(methodModuleFactory, utils, formatters) { - super(methodModuleFactory, utils, formatters); + constructor(utils, formatters) { + super(utils, formatters); this.methods = { getId: VersionMethod, diff --git a/packages/web3-net/src/factories/NetworkModuleFactory.js b/packages/web3-net/src/factories/NetworkModuleFactory.js deleted file mode 100644 index 97f45b189da..00000000000 --- a/packages/web3-net/src/factories/NetworkModuleFactory.js +++ /dev/null @@ -1,74 +0,0 @@ -/* - This file is part of web3.js. - - web3.js is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - web3.js is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with web3.js. If not, see . -*/ -/** - * @file NetworkModuleFactory.js - * @author Samuel Furter - * @date 2018 - */ - -import Network from '../Network'; -import MethodFactory from './MethodFactory'; - -export default class NetworkModuleFactory { - /** - * @param {Utils} utils - * @param {Object} formatters - * - * @constructor - */ - constructor(utils, formatters) { - this.utils = utils; - this.formatters = formatters; - } - - /** - * Returns an object of type Network - * - * @method createNetworkModule - * - * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {MethodModuleFactory} methodModuleFactory - * @param {Object} options - * - * @returns {Network} - */ - createNetworkModule(provider, providersModuleFactory, methodModuleFactory, options) { - return new Network( - provider, - providersModuleFactory, - methodModuleFactory, - this.createMethodFactory(methodModuleFactory), - this.utils, - this.formatters, - options - ); - } - - /** - * Returns an object of MethodFactory - * - * @method createMethodFactory - * - * @param {MethodModuleFactory} methodModuleFactory - * - * @returns {MethodFactory} - */ - createMethodFactory(methodModuleFactory) { - return new MethodFactory(methodModuleFactory, this.utils, this.formatters); - } -} diff --git a/packages/web3-net/src/index.js b/packages/web3-net/src/index.js index 7e1aef6c279..321b6e64065 100644 --- a/packages/web3-net/src/index.js +++ b/packages/web3-net/src/index.js @@ -20,11 +20,10 @@ * @date 2018 */ -import {ProvidersModuleFactory} from 'web3-providers'; -import {MethodModuleFactory} from 'web3-core-method'; import {formatters} from 'web3-core-helpers'; import * as Utils from 'web3-utils'; -import NetworkModuleFactory from './factories/NetworkModuleFactory'; +import MethodFactory from './factories/MethodFactory'; +import NetworkModule from './Network.js'; /** * Creates the Network Object @@ -32,15 +31,11 @@ import NetworkModuleFactory from './factories/NetworkModuleFactory'; * @method Network * * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider + * @param {Net.Socket} net * @param {Object} options * * @returns {Network} */ -export const Network = (provider, options) => { - return new NetworkModuleFactory(Utils, formatters).createNetworkModule( - provider, - new ProvidersModuleFactory(), - new MethodModuleFactory(), - options - ); +export const Network = (provider, net, options) => { + return new NetworkModule(provider, new MethodFactory(Utils, formatters), Utils, formatters, options, net); }; diff --git a/packages/web3-net/tests/src/NetworkTest.js b/packages/web3-net/tests/src/NetworkTest.js index 179cb4de062..073000c0f09 100644 --- a/packages/web3-net/tests/src/NetworkTest.js +++ b/packages/web3-net/tests/src/NetworkTest.js @@ -1,79 +1,30 @@ import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; -import {HttpProvider, ProvidersModuleFactory, ProviderDetector, ProviderResolver} from 'web3-providers'; -import {MethodModuleFactory, VersionMethod, GetBlockMethod, ListeningMethod, PeerCountMethod} from 'web3-core-method'; import {AbstractWeb3Module} from 'web3-core'; -import MethodFactory from '../../src/factories/MethodFactory'; import Network from '../../src/Network'; // Mocks jest.mock('Utils'); jest.mock('formatters'); -jest.mock('HttpProvider'); -jest.mock('ProvidersModuleFactory'); -jest.mock('ProviderDetector'); -jest.mock('ProviderResolver'); -jest.mock('MethodModuleFactory'); /** * Network test */ describe('NetworkTest', () => { - let network, - providerMock, - providersModuleFactoryMock, - providerDetectorMock, - providerResolverMock, - methodModuleFactoryMock, - methodFactory; + let network, providerMock, methodFactoryMock; beforeEach(() => { - new HttpProvider(); - providerMock = HttpProvider.mock.instances[0]; - - new ProvidersModuleFactory(); - providersModuleFactoryMock = ProvidersModuleFactory.mock.instances[0]; - - new ProviderDetector(); - providerDetectorMock = ProviderDetector.mock.instances[0]; - providerDetectorMock.detect = jest.fn(() => { - return null; - }); - - new ProviderResolver(); - providerResolverMock = ProviderResolver.mock.instances[0]; - providerResolverMock.resolve = jest.fn(() => { - return providerMock; - }); - - providersModuleFactoryMock.createProviderDetector.mockReturnValueOnce(providerDetectorMock); - - providersModuleFactoryMock.createProviderResolver.mockReturnValueOnce(providerResolverMock); - - new MethodModuleFactory(); - methodModuleFactoryMock = MethodModuleFactory.mock.instances[0]; - methodModuleFactoryMock.createMethodProxy = jest.fn(); - - methodFactory = new MethodFactory(methodModuleFactoryMock, Utils, formatters); - - network = new Network( - providerMock, - providersModuleFactoryMock, - methodModuleFactoryMock, - methodFactory, - Utils, - formatters, - {} - ); + providerMock = {send: jest.fn(), clearSubscriptions: jest.fn()}; + methodFactoryMock = { + hasMethod: () => { + return false; + } + }; + + network = new Network(providerMock, methodFactoryMock, Utils, formatters, {}, {}); }); it('constructor check', () => { - expect(network.currentProvider).toEqual(providerMock); - - expect(network.providersModuleFactory).toEqual(providersModuleFactoryMock); - - expect(network.methodFactory).toEqual(methodFactory); - expect(network.utils).toEqual(Utils); expect(network.formatters).toEqual(formatters); @@ -81,15 +32,6 @@ describe('NetworkTest', () => { expect(network).toBeInstanceOf(AbstractWeb3Module); }); - it('JSON-RPC methods check', () => { - expect(network.methodFactory.methods).toEqual({ - getId: VersionMethod, - getBlock: GetBlockMethod, - isListening: ListeningMethod, - getPeerCount: PeerCountMethod - }); - }); - it('calls getNetworkType and resolves to the network name "private', async () => { const callback = jest.fn(); diff --git a/packages/web3-net/tests/src/factories/MethodFactoryTest.js b/packages/web3-net/tests/src/factories/MethodFactoryTest.js new file mode 100644 index 00000000000..b988d304813 --- /dev/null +++ b/packages/web3-net/tests/src/factories/MethodFactoryTest.js @@ -0,0 +1,31 @@ +import {GetBlockMethod, ListeningMethod, PeerCountMethod, VersionMethod} from 'web3-core-method'; +import MethodFactory from '../../../src/factories/MethodFactory'; + +// Mocks +jest.mock(''); + +/** + * MethodFactory test + */ +describe('MethodFactoryTest', () => { + let methodFactory; + + beforeEach(() => { + methodFactory = new MethodFactory({}, {}); + }); + + it('constructor check', () => { + expect(methodFactory.utils).toEqual({}); + + expect(methodFactory.formatters).toEqual({}); + }); + + it('JSON-RPC methods check', () => { + expect(methodFactory.methods).toEqual({ + getId: VersionMethod, + getBlock: GetBlockMethod, + isListening: ListeningMethod, + getPeerCount: PeerCountMethod + }); + }); +}); diff --git a/packages/web3-net/tests/src/factories/NetworkModuleFactoryTest.js b/packages/web3-net/tests/src/factories/NetworkModuleFactoryTest.js deleted file mode 100644 index 341162f77cb..00000000000 --- a/packages/web3-net/tests/src/factories/NetworkModuleFactoryTest.js +++ /dev/null @@ -1,35 +0,0 @@ -import * as Utils from 'web3-utils'; -import {formatters} from 'web3-core-helpers'; -import Network from '../../../src/Network'; -import MethodFactory from '../../../src/factories/MethodFactory'; -import NetworkModuleFactory from '../../../src/factories/NetworkModuleFactory'; - -// Mocks -jest.mock('Utils'); -jest.mock('formatters'); -jest.mock('../../../src/Network'); - -/** - * NetworkModuleFactory test - */ -describe('NetworkModuleFactoryTest', () => { - let networkModuleFactory; - - beforeEach(() => { - networkModuleFactory = new NetworkModuleFactory(Utils, formatters); - }); - - it('constructor check', () => { - expect(networkModuleFactory.utils).toEqual(Utils); - - expect(networkModuleFactory.formatters).toEqual(formatters); - }); - - it('calls createNetworkModule and returns the expected Network object', () => { - expect(networkModuleFactory.createNetworkModule({}, {}, {}, {})).toBeInstanceOf(Network); - }); - - it('calls createMethodFactory and returns the expected MethodFactory object', () => { - expect(networkModuleFactory.createMethodFactory({})).toBeInstanceOf(MethodFactory); - }); -}); diff --git a/packages/web3-providers/package-lock.json b/packages/web3-providers/package-lock.json index 188f64f721b..bff32aeffd3 100644 --- a/packages/web3-providers/package-lock.json +++ b/packages/web3-providers/package-lock.json @@ -5,27 +5,29 @@ "requires": true, "dependencies": { "@babel/runtime": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz", - "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.4.tgz", + "integrity": "sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==", "requires": { "regenerator-runtime": "^0.12.0" } }, "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + "version": "10.14.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.1.tgz", + "integrity": "sha512-Rymt08vh1GaW4vYB6QP61/5m/CFLGnFZP++bJpWbiNxceNa6RBipDmb413jvtSf/R1gg5a/jQVl2jY4XVRscEA==" }, "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -36,17 +38,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -55,6 +60,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -62,27 +68,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -92,12 +103,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -110,6 +123,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -119,12 +133,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -133,6 +149,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -141,22 +158,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -167,6 +188,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -175,6 +197,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -185,6 +208,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -194,12 +218,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -207,12 +233,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -220,12 +248,14 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "cookiejar": { "version": "2.1.2", @@ -235,12 +265,14 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -253,6 +285,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -268,68 +301,62 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "definitelytyped-header-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", + "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, + "requires": { + "@types/parsimmon": "^1.3.0", + "parsimmon": "^1.2.0" + } }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", "yargs": "^12.0.5" - }, - "dependencies": { - "definitelytyped-header-parser": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", - "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", - "requires": { - "@types/parsimmon": "^1.3.0", - "parsimmon": "^1.2.0" - } - } } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" - }, - "dependencies": { - "definitelytyped-header-parser": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", - "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", - "requires": { - "@types/parsimmon": "^1.3.0", - "parsimmon": "^1.2.0" - } - } + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -339,6 +366,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -346,17 +374,20 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "eventemitter3": { "version": "3.1.0", @@ -367,6 +398,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -380,27 +412,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -408,12 +445,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -424,6 +463,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -433,17 +473,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -452,6 +495,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -460,6 +504,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -472,17 +517,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -492,6 +540,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -499,14 +548,16 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-https": { "version": "1.0.0", @@ -517,6 +568,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -527,6 +579,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -535,22 +588,26 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", @@ -560,22 +617,26 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -584,27 +645,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -613,6 +679,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -624,6 +691,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -632,6 +700,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -646,42 +715,48 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -689,12 +764,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -705,19 +782,21 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==" + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.0.tgz", + "integrity": "sha512-5DDQvN0luhXdut8SCwzm/ZuAX2W+fwhqNzfq7CZ+OJzQ6NwpcqmIGyLD1R8MEt7BeErzcsI0JLr4pND2pNp2Cw==" }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -725,12 +804,14 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "oboe": { "version": "2.1.4", @@ -744,6 +825,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -752,6 +834,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -761,22 +844,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -785,6 +872,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -792,47 +880,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -841,12 +938,14 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "querystringify": { "version": "2.1.0", @@ -862,6 +961,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -888,12 +988,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -905,6 +1007,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -913,6 +1016,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -922,12 +1026,14 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "requires-port": { "version": "1.0.0", @@ -938,6 +1044,7 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -945,27 +1052,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -973,22 +1085,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -1004,12 +1120,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -1019,6 +1137,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -1026,22 +1145,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -1050,12 +1173,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1069,13 +1194,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1084,6 +1210,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1091,7 +1218,8 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typedarray-to-buffer": { "version": "3.1.5", @@ -1102,19 +1230,22 @@ } }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1131,12 +1262,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1157,6 +1290,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1164,12 +1298,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1178,12 +1314,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1192,6 +1330,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1202,6 +1341,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1211,7 +1351,8 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "xhr2-cookies": { "version": "1.1.0", @@ -1224,7 +1365,8 @@ "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yaeti": { "version": "0.0.6", @@ -1235,6 +1377,7 @@ "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1254,6 +1397,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-providers/package.json b/packages/web3-providers/package.json index c5eeff265ae..eea596c1f63 100644 --- a/packages/web3-providers/package.json +++ b/packages/web3-providers/package.json @@ -18,7 +18,6 @@ "dependencies": { "@babel/runtime": "^7.3.1", "@types/node": "^10.12.18", - "dtslint": "0.5.4", "eventemitter3": "3.1.0", "lodash": "^4.17.11", "oboe": "2.1.4", diff --git a/packages/web3-providers/src/detectors/ProviderDetector.js b/packages/web3-providers/src/detectors/ProviderDetector.js index fdec7208b14..c76d6f2e15a 100644 --- a/packages/web3-providers/src/detectors/ProviderDetector.js +++ b/packages/web3-providers/src/detectors/ProviderDetector.js @@ -26,6 +26,7 @@ const global = // eslint-disable-next-line no-new-func })() || new Function('return this')(); +// TODO: Remove the detector because of window/global.ethereum export default class ProviderDetector { /** * Detects which provider is given in the current environment @@ -34,7 +35,7 @@ export default class ProviderDetector { * * @returns {Object|null} provider */ - detect() { + static detect() { if ( typeof global.ethereumProvider !== 'undefined' && global.ethereumProvider.constructor.name === 'EthereumProvider' diff --git a/packages/web3-providers/src/factories/ProvidersModuleFactory.js b/packages/web3-providers/src/factories/ProvidersModuleFactory.js index 4a328c1e757..31e148dc08a 100644 --- a/packages/web3-providers/src/factories/ProvidersModuleFactory.js +++ b/packages/web3-providers/src/factories/ProvidersModuleFactory.js @@ -24,7 +24,6 @@ import {w3cwebsocket as W3CWebsocket} from 'websocket'; import {XMLHttpRequest as XHR} from 'xhr2-cookies'; import URL from 'url-parse'; import ProviderResolver from '../resolvers/ProviderResolver'; -import ProviderDetector from '../detectors/ProviderDetector'; import WebsocketProvider from '../providers/WebsocketProvider'; import IpcProvider from '../providers/IpcProvider'; import HttpProvider from '../providers/HttpProvider'; @@ -59,17 +58,6 @@ export default class ProvidersModuleFactory { return new ProviderResolver(this); } - /** - * Returns an ProviderDetector object - * - * @method createProviderDetector - * - * @returns {ProviderDetector} - */ - createProviderDetector() { - return new ProviderDetector(); - } - /** * Returns an HttpProvider object * diff --git a/packages/web3-providers/src/index.js b/packages/web3-providers/src/index.js index 5a07f4767f7..fdd7e64e493 100644 --- a/packages/web3-providers/src/index.js +++ b/packages/web3-providers/src/index.js @@ -21,6 +21,7 @@ */ import ProvidersModuleFactory from './factories/ProvidersModuleFactory'; +export ProviderDetector from './detectors/ProviderDetector'; /** * Creates the HttpProvider object. @@ -92,18 +93,6 @@ export const ProviderResolver = () => { return new ProvidersModuleFactory().createProviderResolver(); }; -/** - * Creates the ProviderDetector object - * - * @method detect - * - * @returns {ProviderDetector} - * - * @constructor - */ -export const ProviderDetector = () => { - return new ProvidersModuleFactory().createProviderDetector(); -}; - +// TODO: Do not expose the providers module factory this should only be used in this module export ProvidersModuleFactory from './factories/ProvidersModuleFactory'; export Web3EthereumProvider from './providers/Web3EthereumProvider'; diff --git a/packages/web3-providers/src/providers/HttpProvider.js b/packages/web3-providers/src/providers/HttpProvider.js index 062ddb1b259..0bb58200656 100644 --- a/packages/web3-providers/src/providers/HttpProvider.js +++ b/packages/web3-providers/src/providers/HttpProvider.js @@ -168,9 +168,7 @@ export default class HttpProvider { try { request.send(JSON.stringify(payload)); } catch (error) { - if (error.constructor.name === 'NetworkError') { - this.connected = false; - } + this.connected = false; reject(error); } diff --git a/packages/web3-providers/src/resolvers/ProviderResolver.js b/packages/web3-providers/src/resolvers/ProviderResolver.js index edd1cb0cd1a..d08ac308969 100644 --- a/packages/web3-providers/src/resolvers/ProviderResolver.js +++ b/packages/web3-providers/src/resolvers/ProviderResolver.js @@ -15,7 +15,7 @@ along with web3.js. If not, see . */ /** - * @file ProviderResolverTest.js + * @file ProviderResolver.js * @authors: Samuel Furter * @date 2018 */ diff --git a/packages/web3-providers/tests/src/factories/ProvidersModuleFactoryTest.js b/packages/web3-providers/tests/src/factories/ProvidersModuleFactoryTest.js index bdf357bc2b2..26117f5a664 100644 --- a/packages/web3-providers/tests/src/factories/ProvidersModuleFactoryTest.js +++ b/packages/web3-providers/tests/src/factories/ProvidersModuleFactoryTest.js @@ -2,7 +2,6 @@ import ProvidersModuleFactory from '../../../src/factories/ProvidersModuleFactory'; import BatchRequest from '../../../src/batch-request/BatchRequest'; import ProviderResolver from '../../../src/resolvers/ProviderResolver'; -import ProviderDetector from '../../../src/detectors/ProviderDetector'; import HttpProvider from '../../../src/providers/HttpProvider'; import WebsocketProvider from '../../../src/providers/WebsocketProvider'; import IpcProvider from '../../../src/providers/IpcProvider'; @@ -16,7 +15,6 @@ jest.mock('websocket'); // Mocks jest.mock('../../../src/batch-request/BatchRequest'); jest.mock('../../../src/resolvers/ProviderResolver'); -jest.mock('../../../src/detectors/ProviderDetector'); jest.mock('../../../src/providers/HttpProvider'); jest.mock('../../../src/providers/WebsocketProvider'); jest.mock('../../../src/providers/IpcProvider'); @@ -40,10 +38,6 @@ describe('ProvidersModuleFactoryTest', () => { expect(providersModuleFactory.createProviderResolver()).toBeInstanceOf(ProviderResolver); }); - it('createProviderDetector returns instance of ProviderDetector', () => { - expect(providersModuleFactory.createProviderDetector()).toBeInstanceOf(ProviderDetector); - }); - it('createHttpProvider returns instance of HttpProvider', () => { expect(providersModuleFactory.createHttpProvider('', {})).toBeInstanceOf(HttpProvider); }); diff --git a/packages/web3-providers/types/index.d.ts b/packages/web3-providers/types/index.d.ts index 5f211574ef4..aa051370308 100644 --- a/packages/web3-providers/types/index.d.ts +++ b/packages/web3-providers/types/index.d.ts @@ -33,7 +33,7 @@ export class BatchRequest { } export class ProviderDetector { - detect(): provider | undefined; + static detect(): provider | undefined; } export class ProvidersModuleFactory { @@ -41,8 +41,6 @@ export class ProvidersModuleFactory { createProviderResolver(): ProviderResolver; - createProviderDetector(): ProviderDetector; - createHttpProvider(url: string): HttpProvider; createWebsocketProvider(url: string): WebsocketProvider; @@ -136,8 +134,6 @@ export class JsonRpcMapper { } export class ProviderResolver { - constructor(providersPackageFactory: ProvidersModuleFactory); - resolve(provider: provider, net: net.Socket): provider; } diff --git a/packages/web3-providers/types/tests/abstract-socket-provider-test.ts b/packages/web3-providers/types/tests/abstract-socket-provider-test.ts index f2caa7a4909..2a6894736ea 100644 --- a/packages/web3-providers/types/tests/abstract-socket-provider-test.ts +++ b/packages/web3-providers/types/tests/abstract-socket-provider-test.ts @@ -21,7 +21,7 @@ */ import {AbstractWeb3Module} from 'web3-core'; -import {AbstractSocketProvider, ProvidersModuleFactory} from 'web3-providers'; +import {AbstractSocketProvider} from 'web3-providers'; const abstractSocketProvider = new AbstractSocketProvider({}); @@ -38,7 +38,7 @@ abstractSocketProvider.registerEventListeners(); abstractSocketProvider.send('rpc_method', []); // $ExpectType Promise -abstractSocketProvider.sendBatch([], new AbstractWeb3Module('http://localhost:7545', new ProvidersModuleFactory(), {})); +abstractSocketProvider.sendBatch([], new AbstractWeb3Module('http://localhost:7545')); // $ExpectType Promise abstractSocketProvider.subscribe('eth_subscribe', 'logs', []); diff --git a/packages/web3-providers/types/tests/batch-request-test.ts b/packages/web3-providers/types/tests/batch-request-test.ts index 20bee15be20..f239c9ffa47 100644 --- a/packages/web3-providers/types/tests/batch-request-test.ts +++ b/packages/web3-providers/types/tests/batch-request-test.ts @@ -22,16 +22,24 @@ import {AbstractWeb3Module} from 'web3-core'; import {AbstractMethod} from 'web3-core-method'; -import {BatchRequest, ProvidersModuleFactory} from 'web3-providers'; +import {BatchRequest} from 'web3-providers'; import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; const batchRequest = new BatchRequest( - new AbstractWeb3Module('http://localhost:7545', new ProvidersModuleFactory(), {}) + new AbstractWeb3Module('http://localhost:7545') ); // $ExpectType void -batchRequest.add(new AbstractMethod('rpc_method', 1, Utils, formatters)); +batchRequest.add( + new AbstractMethod( + 'rpc_method', + 1, + Utils, + formatters, + new AbstractWeb3Module('http://localhost:7545') + ) +); // $ExpectType Promise<{ methods: AbstractMethod[]; response: object[]; } | Error[]> batchRequest.execute(); diff --git a/packages/web3-providers/types/tests/http-provider-test.ts b/packages/web3-providers/types/tests/http-provider-test.ts index 696ed391eaf..dd82bb8781e 100644 --- a/packages/web3-providers/types/tests/http-provider-test.ts +++ b/packages/web3-providers/types/tests/http-provider-test.ts @@ -38,7 +38,7 @@ const httpProvider = new HttpProvider( httpProvider.send('rpc_method', []); // $ExpectType Promise -httpProvider.sendBatch([], new AbstractWeb3Module('http://localhost:7545', new ProvidersModuleFactory(), {})); +httpProvider.sendBatch([], new AbstractWeb3Module('http://localhost:7545')); // $ExpectType boolean httpProvider.disconnect(); diff --git a/packages/web3-providers/types/tests/provider-detector-test.ts b/packages/web3-providers/types/tests/provider-detector-test.ts index afdc928dec8..cbc896c2f86 100644 --- a/packages/web3-providers/types/tests/provider-detector-test.ts +++ b/packages/web3-providers/types/tests/provider-detector-test.ts @@ -23,4 +23,4 @@ import {ProviderDetector} from 'web3-providers'; // $ExpectType string | HttpProvider | IpcProvider | WebsocketProvider | EthereumProvider | undefined -new ProviderDetector().detect(); +ProviderDetector.detect(); diff --git a/packages/web3-providers/types/tests/provider-module-factory-test.ts b/packages/web3-providers/types/tests/provider-module-factory-test.ts index a1d1b5c3d71..c733e74311f 100644 --- a/packages/web3-providers/types/tests/provider-module-factory-test.ts +++ b/packages/web3-providers/types/tests/provider-module-factory-test.ts @@ -27,14 +27,11 @@ import {ProvidersModuleFactory} from 'web3-providers'; const providersModuleFactory = new ProvidersModuleFactory(); // $ExpectType BatchRequest -providersModuleFactory.createBatchRequest(new AbstractWeb3Module('http://localhost:7545', new ProvidersModuleFactory(), {})); +providersModuleFactory.createBatchRequest(new AbstractWeb3Module('http://localhost:7545')); // $ExpectType ProviderResolver providersModuleFactory.createProviderResolver(); -// $ExpectType ProviderDetector -providersModuleFactory.createProviderDetector(); - // $ExpectType HttpProvider providersModuleFactory.createHttpProvider('http://localhost:8545'); diff --git a/packages/web3-providers/types/tests/provider-resolver-test.ts b/packages/web3-providers/types/tests/provider-resolver-test.ts index b987f3667ae..236a4054cab 100644 --- a/packages/web3-providers/types/tests/provider-resolver-test.ts +++ b/packages/web3-providers/types/tests/provider-resolver-test.ts @@ -15,13 +15,13 @@ along with web3.js. If not, see . */ /** - * @file provider-adapter-resolver-test.ts + * @file provider-resolver-test.ts * @author Josh Stevens , Samuel Furter * @date 2018 */ import * as net from "net"; -import {ProviderResolver, ProvidersModuleFactory, HttpProvider} from 'web3-providers'; +import {ProviderResolver, HttpProvider} from 'web3-providers'; const options = { timeout: 20000, @@ -32,9 +32,7 @@ const options = { ] }; const provider = new HttpProvider('http://localhost:8545', options); - -const providersModuleFactory = new ProvidersModuleFactory(); -const providerResolver = new ProviderResolver(providersModuleFactory); +const providerResolver = new ProviderResolver(); // $ExpectType provider providerResolver.resolve(provider, new net.Socket()); diff --git a/packages/web3-shh/jest.config.js b/packages/web3-shh/jest.config.js index eadbf72f64f..3b356e7bc20 100644 --- a/packages/web3-shh/jest.config.js +++ b/packages/web3-shh/jest.config.js @@ -1,14 +1,10 @@ const jestConfig = require('../../jest.config'); module.exports = jestConfig({ - Utils: 'web3-utils', - formatters: 'web3-core-helpers', - AbstractSubscription: 'web3-core-subscriptions', - SubscriptionsFactory: 'web3-core-subscriptions', - HttpProvider: 'web3-providers', - ProvidersModuleFactory: 'web3-providers', - ProviderDetector: 'web3-providers', - ProviderResolver: 'web3-providers', - MethodModuleFactory: 'web3-core-method', - Network: 'web3-net' + 'Utils': 'web3-utils', + 'formatters': 'web3-core-helpers', + 'AbstractSubscription': 'web3-core-subscriptions', + 'MessagesSubscription': 'web3-core-subscriptions', + 'ProviderResolver': 'web3-providers', + 'Network': 'web3-net' }); diff --git a/packages/web3-shh/package-lock.json b/packages/web3-shh/package-lock.json index 60b54ab8ae2..bf2ec54e968 100644 --- a/packages/web3-shh/package-lock.json +++ b/packages/web3-shh/package-lock.json @@ -15,12 +15,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -31,17 +33,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -50,6 +55,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -57,27 +63,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -87,12 +98,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -105,6 +118,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -114,12 +128,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -128,6 +144,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -136,22 +153,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -162,6 +183,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -170,6 +192,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -180,6 +203,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -189,12 +213,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -202,12 +228,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -215,22 +243,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -243,6 +275,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -250,12 +283,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -264,17 +299,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -282,23 +320,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -308,6 +348,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -315,22 +356,26 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -344,27 +389,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -372,12 +422,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -388,6 +440,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -397,17 +450,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -416,6 +472,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -424,6 +481,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -436,17 +494,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -456,6 +517,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -463,19 +525,22 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -486,6 +551,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -494,47 +560,56 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -543,27 +618,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -572,6 +652,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -583,6 +664,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -591,6 +673,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -599,48 +682,55 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -648,12 +738,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -661,12 +753,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -674,17 +768,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -693,6 +790,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -702,22 +800,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -726,6 +828,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -733,47 +836,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -782,12 +894,14 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", @@ -798,6 +912,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -824,12 +939,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -841,6 +958,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -849,6 +967,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -858,17 +977,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -876,27 +998,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -904,22 +1031,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -935,12 +1066,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -950,6 +1083,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -957,22 +1091,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -981,12 +1119,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1000,13 +1140,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1015,6 +1156,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1022,22 +1164,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1045,12 +1191,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1061,6 +1209,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1068,12 +1217,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1082,12 +1233,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1096,6 +1249,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1106,6 +1260,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1115,17 +1270,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1145,6 +1303,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-shh/package.json b/packages/web3-shh/package.json index 1292dbcec6b..23abde8f2dc 100644 --- a/packages/web3-shh/package.json +++ b/packages/web3-shh/package.json @@ -17,7 +17,6 @@ }, "dependencies": { "@babel/runtime": "^7.3.1", - "dtslint": "0.5.4", "web3-core": "1.0.0-beta.48", "web3-core-helpers": "1.0.0-beta.48", "web3-core-method": "1.0.0-beta.48", diff --git a/packages/web3-shh/src/Shh.js b/packages/web3-shh/src/Shh.js index 0930354e6ac..4908a526f81 100644 --- a/packages/web3-shh/src/Shh.js +++ b/packages/web3-shh/src/Shh.js @@ -25,8 +25,6 @@ import {AbstractWeb3Module} from 'web3-core'; export default class Shh extends AbstractWeb3Module { /** * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {MethodModuleFactory} methodModuleFactory * @param {MethodFactory} methodFactory * @param {SubscriptionsFactory} subscriptionsFactory * @param {Network} net @@ -35,17 +33,8 @@ export default class Shh extends AbstractWeb3Module { * * @constructor */ - constructor( - provider, - providersModuleFactory, - methodModuleFactory, - methodFactory, - subscriptionsFactory, - net, - options, - nodeNet - ) { - super(provider, providersModuleFactory, methodModuleFactory, methodFactory, options, nodeNet); + constructor(provider, methodFactory, subscriptionsFactory, net, options, nodeNet) { + super(provider, options, methodFactory, nodeNet); this.subscriptionsFactory = subscriptionsFactory; this.net = net; @@ -56,7 +45,7 @@ export default class Shh extends AbstractWeb3Module { * * @method subscribe * - * @param {String} method + * @param {String} type * @param {Object} options * @param {Function} callback * @@ -64,12 +53,8 @@ export default class Shh extends AbstractWeb3Module { * @returns {AbstractSubscription} * @throws {Error} */ - subscribe(method, options, callback) { - if (method === 'messages') { - return this.subscriptionsFactory.createShhMessagesSubscription(options, this).subscribe(callback); - } - - throw new Error(`Unknown subscription: ${method}`); + subscribe(type, options, callback) { + return this.subscriptionsFactory.getSubscription(this, type, options).subscribe(callback); } /** @@ -93,7 +78,7 @@ export default class Shh extends AbstractWeb3Module { * @returns {Boolean} */ setProvider(provider, net) { - return super.setProvider(provider, net) && this.net.setProvider(provider, net); + return this.net.setProvider(provider, net) && super.setProvider(provider, net); } /** @@ -105,7 +90,7 @@ export default class Shh extends AbstractWeb3Module { */ set defaultGasPrice(value) { super.defaultGasPrice = value; - this.net.defaultGasPrice = value; + this.net.defaultGasPrice = this.defaultGasPrice; } /** @@ -128,7 +113,7 @@ export default class Shh extends AbstractWeb3Module { */ set defaultGas(value) { super.defaultGas = value; - this.net.defaultGas = value; + this.net.defaultGas = this.defaultGas; } /** @@ -151,7 +136,7 @@ export default class Shh extends AbstractWeb3Module { */ set transactionBlockTimeout(value) { super.transactionBlockTimeout = value; - this.net.transactionBlockTimeout = value; + this.net.transactionBlockTimeout = this.transactionBlockTimeout; } /** @@ -174,7 +159,7 @@ export default class Shh extends AbstractWeb3Module { */ set transactionConfirmationBlocks(value) { super.transactionConfirmationBlocks = value; - this.net.transactionConfirmationBlocks = value; + this.net.transactionConfirmationBlocks = this.transactionConfirmationBlocks; } /** @@ -197,7 +182,7 @@ export default class Shh extends AbstractWeb3Module { */ set transactionPollingTimeout(value) { super.transactionPollingTimeout = value; - this.net.transactionPollingTimeout = value; + this.net.transactionPollingTimeout = this.transactionPollingTimeout; } /** @@ -220,7 +205,7 @@ export default class Shh extends AbstractWeb3Module { */ set defaultAccount(value) { super.defaultAccount = value; - this.net.defaultAccount = value; + this.net.defaultAccount = this.defaultAccount; } /** @@ -243,7 +228,7 @@ export default class Shh extends AbstractWeb3Module { */ set defaultBlock(value) { super.defaultBlock = value; - this.net.defaultBlock = value; + this.net.defaultBlock = this.defaultBlock; } /** diff --git a/packages/web3-shh/src/factories/MethodFactory.js b/packages/web3-shh/src/factories/MethodFactory.js index dfe54258e1f..1417aad0f94 100644 --- a/packages/web3-shh/src/factories/MethodFactory.js +++ b/packages/web3-shh/src/factories/MethodFactory.js @@ -47,14 +47,13 @@ import { export default class MethodFactory extends AbstractMethodFactory { /** - * @param {MethodModuleFactory} methodModuleFactory * @param {Utils} utils * @param {Object} formatters * * @constructor */ - constructor(methodModuleFactory, utils, formatters) { - super(methodModuleFactory, utils, formatters); + constructor(utils, formatters) { + super(utils, formatters); this.methods = { getVersion: ShhVersionMethod, diff --git a/packages/web3-shh/src/factories/ShhModuleFactory.js b/packages/web3-shh/src/factories/ShhModuleFactory.js deleted file mode 100644 index eed19de7868..00000000000 --- a/packages/web3-shh/src/factories/ShhModuleFactory.js +++ /dev/null @@ -1,75 +0,0 @@ -/* - This file is part of web3.js. - - web3.js is free software: you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - web3.js is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with web3.js. If not, see . -*/ -/** - * @file MethodFactory - * @author Samuel Furter - * @date 2018 - */ - -import Shh from '../Shh'; -import MethodFactory from './MethodFactory'; - -export default class ShhModuleFactory { - /** - * @param {Utils} utils - * @param {Object} formatters - * @param {MethodModuleFactory} methodModuleFactory - * - * @constructor - */ - constructor(utils, formatters, methodModuleFactory) { - this.utils = utils; - this.formatters = formatters; - this.methodModuleFactory = methodModuleFactory; - } - - /** - * Returns an object of type Shh - * - * @method createShhModule - * - * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {ProvidersModuleFactory} providersModuleFactory - * @param {SubscriptionsFactory} subscriptionsFactory - * @param {Network} net - * @param {Object} options - * - * @returns {Shh} - */ - createShhModule(provider, providersModuleFactory, subscriptionsFactory, net, options) { - return new Shh( - provider, - providersModuleFactory, - this.methodModuleFactory, - this.createMethodFactory(), - subscriptionsFactory, - net, - options - ); - } - - /** - * Returns an object of type MethodFactory - * - * @method createMethodFactory - * - * @returns {MethodFactory} - */ - createMethodFactory() { - return new MethodFactory(this.methodModuleFactory, this.utils, this.formatters); - } -} diff --git a/packages/web3-shh/src/factories/SubscriptionsFactory.js b/packages/web3-shh/src/factories/SubscriptionsFactory.js new file mode 100644 index 00000000000..03312d5e2f3 --- /dev/null +++ b/packages/web3-shh/src/factories/SubscriptionsFactory.js @@ -0,0 +1,53 @@ +/* + This file is part of web3.js. + web3.js is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + web3.js is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public License + along with web3.js. If not, see . +*/ +/** + * @file SubscriptionsFactory.js + * @author Samuel Furter + * @date 2019 + */ + +import {MessagesSubscription} from 'web3-core-subscriptions'; + +export default class SubscriptionsFactory { + /** + * @param {Utils} utils + * @param {Object} formatters + * + * @constructor + */ + constructor(utils, formatters) { + this.utils = utils; + this.formatters = formatters; + } + + /** + * Gets and executes subscription for an given type + * + * @method getSubscription + * + * @param {AbstractWeb3Module} moduleInstance + * @param {String} type + * @param {Object} options + * + * @returns {AbstractSubscription} + */ + getSubscription(moduleInstance, type, options) { + switch (type) { + case 'messages': + return new MessagesSubscription(options, this.utils, this.formatters, moduleInstance); + default: + throw new Error(`Unknown subscription: ${type}`); + } + } +} diff --git a/packages/web3-shh/src/index.js b/packages/web3-shh/src/index.js index 6fbb11c4018..77917650fea 100644 --- a/packages/web3-shh/src/index.js +++ b/packages/web3-shh/src/index.js @@ -20,13 +20,12 @@ * @date 2018 */ -import {ProvidersModuleFactory} from 'web3-providers'; -import {MethodModuleFactory} from 'web3-core-method'; -import {SubscriptionsFactory} from 'web3-core-subscriptions'; import {Network} from 'web3-net'; import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; -import ShhModuleFactory from './factories/ShhModuleFactory'; +import MethodFactory from './factories/MethodFactory'; +import SubscriptionsFactory from './factories/SubscriptionsFactory'; +import ShhModule from './Shh.js'; /** * Returns the Shh object. @@ -34,17 +33,17 @@ import ShhModuleFactory from './factories/ShhModuleFactory'; * @method Shh * * @param {Web3EthereumProvider|HttpProvider|WebsocketProvider|IpcProvider|String} provider - * @param {Object} options * @param {Net} net + * @param {Object} options * * @returns {Shh} */ export const Shh = (provider, net, options) => { - return new ShhModuleFactory(Utils, formatters, new MethodModuleFactory()).createShhModule( + return new ShhModule( provider, - new ProvidersModuleFactory(), - new SubscriptionsFactory(), - new Network(provider, options), + new MethodFactory(Utils, formatters), + new SubscriptionsFactory(Utils, formatters), + new Network(provider, net, options), options, net ); diff --git a/packages/web3-shh/tests/src/ShhTest.js b/packages/web3-shh/tests/src/ShhTest.js index fd2ca59e51b..6005642c52f 100644 --- a/packages/web3-shh/tests/src/ShhTest.js +++ b/packages/web3-shh/tests/src/ShhTest.js @@ -1,105 +1,38 @@ import * as Utils from 'web3-utils'; import {formatters} from 'web3-core-helpers'; -import {AbstractSubscription, SubscriptionsFactory} from 'web3-core-subscriptions'; -import { - AddPrivateKeyMethod, - AddSymKeyMethod, - DeleteKeyPairMethod, - DeleteMessageFilterMethod, - DeleteSymKeyMethod, - GenerateSymKeyFromPasswordMethod, - GetFilterMessagesMethod, - GetInfoMethod, - GetPrivateKeyMethod, - GetPublicKeyMethod, - GetSymKeyMethod, - HasKeyPairMethod, - HasSymKeyMethod, - MarkTrustedPeerMethod, - MethodModuleFactory, - NewKeyPairMethod, - NewMessageFilterMethod, - NewSymKeyMethod, - PostMethod, - SetMaxMessageSizeMethod, - SetMinPoWMethod, - ShhVersionMethod -} from 'web3-core-method'; +import {AbstractSubscription} from 'web3-core-subscriptions'; import {Network} from 'web3-net'; -import {HttpProvider, ProviderDetector, ProviderResolver, ProvidersModuleFactory} from 'web3-providers'; import MethodFactory from '../../src/factories/MethodFactory'; +import SubscriptionsFactory from '../../src/factories/SubscriptionsFactory'; import Shh from '../../src/Shh'; // Mocks -jest.mock('HttpProvider'); -jest.mock('ProvidersModuleFactory'); -jest.mock('ProviderDetector'); -jest.mock('ProviderResolver'); -jest.mock('MethodModuleFactory'); -jest.mock('SubscriptionsFactory'); jest.mock('AbstractSubscription'); jest.mock('Network'); jest.mock('Utils'); jest.mock('formatters'); +jest.mock('../../src/factories/SubscriptionsFactory'); +jest.mock('../../src/factories/MethodFactory'); /** * Shh test */ describe('ShhTest', () => { - let shh, - providerMock, - providersModuleFactoryMock, - providerDetectorMock, - providerResolverMock, - methodModuleFactoryMock, - methodFactory, - networkMock, - subscriptionsFactoryMock; + let shh, methodFactory, subscriptionsFactoryMock, providerMock, networkMock; beforeEach(() => { - new HttpProvider(); - providerMock = HttpProvider.mock.instances[0]; - - new ProvidersModuleFactory(); - providersModuleFactoryMock = ProvidersModuleFactory.mock.instances[0]; - - new ProviderDetector(); - providerDetectorMock = ProviderDetector.mock.instances[0]; - providerDetectorMock.detect = jest.fn(() => { - return null; - }); - - new ProviderResolver(); - providerResolverMock = ProviderResolver.mock.instances[0]; - providerResolverMock.resolve = jest.fn(() => { - return providerMock; - }); - - providersModuleFactoryMock.createProviderDetector.mockReturnValueOnce(providerDetectorMock); - - providersModuleFactoryMock.createProviderResolver.mockReturnValueOnce(providerResolverMock); - - new MethodModuleFactory(); - methodModuleFactoryMock = MethodModuleFactory.mock.instances[0]; - methodModuleFactoryMock.createMethodProxy = jest.fn(); - - methodFactory = new MethodFactory(methodModuleFactoryMock, Utils, formatters); + methodFactory = new MethodFactory(Utils, formatters); new SubscriptionsFactory(); subscriptionsFactoryMock = SubscriptionsFactory.mock.instances[0]; new Network(); networkMock = Network.mock.instances[0]; + networkMock.setProvider = jest.fn(); - shh = new Shh( - providerMock, - providersModuleFactoryMock, - methodModuleFactoryMock, - methodFactory, - subscriptionsFactoryMock, - networkMock, - {} - ); + providerMock = {send: jest.fn(), clearSubscriptions: jest.fn()}; + + shh = new Shh(providerMock, methodFactory, subscriptionsFactoryMock, networkMock, {}, null); }); it('constructor check', () => { @@ -108,32 +41,6 @@ describe('ShhTest', () => { expect(shh.net).toEqual(networkMock); }); - it('JSON-RPC methods check', () => { - expect(shh.methodFactory.methods).toEqual({ - getVersion: ShhVersionMethod, - getInfo: GetInfoMethod, - setMaxMessageSize: SetMaxMessageSizeMethod, - setMinPoW: SetMinPoWMethod, - markTrustedPeer: MarkTrustedPeerMethod, - newKeyPair: NewKeyPairMethod, - addPrivateKey: AddPrivateKeyMethod, - deleteKeyPair: DeleteKeyPairMethod, - hasKeyPair: HasKeyPairMethod, - getPublicKey: GetPublicKeyMethod, - getPrivateKey: GetPrivateKeyMethod, - newSymKey: NewSymKeyMethod, - addSymKey: AddSymKeyMethod, - generateSymKeyFromPassword: GenerateSymKeyFromPasswordMethod, - hasSymKey: HasSymKeyMethod, - getSymKey: GetSymKeyMethod, - deleteSymKey: DeleteSymKeyMethod, - newMessageFilter: NewMessageFilterMethod, - getFilterMessages: GetFilterMessagesMethod, - deleteMessageFilter: DeleteMessageFilterMethod, - post: PostMethod - }); - }); - it('calls the subscribe method with the method string "messages" and it returns a object of type ShhMessagesSubscription', () => { const callback = jest.fn(); @@ -144,35 +51,21 @@ describe('ShhTest', () => { shhMessagesSubscriptionMock.subscribe.mockReturnValueOnce(shhMessagesSubscriptionMock); - subscriptionsFactoryMock.createShhMessagesSubscription.mockReturnValueOnce(shhMessagesSubscriptionMock); + subscriptionsFactoryMock.getSubscription.mockReturnValueOnce(shhMessagesSubscriptionMock); expect(shh.subscribe('messages', {}, callback)).toEqual(shhMessagesSubscriptionMock); - expect(subscriptionsFactoryMock.createShhMessagesSubscription).toHaveBeenCalledWith({}, shh); + expect(subscriptionsFactoryMock.getSubscription).toHaveBeenCalledWith(shh, 'messages', {}); }); it('calls the subscribe method with a unknown method string and it throws an error', () => { + subscriptionsFactoryMock.getSubscription = jest.fn(() => { + throw new Error('ERROR'); + }); + expect(() => { shh.subscribe('error', {}, () => {}); - }).toThrow('Unknown subscription: error'); - }); - - it('calls setProvider and returns true', () => { - networkMock.setProvider = jest.fn(); - networkMock.setProvider.mockReturnValueOnce(true); - - expect(shh.setProvider('provider', 'net')).toEqual(true); - - expect(networkMock.setProvider).toHaveBeenCalledWith('provider', 'net'); - }); - - it('calls setProvider and returns false', () => { - networkMock.setProvider = jest.fn(); - networkMock.setProvider.mockReturnValueOnce(false); - - expect(shh.setProvider('provider', 'net')).toEqual(false); - - expect(networkMock.setProvider).toHaveBeenCalledWith('provider', 'net'); + }).toThrow('ERROR'); }); it('sets the defaultGasPrice property', () => { @@ -211,8 +104,7 @@ describe('ShhTest', () => { shh.defaultAccount = '0x1'; expect(shh.defaultAccount).toEqual('0x2'); - - expect(Utils.toChecksumAddress).toHaveBeenCalledWith('0x1'); + expect(networkMock.defaultAccount).toEqual('0x2'); }); it('sets the defaultBlock property', () => { @@ -220,4 +112,16 @@ describe('ShhTest', () => { expect(shh.defaultBlock).toEqual(10); }); + + it('calls clearSubscriptions with a non-socket based provider and returns true', async () => { + await expect(shh.clearSubscriptions()).resolves.toEqual(true); + }); + + it('calls setProvider and returns true', () => { + networkMock.setProvider.mockReturnValueOnce(true); + + expect(shh.setProvider(providerMock, 'net')).toEqual(true); + + expect(networkMock.setProvider).toHaveBeenCalledWith(providerMock, 'net'); + }); }); diff --git a/packages/web3-shh/tests/src/factories/MethodFactoryTest.js b/packages/web3-shh/tests/src/factories/MethodFactoryTest.js new file mode 100644 index 00000000000..45fe881c54a --- /dev/null +++ b/packages/web3-shh/tests/src/factories/MethodFactoryTest.js @@ -0,0 +1,62 @@ +import { + AddPrivateKeyMethod, + AddSymKeyMethod, + DeleteKeyPairMethod, + DeleteMessageFilterMethod, + DeleteSymKeyMethod, + GenerateSymKeyFromPasswordMethod, + GetFilterMessagesMethod, + GetInfoMethod, + GetPrivateKeyMethod, + GetPublicKeyMethod, + GetSymKeyMethod, + HasKeyPairMethod, + HasSymKeyMethod, + MarkTrustedPeerMethod, + NewKeyPairMethod, + NewMessageFilterMethod, + NewSymKeyMethod, + PostMethod, + SetMaxMessageSizeMethod, + SetMinPoWMethod, + ShhVersionMethod +} from 'web3-core-method'; + +import MethodFactory from '../../../src/factories/MethodFactory'; + +/** + * MethodFactory test + */ +describe('MethodFactoryTest', () => { + let methodFactory; + + beforeEach(() => { + methodFactory = new MethodFactory({}, {}); + }); + + it('constructor check', () => { + expect(methodFactory.methods).toEqual({ + getVersion: ShhVersionMethod, + getInfo: GetInfoMethod, + setMaxMessageSize: SetMaxMessageSizeMethod, + setMinPoW: SetMinPoWMethod, + markTrustedPeer: MarkTrustedPeerMethod, + newKeyPair: NewKeyPairMethod, + addPrivateKey: AddPrivateKeyMethod, + deleteKeyPair: DeleteKeyPairMethod, + hasKeyPair: HasKeyPairMethod, + getPublicKey: GetPublicKeyMethod, + getPrivateKey: GetPrivateKeyMethod, + newSymKey: NewSymKeyMethod, + addSymKey: AddSymKeyMethod, + generateSymKeyFromPassword: GenerateSymKeyFromPasswordMethod, + hasSymKey: HasSymKeyMethod, + getSymKey: GetSymKeyMethod, + deleteSymKey: DeleteSymKeyMethod, + newMessageFilter: NewMessageFilterMethod, + getFilterMessages: GetFilterMessagesMethod, + deleteMessageFilter: DeleteMessageFilterMethod, + post: PostMethod + }); + }); +}); diff --git a/packages/web3-shh/tests/src/factories/ShhModuleFactoryTest.js b/packages/web3-shh/tests/src/factories/ShhModuleFactoryTest.js deleted file mode 100644 index ac935a5d2b9..00000000000 --- a/packages/web3-shh/tests/src/factories/ShhModuleFactoryTest.js +++ /dev/null @@ -1,36 +0,0 @@ -import * as Utils from 'web3-utils'; -import {formatters} from 'web3-core-helpers'; -import Shh from '../../../src/Shh'; -import MethodFactory from '../../../src/factories/MethodFactory'; -import ShhModuleFactory from '../../../src/factories/ShhModuleFactory'; - -// Mocks -jest.mock('Utils'); -jest.mock('formatters'); -jest.mock('../../../src/Shh'); -jest.mock('../../../src/factories/MethodFactory'); - -/** - * ShhModuleFactory test - */ -describe('ShhModuleFactoryTest', () => { - let shhModuleFactory, methodModuleFactoryMock; - - beforeEach(() => { - shhModuleFactory = new ShhModuleFactory(Utils, formatters, methodModuleFactoryMock); - }); - - it('constructor check', () => { - expect(shhModuleFactory.utils).toEqual(Utils); - - expect(shhModuleFactory.formatters).toEqual(formatters); - }); - - it('calls createShhModule and returns the expected Shh object', () => { - expect(shhModuleFactory.createShhModule({}, {}, {}, {})).toBeInstanceOf(Shh); - }); - - it('calls createMethodFactory and returns the expected MethodFactory object', () => { - expect(shhModuleFactory.createMethodFactory({})).toBeInstanceOf(MethodFactory); - }); -}); diff --git a/packages/web3-shh/tests/src/factories/SubscriptionsFactoryTest.js b/packages/web3-shh/tests/src/factories/SubscriptionsFactoryTest.js new file mode 100644 index 00000000000..97c645c48fa --- /dev/null +++ b/packages/web3-shh/tests/src/factories/SubscriptionsFactoryTest.js @@ -0,0 +1,34 @@ +import {MessagesSubscription} from 'web3-core-subscriptions'; +import SubscriptionsFactory from '../../../src/factories/SubscriptionsFactory'; + +// Mocks +jest.mock('MessagesSubscription'); + +/** + * SubscriptionsFactory test + */ +describe('SubscriptionsFactoryTest', () => { + let subscriptionsFactory; + + beforeEach(() => { + subscriptionsFactory = new SubscriptionsFactory({}, {}); + }); + + it('constructor check', () => { + expect(subscriptionsFactory.utils).toEqual({}); + + expect(subscriptionsFactory.formatters).toEqual({}); + }); + + it('calls getSubscription and returns the MessagesSubscription', () => { + expect(subscriptionsFactory.getSubscription({}, 'messages', 'options')).toBeInstanceOf(MessagesSubscription); + + expect(MessagesSubscription).toHaveBeenCalledTimes(1); + }); + + it('calls getSubscription and throws an error', () => { + expect(() => { + subscriptionsFactory.getSubscription({}, 'ERROR', 'options'); + }).toThrow('Unknown subscription: ERROR'); + }); +}); diff --git a/packages/web3-shh/types/index.d.ts b/packages/web3-shh/types/index.d.ts index d6e84e2f103..ad4afc747eb 100644 --- a/packages/web3-shh/types/index.d.ts +++ b/packages/web3-shh/types/index.d.ts @@ -13,12 +13,12 @@ */ /** * @file index.d.ts - * @author Josh Stevens + * @author Josh Stevens , Samuel Furter * @date 2018 */ -import {AbstractWeb3Module, Providers, Web3ModuleOptions} from 'web3-core'; -import {BatchRequest, provider} from 'web3-providers'; +import {AbstractWeb3Module, Web3ModuleOptions} from 'web3-core'; +import {provider} from 'web3-providers'; import {Network} from 'web3-net'; export class Shh extends AbstractWeb3Module { diff --git a/packages/web3-shh/types/tests/shh-test.ts b/packages/web3-shh/types/tests/shh-test.ts index 5523f9315f5..805e25c3cdf 100644 --- a/packages/web3-shh/types/tests/shh-test.ts +++ b/packages/web3-shh/types/tests/shh-test.ts @@ -27,7 +27,7 @@ shh.setProvider('https://localhost:3000'); // $ExpectType Providers Shh.providers; -// $ExpectType string | HttpProvider | IpcProvider | WebsocketProvider | EthereumProvider | null +// $ExpectType object | null shh.givenProvider; // $ExpectType HttpProvider | IpcProvider | WebsocketProvider | EthereumProvider diff --git a/packages/web3-utils/package-lock.json b/packages/web3-utils/package-lock.json index d8d31a51883..61c1fc958e1 100644 --- a/packages/web3-utils/package-lock.json +++ b/packages/web3-utils/package-lock.json @@ -28,12 +28,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -44,17 +46,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -63,6 +68,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -70,27 +76,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -100,12 +111,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -118,6 +131,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -127,12 +141,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -146,6 +162,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -164,22 +181,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -190,6 +211,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -198,6 +220,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -208,6 +231,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -217,12 +241,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -230,12 +256,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -243,22 +271,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -277,6 +309,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -284,7 +317,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decode-uri-component": { "version": "0.2.0", @@ -303,6 +337,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -311,12 +346,14 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dom-walk": { "version": "0.1.1", @@ -327,6 +364,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -334,23 +372,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -374,6 +414,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -381,17 +422,20 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "eth-lib": { "version": "0.2.8", @@ -423,6 +467,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -436,27 +481,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -472,12 +522,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -488,6 +540,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -497,17 +550,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -516,6 +572,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -524,6 +581,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -545,17 +603,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -565,6 +626,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -572,14 +634,16 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "hash.js": { "version": "1.1.7", @@ -604,6 +668,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -614,6 +679,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -627,7 +693,8 @@ "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-callable": { "version": "1.1.4", @@ -637,7 +704,8 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-function": { "version": "1.0.1", @@ -652,32 +720,38 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -686,27 +760,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -715,6 +794,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -726,6 +806,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -734,6 +815,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -748,37 +830,42 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "mimic-response": { "version": "1.0.1", @@ -807,6 +894,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -814,12 +902,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -827,12 +917,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -840,7 +932,8 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "number-to-bn": { "version": "1.7.0", @@ -861,7 +954,8 @@ "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "object-assign": { "version": "4.1.1", @@ -880,6 +974,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -889,22 +984,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -913,6 +1012,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -920,7 +1020,8 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parse-headers": { "version": "2.0.1", @@ -934,32 +1035,38 @@ "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "process": { "version": "0.5.2", @@ -969,12 +1076,14 @@ "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -983,12 +1092,14 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "query-string": { "version": "5.1.1", @@ -1014,6 +1125,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -1040,12 +1152,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -1057,6 +1171,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -1065,6 +1180,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -1074,17 +1190,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -1092,27 +1211,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -1120,12 +1244,14 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "simple-concat": { "version": "1.0.0", @@ -1145,12 +1271,14 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -1166,7 +1294,8 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "strict-uri-encode": { "version": "1.1.0", @@ -1177,6 +1306,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -1186,6 +1316,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -1193,7 +1324,8 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-hex-prefix": { "version": "1.0.0", @@ -1206,12 +1338,14 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "timed-out": { "version": "4.0.1", @@ -1222,6 +1356,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -1235,12 +1370,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1254,13 +1391,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1269,6 +1407,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1276,22 +1415,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1309,12 +1452,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1325,6 +1470,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1332,12 +1478,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1346,12 +1494,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1360,6 +1510,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1370,6 +1521,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1422,12 +1574,14 @@ "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1447,6 +1601,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3-utils/package.json b/packages/web3-utils/package.json index d145ab2ed1a..e405693e0e2 100644 --- a/packages/web3-utils/package.json +++ b/packages/web3-utils/package.json @@ -20,7 +20,6 @@ "@types/bn.js": "^4.11.4", "@types/node": "^10.12.18", "bn.js": "4.11.8", - "dtslint": "0.5.4", "eth-lib": "0.2.8", "ethjs-unit": "^0.1.6", "lodash": "^4.17.11", diff --git a/packages/web3/jest.config.js b/packages/web3/jest.config.js index 3d44339be77..207648b754f 100644 --- a/packages/web3/jest.config.js +++ b/packages/web3/jest.config.js @@ -1,13 +1,10 @@ const jestConfig = require('../../jest.config'); module.exports = jestConfig({ - HttpProvider: 'web3-providers', - WebsocketProvider: 'web3-providers', - IpcProvider: 'web3-providers', - Eth: 'web3-eth', - Shh: 'web3-shh', - Bzz: 'web3-bzz', - Network: 'web3-net', - Personal: 'web3-eth-personal', - Utils: 'web3-utils' + 'Eth': 'web3-eth', + 'Shh': 'web3-shh', + 'Bzz': 'web3-bzz', + 'Network': 'web3-net', + 'Personal': 'web3-eth-personal', + 'Utils': 'web3-utils' }); diff --git a/packages/web3/package-lock.json b/packages/web3/package-lock.json index 4b3655fe02d..e7a0ec1f09e 100644 --- a/packages/web3/package-lock.json +++ b/packages/web3/package-lock.json @@ -20,12 +20,14 @@ "@types/parsimmon": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@types/parsimmon/-/parsimmon-1.10.0.tgz", - "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==" + "integrity": "sha512-bsTIJFVQv7jnvNiC42ld2pQW2KRI+pAG243L+iATvqzy3X6+NH1obz2itRKDZZ8VVhN3wjwYax/VBGCcXzgTqQ==", + "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -36,17 +38,20 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -55,6 +60,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -62,27 +68,32 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, "requires": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -92,12 +103,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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.2", @@ -110,6 +123,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -119,12 +133,14 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -133,6 +149,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -141,22 +158,26 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "camelcase": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==" + "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -167,6 +188,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -175,6 +197,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -185,6 +208,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", @@ -194,12 +218,14 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -207,12 +233,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -220,22 +248,26 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -248,6 +280,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -255,12 +288,14 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "definitelytyped-header-parser": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/definitelytyped-header-parser/-/definitelytyped-header-parser-1.0.1.tgz", "integrity": "sha512-dotNYEd/IXw1LftTVKzjbbN/5TzsVhcmFJJi1W/L2IBgS1TaDcv3ZVh9Z8Zr0AFYC2T7OfdBT8vp0iDaUUlTyA==", + "dev": true, "requires": { "@types/parsimmon": "^1.3.0", "parsimmon": "^1.2.0" @@ -269,17 +304,20 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "dts-critic": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dts-critic/-/dts-critic-1.0.3.tgz", "integrity": "sha512-lMU1Lwvzq0dxIj9tNIBA15yYTXNFO2l4zdbiBWhhkW/VAo7h5hlTBIDHYVr6XhhRNkWsd5RCsisVwFJOIOU5IA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.0", "request-promise-native": "^1.0.5", @@ -287,23 +325,25 @@ } }, "dtslint": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.5.4.tgz", - "integrity": "sha512-gIekEk3hK0VtDINvhn5G65wUAMIvTK3auTuoYOCaWbEno38/r6ugLM64bQCa9E0amHDiEvcqeD2oed2BUa3z+g==", + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/dtslint/-/dtslint-0.4.9.tgz", + "integrity": "sha512-QKOfpKIcpJi38gXWQ1uzm/jFU+1xqPVjrow8PSgs1N7CeY819A0Lm1VvYdM4GD1i964B2QKUyJAAjWiK8YPzlA==", + "dev": true, "requires": { "definitelytyped-header-parser": "^1.0.1", "dts-critic": "^1.0.1", "fs-extra": "^6.0.1", "request": "^2.88.0", "strip-json-comments": "^2.0.1", - "tslint": "^5.13.0", - "typescript": "^3.4.0-dev.20190312" + "tslint": "^5.12.0", + "typescript": "^3.4.0-dev.20190314" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -313,6 +353,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -320,22 +361,26 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -349,27 +394,32 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, "requires": { "locate-path": "^3.0.0" } @@ -377,12 +427,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -393,6 +445,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -402,17 +455,20 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, "requires": { "pump": "^3.0.0" } @@ -421,6 +477,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -429,6 +486,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -441,17 +499,20 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -461,6 +522,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -468,19 +530,22 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -491,6 +556,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -499,47 +565,56 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true }, "js-yaml": { "version": "3.12.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -548,27 +623,32 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -577,6 +657,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -588,6 +669,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, "requires": { "invert-kv": "^2.0.0" } @@ -596,6 +678,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -604,48 +687,55 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, "requires": { "p-defer": "^1.0.0" } }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", + "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==" + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "dev": true }, "mime-types": { "version": "2.1.22", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "dev": true, "requires": { "mime-db": "~1.38.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", + "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -653,12 +743,14 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, "requires": { "minimist": "0.0.8" } @@ -666,12 +758,14 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, "requires": { "path-key": "^2.0.0" } @@ -679,17 +773,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -698,6 +795,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -707,22 +805,26 @@ "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true }, "p-is-promise": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==" + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -731,6 +833,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -738,47 +841,56 @@ "p-try": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true }, "parsimmon": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.12.0.tgz", - "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==" + "integrity": "sha512-uC/BjuSfb4jfaWajKCp1mVncXXq+V1twbcYChbTxN3GM7fn+8XoHwUdvUz+PTaFtDSCRQxU8+Rnh+iMhAkVwdw==", + "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -787,12 +899,14 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "regenerator-runtime": { "version": "0.12.1", @@ -803,6 +917,7 @@ "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -829,12 +944,14 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" @@ -846,6 +963,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, "requires": { "lodash": "^4.17.11" } @@ -854,6 +972,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", @@ -863,17 +982,20 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -881,27 +1003,32 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -909,22 +1036,26 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -940,12 +1071,14 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -955,6 +1088,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -962,22 +1096,26 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -986,12 +1124,14 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true }, "tslint": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.1.tgz", - "integrity": "sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", + "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "dev": true, "requires": { "babel-code-frame": "^6.22.0", "builtin-modules": "^1.1.1", @@ -1005,13 +1145,14 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" } }, "tsutils": { "version": "2.29.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, "requires": { "tslib": "^1.8.1" } @@ -1020,6 +1161,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -1027,22 +1169,26 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "typescript": { - "version": "3.4.0-dev.20190312", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190312.tgz", - "integrity": "sha512-e7hwfNOqmlPt3rTcH8mb17U876KLHQ/3tGaqFPzvi4VvXA7aRfygmPi0f51yRmTQ/Lu9Aq0zDIDi+ktSyMozTQ==" + "version": "3.4.0-dev.20190314", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.0-dev.20190314.tgz", + "integrity": "sha512-UV2x1s6cObFUxCZdtViQNHA9WBmIIzY24mc++2mfjS6FpkuVWGHO7JpO8vi7fnhcRp+GadeXLlx8mKFtGdeeNg==", + "dev": true }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -1050,12 +1196,14 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -1066,6 +1214,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1073,12 +1222,14 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -1087,12 +1238,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1101,6 +1254,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1111,6 +1265,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -1120,17 +1275,20 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", @@ -1150,6 +1308,7 @@ "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" diff --git a/packages/web3/package.json b/packages/web3/package.json index 2e94ed76701..c18073a7527 100644 --- a/packages/web3/package.json +++ b/packages/web3/package.json @@ -59,7 +59,6 @@ "dependencies": { "@babel/runtime": "^7.3.1", "@types/node": "^10.12.18", - "dtslint": "0.5.4", "web3-bzz": "1.0.0-beta.48", "web3-core": "1.0.0-beta.48", "web3-core-helpers": "1.0.0-beta.48", diff --git a/packages/web3/src/Web3.js b/packages/web3/src/Web3.js index 22e0d4cd6db..065b6ec1707 100644 --- a/packages/web3/src/Web3.js +++ b/packages/web3/src/Web3.js @@ -23,7 +23,7 @@ // TODO: objects and do them the functional way because of the tree shaking. // TODO: Move the folders back to simpler structure e.g.: "packages/core/" import {AbstractWeb3Module} from 'web3-core'; -import {ProvidersModuleFactory} from 'web3-providers'; +import {ProviderDetector, ProvidersModuleFactory} from 'web3-providers'; import * as Utils from 'web3-utils'; import {Eth} from 'web3-eth'; import {Shh} from 'web3-shh'; @@ -40,8 +40,8 @@ export default class Web3 extends AbstractWeb3Module { * * @constructor */ - constructor(provider, net = null, options = {}) { - super(provider, new ProvidersModuleFactory(), null, null, options, net); + constructor(provider, net, options = {}) { + super(provider, options, null, net); this.eth = new Eth(this.currentProvider, net, options); this.shh = new Shh(this.currentProvider, net, options); @@ -106,9 +106,9 @@ export default class Web3 extends AbstractWeb3Module { * @param {Number} value */ set transactionBlockTimeout(value) { + super.transactionBlockTimeout = value; this.eth.transactionBlockTimeout = value; this.shh.transactionBlockTimeout = value; - super.transactionBlockTimeout = value; } /** @@ -130,9 +130,9 @@ export default class Web3 extends AbstractWeb3Module { * @param {Number} value */ set transactionConfirmationBlocks(value) { + super.transactionConfirmationBlocks = value; this.eth.transactionConfirmationBlocks = value; this.shh.transactionConfirmationBlocks = value; - super.transactionConfirmationBlocks = value; } /** @@ -154,9 +154,9 @@ export default class Web3 extends AbstractWeb3Module { * @param {Number} value */ set transactionPollingTimeout(value) { + super.transactionPollingTimeout = value; this.eth.transactionPollingTimeout = value; this.shh.transactionPollingTimeout = value; - super.transactionPollingTimeout = value; } /** @@ -243,7 +243,7 @@ export default class Web3 extends AbstractWeb3Module { * @returns {Object} */ static get givenProvider() { - return new ProvidersModuleFactory().createProviderDetector().detect(); + return ProviderDetector.detect(); } /**