From 0bf91c5d6b5f292c221a9afe1e50fe5f35fc4375 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Mon, 2 Apr 2018 16:35:15 -0700 Subject: [PATCH 01/43] Pulled validated token --- package-lock.json | 3929 ++++++++++++++++++++++++++++++++------------- package.json | 1 + 2 files changed, 2783 insertions(+), 1147 deletions(-) diff --git a/package-lock.json b/package-lock.json index 33d30ba..7aca7e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,11 +4,154 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "requires": { + "@babel/highlight": "7.0.0-beta.44" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", + "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "requires": { + "@babel/types": "7.0.0-beta.44", + "jsesc": "2.5.1", + "lodash": "4.17.5", + "source-map": "0.5.7", + "trim-right": "1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", + "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.44", + "@babel/template": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", + "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", + "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "requires": { + "chalk": "2.3.2", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "@babel/template": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", + "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "lodash": "4.17.5" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==" + } + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", + "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/generator": "7.0.0-beta.44", + "@babel/helper-function-name": "7.0.0-beta.44", + "@babel/helper-split-export-declaration": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "debug": "3.1.0", + "globals": "11.3.0", + "invariant": "2.2.4", + "lodash": "4.17.5" + }, + "dependencies": { + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "@babel/types": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", + "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.5", + "to-fast-properties": "2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + } + } + }, "@sindresorhus/is": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", - "dev": true + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" + }, + "JSONStream": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } }, "abbrev": { "version": "1.1.1", @@ -48,6 +191,11 @@ } } }, + "add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=" + }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -69,7 +217,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, "requires": { "kind-of": "3.2.2", "longest": "1.0.1", @@ -79,8 +226,7 @@ "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, "ansi-align": { "version": "2.0.0", @@ -127,8 +273,7 @@ "ansi-escapes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", - "dev": true + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" }, "ansi-regex": { "version": "2.1.1", @@ -138,8 +283,7 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "antlr4": { "version": "4.7.0", @@ -150,8 +294,7 @@ "any-observable": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.2.0.tgz", - "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=", - "dev": true + "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=" }, "any-promise": { "version": "1.3.0", @@ -426,20 +569,42 @@ } } }, + "app-root-path": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz", + "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=" + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.3.5" + } + }, "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.3" } }, + "argv": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=" + }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, "requires": { "arr-flatten": "1.1.0" } @@ -447,8 +612,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, "arr-union": { "version": "3.1.0", @@ -459,19 +623,27 @@ "array-differ": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, "requires": { "array-uniq": "1.0.3" } @@ -479,20 +651,17 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "asn1": { "version": "0.2.3", @@ -529,20 +698,17 @@ "ast-types": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", - "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", - "dev": true + "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==" }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, "async-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, "async-limiter": { "version": "1.0.0", @@ -574,7 +740,6 @@ "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", @@ -585,7 +750,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -600,7 +764,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", - "dev": true, "requires": { "babel-code-frame": "6.26.0", "babel-generator": "6.26.1", @@ -626,22 +789,32 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, + "babel-eslint": { + "version": "8.2.2", + "resolved": "http://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.2.tgz", + "integrity": "sha512-Qt2lz2egBxNYWqN9JIO2z4NOOf8i4b5JS6CFoYrOZZTDssueiV1jH/jsefyg+86SeNY3rB361/mi3kE1WK2WYQ==", + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/traverse": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.42", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0" + } + }, "babel-generator": { "version": "6.26.1", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, "requires": { "babel-messages": "6.23.0", "babel-runtime": "6.26.0", @@ -656,14 +829,12 @@ "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -671,7 +842,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-traverse": "6.26.0", @@ -682,7 +852,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, "requires": { "babel-helper-explode-assignable-expression": "6.24.1", "babel-runtime": "6.26.0", @@ -693,7 +862,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, "requires": { "babel-helper-hoist-variables": "6.24.1", "babel-runtime": "6.26.0", @@ -705,7 +873,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true, "requires": { "babel-helper-function-name": "6.24.1", "babel-runtime": "6.26.0", @@ -717,7 +884,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-traverse": "6.26.0", @@ -728,7 +894,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", - "dev": true, "requires": { "babel-helper-bindify-decorators": "6.24.1", "babel-runtime": "6.26.0", @@ -740,7 +905,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, "requires": { "babel-helper-get-function-arity": "6.24.1", "babel-runtime": "6.26.0", @@ -753,7 +917,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0" @@ -763,7 +926,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0" @@ -773,7 +935,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0" @@ -783,7 +944,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", @@ -794,7 +954,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, "requires": { "babel-helper-function-name": "6.24.1", "babel-runtime": "6.26.0", @@ -807,7 +966,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, "requires": { "babel-helper-optimise-call-expression": "6.24.1", "babel-messages": "6.23.0", @@ -821,7 +979,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-template": "6.26.0" @@ -831,7 +988,6 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -840,7 +996,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -848,74 +1003,62 @@ "babel-plugin-syntax-async-functions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" }, "babel-plugin-syntax-async-generators": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", - "dev": true + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=" }, "babel-plugin-syntax-class-constructor-call": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", - "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", - "dev": true + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=" }, "babel-plugin-syntax-class-properties": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", - "dev": true + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" }, "babel-plugin-syntax-decorators": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", - "dev": true + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=" }, "babel-plugin-syntax-dynamic-import": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" }, "babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" }, "babel-plugin-syntax-export-extensions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", - "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", - "dev": true + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=" }, "babel-plugin-syntax-flow": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", - "dev": true + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" }, "babel-plugin-syntax-trailing-function-commas": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" }, "babel-plugin-transform-async-generator-functions": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", - "dev": true, "requires": { "babel-helper-remap-async-to-generator": "6.24.1", "babel-plugin-syntax-async-generators": "6.13.0", @@ -926,7 +1069,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, "requires": { "babel-helper-remap-async-to-generator": "6.24.1", "babel-plugin-syntax-async-functions": "6.13.0", @@ -937,7 +1079,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", - "dev": true, "requires": { "babel-plugin-syntax-class-constructor-call": "6.18.0", "babel-runtime": "6.26.0", @@ -948,7 +1089,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", - "dev": true, "requires": { "babel-helper-function-name": "6.24.1", "babel-plugin-syntax-class-properties": "6.13.0", @@ -960,7 +1100,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", - "dev": true, "requires": { "babel-helper-explode-class": "6.24.1", "babel-plugin-syntax-decorators": "6.13.0", @@ -973,7 +1112,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -982,7 +1120,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -991,7 +1128,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-template": "6.26.0", @@ -1004,7 +1140,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, "requires": { "babel-helper-define-map": "6.26.0", "babel-helper-function-name": "6.24.1", @@ -1021,7 +1156,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-template": "6.26.0" @@ -1031,7 +1165,6 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -1040,7 +1173,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0" @@ -1050,7 +1182,6 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -1059,7 +1190,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, "requires": { "babel-helper-function-name": "6.24.1", "babel-runtime": "6.26.0", @@ -1070,7 +1200,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -1079,7 +1208,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, "requires": { "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", "babel-runtime": "6.26.0", @@ -1090,7 +1218,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", - "dev": true, "requires": { "babel-plugin-transform-strict-mode": "6.24.1", "babel-runtime": "6.26.0", @@ -1102,7 +1229,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, "requires": { "babel-helper-hoist-variables": "6.24.1", "babel-runtime": "6.26.0", @@ -1113,7 +1239,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, "requires": { "babel-plugin-transform-es2015-modules-amd": "6.24.1", "babel-runtime": "6.26.0", @@ -1124,7 +1249,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, "requires": { "babel-helper-replace-supers": "6.24.1", "babel-runtime": "6.26.0" @@ -1134,7 +1258,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, "requires": { "babel-helper-call-delegate": "6.24.1", "babel-helper-get-function-arity": "6.24.1", @@ -1148,7 +1271,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0" @@ -1158,7 +1280,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -1167,7 +1288,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, "requires": { "babel-helper-regex": "6.26.0", "babel-runtime": "6.26.0", @@ -1178,7 +1298,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -1187,7 +1306,6 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, "requires": { "babel-runtime": "6.26.0" } @@ -1196,7 +1314,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, "requires": { "babel-helper-regex": "6.26.0", "babel-runtime": "6.26.0", @@ -1207,7 +1324,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, "requires": { "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", "babel-plugin-syntax-exponentiation-operator": "6.13.0", @@ -1218,7 +1334,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", - "dev": true, "requires": { "babel-plugin-syntax-export-extensions": "6.13.0", "babel-runtime": "6.26.0" @@ -1228,7 +1343,6 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", - "dev": true, "requires": { "babel-plugin-syntax-flow": "6.18.0", "babel-runtime": "6.26.0" @@ -1238,7 +1352,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "dev": true, "requires": { "babel-plugin-syntax-object-rest-spread": "6.13.0", "babel-runtime": "6.26.0" @@ -1248,7 +1361,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "dev": true, "requires": { "regenerator-transform": "0.10.1" } @@ -1257,7 +1369,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0" @@ -1267,7 +1378,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true, "requires": { "babel-plugin-check-es2015-constants": "6.22.0", "babel-plugin-transform-es2015-arrow-functions": "6.22.0", @@ -1299,7 +1409,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", - "dev": true, "requires": { "babel-plugin-transform-class-constructor-call": "6.24.1", "babel-plugin-transform-export-extensions": "6.22.0", @@ -1310,7 +1419,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", - "dev": true, "requires": { "babel-plugin-syntax-dynamic-import": "6.18.0", "babel-plugin-transform-class-properties": "6.24.1", @@ -1322,7 +1430,6 @@ "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", - "dev": true, "requires": { "babel-plugin-syntax-trailing-function-commas": "6.22.0", "babel-plugin-transform-async-generator-functions": "6.24.1", @@ -1335,7 +1442,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", @@ -1349,14 +1455,12 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, "requires": { "source-map": "0.5.7" } @@ -1367,7 +1471,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, "requires": { "core-js": "2.5.3", "regenerator-runtime": "0.11.1" @@ -1377,7 +1480,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-traverse": "6.26.0", @@ -1389,8 +1491,7 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" } } }, @@ -1398,7 +1499,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, "requires": { "babel-code-frame": "6.26.0", "babel-messages": "6.23.0", @@ -1414,14 +1514,12 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" } } }, @@ -1429,7 +1527,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, "requires": { "babel-runtime": "6.26.0", "esutils": "2.0.2", @@ -1440,8 +1537,7 @@ "babylon": { "version": "7.0.0-beta.42", "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.42.tgz", - "integrity": "sha512-h6E/OkkvcBw/JimbL0p8dIaxrcuQn3QmIYGC/GtJlRYif5LTKBYPHXYwqluJpfS/kOXoz0go+9mkmOVC0M+zWw==", - "dev": true + "integrity": "sha512-h6E/OkkvcBw/JimbL0p8dIaxrcuQn3QmIYGC/GtJlRYif5LTKBYPHXYwqluJpfS/kOXoz0go+9mkmOVC0M+zWw==" }, "balanced-match": { "version": "1.0.0", @@ -1497,25 +1593,22 @@ "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" }, "bignumber.js": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-5.0.0.tgz", - "integrity": "sha512-KWTu6ZMVk9sxlDJQh2YH1UOnfDP8O8TpxUxgQG/vKASoSnEjK9aVuOueFaPcQEYQ5fyNXNTOYwYw3099RYebWg==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz", + "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==" }, "binary-extensions": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true + "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" }, "binaryextensions": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.1.tgz", - "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==", - "dev": true + "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==" }, "bindings": { "version": "1.3.0", @@ -1649,7 +1742,6 @@ "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, "requires": { "expand-range": "1.8.2", "preserve": "0.2.0", @@ -1664,8 +1756,7 @@ "browser-stdout": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=" }, "browserify-aes": { "version": "1.1.1", @@ -1748,8 +1839,7 @@ "buffer-from": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==" }, "buffer-to-arraybuffer": { "version": "0.0.5", @@ -1766,6 +1856,11 @@ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" }, + "byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=" + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -1800,7 +1895,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "dev": true, "requires": { "clone-response": "1.0.2", "get-stream": "3.0.0", @@ -1831,11 +1925,27 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "requires": { + "camelcase": "4.1.0", + "map-obj": "2.0.0", + "quick-lru": "1.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + } + } + }, "capture-stack-trace": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", - "dev": true + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" }, "caseless": { "version": "0.12.0", @@ -1846,7 +1956,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, "optional": true, "requires": { "align-text": "0.1.4", @@ -1867,11 +1976,18 @@ "type-detect": "4.0.8" } }, + "chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "requires": { + "check-error": "1.0.2" + } + }, "chalk": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", - "dev": true, "requires": { "ansi-styles": "3.2.1", "escape-string-regexp": "1.0.5", @@ -1882,7 +1998,6 @@ "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.1" } @@ -1891,7 +2006,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, "requires": { "has-flag": "3.0.0" } @@ -1901,14 +2015,12 @@ "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" }, "chokidar": { "version": "2.0.2", @@ -2056,6 +2168,11 @@ } } }, + "ci-info": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", + "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==" + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -2157,32 +2274,63 @@ } } }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, + "cli": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz", + "integrity": "sha1-Aq1Eo4Cr8nraxebwzdewQ9dMU+M=", "requires": { - "restore-cursor": "2.0.0" - } - }, - "cli-spinners": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", - "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", - "dev": true - }, - "cli-table": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", - "dev": true, + "exit": "0.1.2", + "glob": "3.2.11" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "requires": { + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + } + } + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-spinners": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", + "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=" + }, + "cli-table": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=", "requires": { "colors": "1.0.3" }, @@ -2190,8 +2338,7 @@ "colors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "dev": true + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" } } }, @@ -2199,7 +2346,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", - "dev": true, "requires": { "slice-ansi": "0.0.4", "string-width": "1.0.2" @@ -2208,16 +2354,14 @@ "slice-ansi": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" } } }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, "cliui": { "version": "3.2.0", @@ -2232,20 +2376,17 @@ "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" }, "clone-buffer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "dev": true + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" }, "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, "requires": { "mimic-response": "1.0.0" } @@ -2253,20 +2394,27 @@ "clone-stats": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=" }, "cloneable-readable": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.2.tgz", "integrity": "sha512-Bq6+4t+lbM8vhTs/Bef5c5AdEMtapp/iFb6+s4/Hh9MVTt8OLKH7ZOOZSCT+Ys7hsHvqv0GuMPJ1lnQJVHvxpg==", - "dev": true, "requires": { "inherits": "2.0.3", "process-nextick-args": "2.0.0", "readable-stream": "2.3.5" } }, + "cmd-shim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-2.0.2.tgz", + "integrity": "sha1-b8vamUg6j9FdfTChlspp1oii79s=", + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -2277,6 +2425,163 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "codecov": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-2.3.1.tgz", + "integrity": "sha1-fdqUXNWKH2CBAltbA+4Bou8g+G4=", + "requires": { + "argv": "0.0.2", + "request": "2.77.0", + "urlgrey": "0.4.4" + }, + "dependencies": { + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "2.16.3" + } + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" + }, + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "requires": { + "boom": "2.10.1" + } + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.6", + "mime-types": "2.1.18" + } + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "requires": { + "chalk": "1.1.3", + "commander": "2.15.1", + "is-my-json-valid": "2.17.2", + "pinkie-promise": "2.0.1" + } + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.14.1" + } + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" + }, + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=" + }, + "request": { + "version": "2.77.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.77.0.tgz", + "integrity": "sha1-KwDYIDDt7cyXCJ/6XYgQqcKqMUs=", + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.6", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.18", + "node-uuid": "1.4.8", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.4", + "tunnel-agent": "0.4.3" + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "requires": { + "hoek": "2.16.3" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" + } + } + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -2291,7 +2596,6 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -2299,14 +2603,21 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "colors": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.1.tgz", - "integrity": "sha512-s8+wktIuDSLffCywiwSxQOMqtPxML11a/dtHE17tMn4B1MSWw/C22EKf7M2KGUBcDaVFEGT+S8N02geDXeuNKg==", - "dev": true + "integrity": "sha512-s8+wktIuDSLffCywiwSxQOMqtPxML11a/dtHE17tMn4B1MSWw/C22EKf7M2KGUBcDaVFEGT+S8N02geDXeuNKg==" + }, + "columnify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "requires": { + "strip-ansi": "3.0.1", + "wcwidth": "1.0.1" + } }, "combined-stream": { "version": "1.0.6", @@ -2316,6 +2627,11 @@ "delayed-stream": "1.0.0" } }, + "command-join": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/command-join/-/command-join-2.0.0.tgz", + "integrity": "sha1-Uui5hPSHLZUv8b3IuYOX0nxxRM8=" + }, "commander": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", @@ -2327,8 +2643,26 @@ "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "compare-func": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", + "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", + "requires": { + "array-ify": "1.0.0", + "dot-prop": "3.0.0" + }, + "dependencies": { + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "requires": { + "is-obj": "1.0.1" + } + } + } }, "component-emitter": { "version": "1.2.1", @@ -2345,7 +2679,6 @@ "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, "requires": { "buffer-from": "1.0.0", "inherits": "2.0.3", @@ -2380,6 +2713,19 @@ } } }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", @@ -2396,78 +2742,333 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, - "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "conventional-changelog": { + "version": "1.1.23", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.23.tgz", + "integrity": "sha512-yCPXU/OXJmxgbvTQfIKXKwKa4KQTvlO0a4T/371Raz3bdxcHIGhQtHtdrNee4Z8nGLNfe54njHDblVG2JNFyjg==", + "requires": { + "conventional-changelog-angular": "1.6.6", + "conventional-changelog-atom": "0.2.8", + "conventional-changelog-codemirror": "0.3.8", + "conventional-changelog-core": "2.0.10", + "conventional-changelog-ember": "0.3.11", + "conventional-changelog-eslint": "1.0.9", + "conventional-changelog-express": "0.3.6", + "conventional-changelog-jquery": "0.1.0", + "conventional-changelog-jscs": "0.1.0", + "conventional-changelog-jshint": "0.3.8", + "conventional-changelog-preset-loader": "1.1.8" + } }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + "conventional-changelog-angular": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz", + "integrity": "sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg==", + "requires": { + "compare-func": "1.3.2", + "q": "1.5.1" + } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "conventional-changelog-atom": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz", + "integrity": "sha512-8pPZqhMbrnltNBizjoDCb/Sz85KyUXNDQxuAEYAU5V/eHn0okMBVjqc8aHWYpHrytyZWvMGbayOlDv7i8kEf6g==", + "requires": { + "q": "1.5.1" + } }, - "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=", - "dev": true + "conventional-changelog-cli": { + "version": "1.3.21", + "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-1.3.21.tgz", + "integrity": "sha512-K9VBljxzuATZCLTVnI83PN7WdeRJRPPB5FumuLk4ES3E+m2YJvX07DRbdJlINk6C2DeAjj4ioS5JvsvJaaCRbA==", + "requires": { + "add-stream": "1.0.0", + "conventional-changelog": "1.1.23", + "lodash": "4.17.5", + "meow": "4.0.0", + "tempfile": "1.1.1" + } }, - "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=" + "conventional-changelog-codemirror": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz", + "integrity": "sha512-3HFZKtBXTaUCHvz7ai6nk2+psRIkldDoNzCsom0egDtVmPsvvHZkzjynhdQyULfacRSsBTaiQ0ol6nBOL4dDiQ==", + "requires": { + "q": "1.5.1" + } }, - "cors": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", - "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", + "conventional-changelog-core": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-2.0.10.tgz", + "integrity": "sha512-FP0NHXIbpvU+f5jk/qZdnodhFmlzKW8ENRHQIWT69oe7ffur9nFRVJZlnXnFBOzwHM9WIRbC15ZWh9HZN6t9Uw==", "requires": { - "object-assign": "4.1.1", - "vary": "1.1.2" + "conventional-changelog-writer": "3.0.9", + "conventional-commits-parser": "2.1.7", + "dateformat": "3.0.3", + "get-pkg-repo": "1.4.0", + "git-raw-commits": "1.3.6", + "git-remote-origin-url": "2.0.0", + "git-semver-tags": "1.3.6", + "lodash": "4.17.5", + "normalize-package-data": "2.4.0", + "q": "1.5.1", + "read-pkg": "1.1.0", + "read-pkg-up": "1.0.1", + "through2": "2.0.3" } }, - "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "conventional-changelog-ember": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.3.11.tgz", + "integrity": "sha512-ErjPPiDmTd/WPgj2bSp+CGsLtJiv7FbdPKjZXH2Cd5P7j44Rqf0V9SIAAYFTQNoPqmvcp+sIcr/vH52WzPJUbw==", "requires": { - "bn.js": "4.11.8", - "elliptic": "6.4.0" + "q": "1.5.1" } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, + "conventional-changelog-eslint": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz", + "integrity": "sha512-h87nfVh2fdk9fJIvz26wCBsbDC/KxqCc5wSlNMZbXcARtbgNbNDIF7Y7ctokFdnxkzVdaHsbINkh548T9eBA7Q==", "requires": { - "capture-stack-trace": "1.0.0" + "q": "1.5.1" } }, - "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "conventional-changelog-express": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz", + "integrity": "sha512-3iWVtBJZ9RnRnZveNDzOD8QRn6g6vUif0qVTWWyi5nUIAbuN1FfPVyKdAlJJfp5Im+dE8Kiy/d2SpaX/0X678Q==", "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.11" + "q": "1.5.1" } }, - "create-hmac": { + "conventional-changelog-jquery": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz", + "integrity": "sha1-Agg5cWLjhGmG5xJztsecW1+A9RA=", + "requires": { + "q": "1.5.1" + } + }, + "conventional-changelog-jscs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz", + "integrity": "sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw=", + "requires": { + "q": "1.5.1" + } + }, + "conventional-changelog-jshint": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz", + "integrity": "sha512-hn9QU4ZI/5V50wKPJNPGT4gEWgiBFpV6adieILW4MaUFynuDYOvQ71EMSj3EznJyKi/KzuXpc9dGmX8njZMjig==", + "requires": { + "compare-func": "1.3.2", + "q": "1.5.1" + } + }, + "conventional-changelog-preset-loader": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz", + "integrity": "sha512-MkksM4G4YdrMlT2MbTsV2F6LXu/hZR0Tc/yenRrDIKRwBl/SP7ER4ZDlglqJsCzLJi4UonBc52Bkm5hzrOVCcw==" + }, + "conventional-changelog-writer": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz", + "integrity": "sha512-n9KbsxlJxRQsUnK6wIBRnARacvNnN4C/nxnxCkH+B/R1JS2Fa+DiP1dU4I59mEDEjgnFaN2+9wr1P1s7GYB5/Q==", + "requires": { + "compare-func": "1.3.2", + "conventional-commits-filter": "1.1.6", + "dateformat": "3.0.3", + "handlebars": "4.0.11", + "json-stringify-safe": "5.0.1", + "lodash": "4.17.5", + "meow": "4.0.0", + "semver": "5.5.0", + "split": "1.0.1", + "through2": "2.0.3" + }, + "dependencies": { + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2.3.8" + } + } + } + }, + "conventional-commits-filter": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz", + "integrity": "sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q==", + "requires": { + "is-subset": "0.1.1", + "modify-values": "1.0.1" + } + }, + "conventional-commits-parser": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz", + "integrity": "sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ==", + "requires": { + "JSONStream": "1.3.2", + "is-text-path": "1.0.1", + "lodash": "4.17.5", + "meow": "4.0.0", + "split2": "2.2.0", + "through2": "2.0.3", + "trim-off-newlines": "1.0.1" + } + }, + "conventional-recommended-bump": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-1.2.1.tgz", + "integrity": "sha512-oJjG6DkRgtnr/t/VrPdzmf4XZv8c4xKVJrVT4zrSHd92KEL+EYxSbYoKq8lQ7U5yLMw7130wrcQTLRjM/T+d4w==", + "requires": { + "concat-stream": "1.6.2", + "conventional-commits-filter": "1.1.6", + "conventional-commits-parser": "2.1.7", + "git-raw-commits": "1.3.6", + "git-semver-tags": "1.3.6", + "meow": "3.7.0", + "object-assign": "4.1.1" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + } + } + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", + "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + }, + "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=" + }, + "cors": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", + "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", + "requires": { + "object-assign": "4.1.1", + "vary": "1.1.2" + } + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "1.0.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.11" + } + }, + "create-hmac": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", @@ -2484,7 +3085,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, "requires": { "lru-cache": "4.1.2", "shebang-command": "1.2.0", @@ -2530,8 +3130,7 @@ "crypto-js": { "version": "3.1.8", "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.1.8.tgz", - "integrity": "sha1-cV8HC/YBTyrpkqmLOSkli3E/CNU=", - "dev": true + "integrity": "sha1-cV8HC/YBTyrpkqmLOSkli3E/CNU=" }, "crypto-random-string": { "version": "1.0.0", @@ -2539,11 +3138,18 @@ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", "dev": true }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "1.0.2" + } + }, "dargs": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", - "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=", - "dev": true + "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=" }, "dashdash": { "version": "1.14.1", @@ -2556,20 +3162,22 @@ "date-fns": { "version": "1.29.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", - "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", - "dev": true + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==" + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" }, "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==" }, "death": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", - "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=", - "dev": true + "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=" }, "debug": { "version": "2.6.9", @@ -2584,6 +3192,22 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "requires": { + "decamelize": "1.2.0", + "map-obj": "1.0.1" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + } + } + }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -2678,6 +3302,11 @@ } } }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + }, "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", @@ -2690,14 +3319,20 @@ "deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "dev": true + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "1.0.4" + } }, "define-property": { "version": "2.0.2", @@ -2737,6 +3372,11 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -2759,14 +3399,12 @@ "detect-conflict": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/detect-conflict/-/detect-conflict-1.0.1.tgz", - "integrity": "sha1-CIZXpmqWHAUBnbfEIwiDsca0F24=", - "dev": true + "integrity": "sha1-CIZXpmqWHAUBnbfEIwiDsca0F24=" }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, "requires": { "repeating": "2.0.1" } @@ -2774,8 +3412,7 @@ "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" }, "diffie-hellman": { "version": "5.0.2", @@ -2796,11 +3433,54 @@ "esutils": "2.0.2" } }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + } + } + }, "dom-walk": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", @@ -2823,8 +3503,7 @@ "duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, "duplexer3": { "version": "0.1.4", @@ -2843,25 +3522,68 @@ "editions": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", - "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", - "dev": true + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==" }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "eip777": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/eip777/-/eip777-0.0.3.tgz", + "integrity": "sha512-ZLukc+ekVjiGrOa14QQAwA/Q18judYDI3o8cjA4A4ya/1YEM7PnE12Ij5jMwM0sX5FkFTZtK59uudwVk6DJflA==", + "requires": { + "chai-as-promised": "7.1.1", + "eip820": "0.0.17", + "giveth-common-contracts": "0.4.0", + "jshint-esnext": "2.7.0-3", + "solcpiler": "0.0.11", + "web3": "1.0.0-beta.33" + }, + "dependencies": { + "giveth-common-contracts": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/giveth-common-contracts/-/giveth-common-contracts-0.4.0.tgz", + "integrity": "sha512-zFRXh6MQyroTr2NSKwtYOX2pY78+S/SJoqwTScqJqqhFIfVxgWtqj1pOn7lEcZ44GTNdbaCh5MS7/rZiX9pasg==", + "requires": { + "babel-eslint": "8.2.2", + "codecov": "2.3.1", + "jsonfile": "3.0.1", + "solium": "0.5.5" + } + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "requires": { + "graceful-fs": "4.1.11" + } + } + } + }, + "eip820": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/eip820/-/eip820-0.0.17.tgz", + "integrity": "sha512-dkfeehEO6w2iS/4brPR88G/SSBJV6vDepXFlANXE2I4x8caLBacM7sxciQVDv3XdDDGqr4c/lcEtued8a3yPMA==", + "requires": { + "eth-contract-class": "0.0.7", + "ethereumjs-tx": "1.3.4", + "ethereumjs-util": "5.1.5", + "lerna": "2.9.1", + "web3": "1.0.0-beta.33" + } + }, "ejs": { "version": "2.5.7", "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", - "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=", - "dev": true + "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=" }, "elegant-spinner": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", - "dev": true + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" }, "elliptic": { "version": "6.4.0", @@ -2880,8 +3602,7 @@ "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" }, "encodeurl": { "version": "1.0.2", @@ -2900,18 +3621,21 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", - "dev": true, "requires": { "graceful-fs": "4.1.11", "memory-fs": "0.4.1", "tapable": "1.0.0" } }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" + }, "errno": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, "requires": { "prr": "1.0.1" } @@ -2920,7 +3644,6 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz", "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=", - "dev": true, "requires": { "string-template": "0.2.1", "xtend": "4.0.1" @@ -2942,14 +3665,12 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, "requires": { "esprima": "2.7.3", "estraverse": "1.9.3", @@ -2961,20 +3682,17 @@ "esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" }, "estraverse": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=" }, "source-map": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, "optional": true, "requires": { "amdefine": "1.0.1" @@ -3180,7 +3898,6 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, "requires": { "esrecurse": "4.2.1", "estraverse": "4.2.0" @@ -3189,8 +3906,7 @@ "eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", - "dev": true + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" }, "espree": { "version": "3.5.4", @@ -3205,8 +3921,7 @@ "esprima": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" }, "esquery": { "version": "1.0.0", @@ -3221,7 +3936,6 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, "requires": { "estraverse": "4.2.0" } @@ -3229,20 +3943,26 @@ "estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "eth-contract-class": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/eth-contract-class/-/eth-contract-class-0.0.7.tgz", + "integrity": "sha1-08RjQaIlX7BGFl8tdj4o0dBAWB4=", + "requires": { + "web3-core-promievent": "1.0.0-beta.33" + } + }, "eth-lib": { "version": "0.1.27", "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.27.tgz", @@ -3266,7 +3986,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/ethereumjs-testrpc-sc/-/ethereumjs-testrpc-sc-6.1.2.tgz", "integrity": "sha512-dBTav4AZQ7zuajmICv1k7bEesqS+8f0u0wciXNUJZb842RTBi0lgKEDF8WgZshzv4ThI+XVQSRNV/A+seiK4aA==", - "dev": true, "requires": { "source-map-support": "0.5.4", "webpack-cli": "2.0.12" @@ -3353,7 +4072,6 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, "requires": { "cross-spawn": "5.1.0", "get-stream": "3.0.0", @@ -3364,17 +4082,20 @@ "strip-eof": "1.0.0" } }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, "exit-hook": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, "requires": { "is-posix-bracket": "0.1.1" } @@ -3383,7 +4104,6 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, "requires": { "fill-range": "2.2.3" } @@ -3392,7 +4112,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, "requires": { "homedir-polyfill": "1.0.1" } @@ -3471,7 +4190,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", - "dev": true, "requires": { "chardet": "0.4.2", "iconv-lite": "0.4.19", @@ -3482,7 +4200,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, "requires": { "is-extglob": "1.0.0" } @@ -3505,8 +4222,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "fd-slicer": { "version": "1.0.1", @@ -3520,7 +4236,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, "requires": { "escape-string-regexp": "1.0.5" } @@ -3543,14 +4258,12 @@ "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" }, "fill-range": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, "requires": { "is-number": "2.1.0", "isobject": "2.1.0", @@ -3586,7 +4299,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", - "dev": true, "requires": { "readable-stream": "2.3.5" } @@ -3606,8 +4318,7 @@ "flow-parser": { "version": "0.68.0", "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.68.0.tgz", - "integrity": "sha1-nMlmIKEC4xajFLa81WIFzqzoYtg=", - "dev": true + "integrity": "sha1-nMlmIKEC4xajFLa81WIFzqzoYtg=" }, "for-each": { "version": "0.3.2", @@ -3620,14 +4331,12 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, "requires": { "for-in": "1.0.2" } @@ -3676,7 +4385,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, "requires": { "inherits": "2.0.3", "readable-stream": "2.3.5" @@ -3725,7 +4433,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", - "dev": true, "optional": true, "requires": { "nan": "2.10.0", @@ -3735,13 +4442,11 @@ "abbrev": { "version": "1.1.0", "bundled": true, - "dev": true, "optional": true }, "ajv": { "version": "4.11.8", "bundled": true, - "dev": true, "optional": true, "requires": { "co": "4.6.0", @@ -3750,19 +4455,16 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "dev": true + "bundled": true }, "aproba": { "version": "1.1.1", "bundled": true, - "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", "bundled": true, - "dev": true, "optional": true, "requires": { "delegates": "1.0.0", @@ -3772,42 +4474,35 @@ "asn1": { "version": "0.2.3", "bundled": true, - "dev": true, "optional": true }, "assert-plus": { "version": "0.2.0", "bundled": true, - "dev": true, "optional": true }, "asynckit": { "version": "0.4.0", "bundled": true, - "dev": true, "optional": true }, "aws-sign2": { "version": "0.6.0", "bundled": true, - "dev": true, "optional": true }, "aws4": { "version": "1.6.0", "bundled": true, - "dev": true, "optional": true }, "balanced-match": { "version": "0.4.2", - "bundled": true, - "dev": true + "bundled": true }, "bcrypt-pbkdf": { "version": "1.0.1", "bundled": true, - "dev": true, "optional": true, "requires": { "tweetnacl": "0.14.5" @@ -3816,7 +4511,6 @@ "block-stream": { "version": "0.0.9", "bundled": true, - "dev": true, "requires": { "inherits": "2.0.3" } @@ -3824,7 +4518,6 @@ "boom": { "version": "2.10.1", "bundled": true, - "dev": true, "requires": { "hoek": "2.16.3" } @@ -3832,7 +4525,6 @@ "brace-expansion": { "version": "1.1.7", "bundled": true, - "dev": true, "requires": { "balanced-match": "0.4.2", "concat-map": "0.0.1" @@ -3840,53 +4532,44 @@ }, "buffer-shims": { "version": "1.0.0", - "bundled": true, - "dev": true + "bundled": true }, "caseless": { "version": "0.12.0", "bundled": true, - "dev": true, "optional": true }, "co": { "version": "4.6.0", "bundled": true, - "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "dev": true + "bundled": true }, "combined-stream": { "version": "1.0.5", "bundled": true, - "dev": true, "requires": { "delayed-stream": "1.0.0" } }, "concat-map": { "version": "0.0.1", - "bundled": true, - "dev": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "dev": true + "bundled": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, - "dev": true + "bundled": true }, "cryptiles": { "version": "2.0.5", "bundled": true, - "dev": true, "requires": { "boom": "2.10.1" } @@ -3894,7 +4577,6 @@ "dashdash": { "version": "1.14.1", "bundled": true, - "dev": true, "optional": true, "requires": { "assert-plus": "1.0.0" @@ -3903,7 +4585,6 @@ "assert-plus": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true } } @@ -3911,7 +4592,6 @@ "debug": { "version": "2.6.8", "bundled": true, - "dev": true, "optional": true, "requires": { "ms": "2.0.0" @@ -3920,30 +4600,25 @@ "deep-extend": { "version": "0.4.2", "bundled": true, - "dev": true, "optional": true }, "delayed-stream": { "version": "1.0.0", - "bundled": true, - "dev": true + "bundled": true }, "delegates": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true }, "detect-libc": { "version": "1.0.2", "bundled": true, - "dev": true, "optional": true }, "ecc-jsbn": { "version": "0.1.1", "bundled": true, - "dev": true, "optional": true, "requires": { "jsbn": "0.1.1" @@ -3952,24 +4627,20 @@ "extend": { "version": "3.0.1", "bundled": true, - "dev": true, "optional": true }, "extsprintf": { "version": "1.0.2", - "bundled": true, - "dev": true + "bundled": true }, "forever-agent": { "version": "0.6.1", "bundled": true, - "dev": true, "optional": true }, "form-data": { "version": "2.1.4", "bundled": true, - "dev": true, "optional": true, "requires": { "asynckit": "0.4.0", @@ -3979,13 +4650,11 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, - "dev": true + "bundled": true }, "fstream": { "version": "1.0.11", "bundled": true, - "dev": true, "requires": { "graceful-fs": "4.1.11", "inherits": "2.0.3", @@ -3996,7 +4665,6 @@ "fstream-ignore": { "version": "1.0.5", "bundled": true, - "dev": true, "optional": true, "requires": { "fstream": "1.0.11", @@ -4007,7 +4675,6 @@ "gauge": { "version": "2.7.4", "bundled": true, - "dev": true, "optional": true, "requires": { "aproba": "1.1.1", @@ -4023,7 +4690,6 @@ "getpass": { "version": "0.1.7", "bundled": true, - "dev": true, "optional": true, "requires": { "assert-plus": "1.0.0" @@ -4032,7 +4698,6 @@ "assert-plus": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true } } @@ -4040,7 +4705,6 @@ "glob": { "version": "7.1.2", "bundled": true, - "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -4052,19 +4716,16 @@ }, "graceful-fs": { "version": "4.1.11", - "bundled": true, - "dev": true + "bundled": true }, "har-schema": { "version": "1.0.5", "bundled": true, - "dev": true, "optional": true }, "har-validator": { "version": "4.2.1", "bundled": true, - "dev": true, "optional": true, "requires": { "ajv": "4.11.8", @@ -4074,13 +4735,11 @@ "has-unicode": { "version": "2.0.1", "bundled": true, - "dev": true, "optional": true }, "hawk": { "version": "3.1.3", "bundled": true, - "dev": true, "requires": { "boom": "2.10.1", "cryptiles": "2.0.5", @@ -4090,13 +4749,11 @@ }, "hoek": { "version": "2.16.3", - "bundled": true, - "dev": true + "bundled": true }, "http-signature": { "version": "1.1.1", "bundled": true, - "dev": true, "optional": true, "requires": { "assert-plus": "0.2.0", @@ -4107,7 +4764,6 @@ "inflight": { "version": "1.0.6", "bundled": true, - "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -4115,19 +4771,16 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "dev": true + "bundled": true }, "ini": { "version": "1.3.4", "bundled": true, - "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "dev": true, "requires": { "number-is-nan": "1.0.1" } @@ -4135,24 +4788,20 @@ "is-typedarray": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true }, "isarray": { "version": "1.0.0", - "bundled": true, - "dev": true + "bundled": true }, "isstream": { "version": "0.1.2", "bundled": true, - "dev": true, "optional": true }, "jodid25519": { "version": "1.0.2", "bundled": true, - "dev": true, "optional": true, "requires": { "jsbn": "0.1.1" @@ -4161,19 +4810,16 @@ "jsbn": { "version": "0.1.1", "bundled": true, - "dev": true, "optional": true }, "json-schema": { "version": "0.2.3", "bundled": true, - "dev": true, "optional": true }, "json-stable-stringify": { "version": "1.0.1", "bundled": true, - "dev": true, "optional": true, "requires": { "jsonify": "0.0.0" @@ -4182,19 +4828,16 @@ "json-stringify-safe": { "version": "5.0.1", "bundled": true, - "dev": true, "optional": true }, "jsonify": { "version": "0.0.0", "bundled": true, - "dev": true, "optional": true }, "jsprim": { "version": "1.4.0", "bundled": true, - "dev": true, "optional": true, "requires": { "assert-plus": "1.0.0", @@ -4206,20 +4849,17 @@ "assert-plus": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true } } }, "mime-db": { "version": "1.27.0", - "bundled": true, - "dev": true + "bundled": true }, "mime-types": { "version": "2.1.15", "bundled": true, - "dev": true, "requires": { "mime-db": "1.27.0" } @@ -4227,20 +4867,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "dev": true, "requires": { "brace-expansion": "1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "dev": true + "bundled": true }, "mkdirp": { "version": "0.5.1", "bundled": true, - "dev": true, "requires": { "minimist": "0.0.8" } @@ -4248,13 +4885,11 @@ "ms": { "version": "2.0.0", "bundled": true, - "dev": true, "optional": true }, "node-pre-gyp": { "version": "0.6.39", "bundled": true, - "dev": true, "optional": true, "requires": { "detect-libc": "1.0.2", @@ -4273,7 +4908,6 @@ "nopt": { "version": "4.0.1", "bundled": true, - "dev": true, "optional": true, "requires": { "abbrev": "1.1.0", @@ -4283,7 +4917,6 @@ "npmlog": { "version": "4.1.0", "bundled": true, - "dev": true, "optional": true, "requires": { "are-we-there-yet": "1.1.4", @@ -4294,25 +4927,21 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "dev": true + "bundled": true }, "oauth-sign": { "version": "0.8.2", "bundled": true, - "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", "bundled": true, - "dev": true, "optional": true }, "once": { "version": "1.4.0", "bundled": true, - "dev": true, "requires": { "wrappy": "1.0.2" } @@ -4320,19 +4949,16 @@ "os-homedir": { "version": "1.0.2", "bundled": true, - "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", "bundled": true, - "dev": true, "optional": true }, "osenv": { "version": "0.1.4", "bundled": true, - "dev": true, "optional": true, "requires": { "os-homedir": "1.0.2", @@ -4341,36 +4967,30 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, - "dev": true + "bundled": true }, "performance-now": { "version": "0.2.0", "bundled": true, - "dev": true, "optional": true }, "process-nextick-args": { "version": "1.0.7", - "bundled": true, - "dev": true + "bundled": true }, "punycode": { "version": "1.4.1", "bundled": true, - "dev": true, "optional": true }, "qs": { "version": "6.4.0", "bundled": true, - "dev": true, "optional": true }, "rc": { "version": "1.2.1", "bundled": true, - "dev": true, "optional": true, "requires": { "deep-extend": "0.4.2", @@ -4382,7 +5002,6 @@ "minimist": { "version": "1.2.0", "bundled": true, - "dev": true, "optional": true } } @@ -4390,7 +5009,6 @@ "readable-stream": { "version": "2.2.9", "bundled": true, - "dev": true, "requires": { "buffer-shims": "1.0.0", "core-util-is": "1.0.2", @@ -4404,7 +5022,6 @@ "request": { "version": "2.81.0", "bundled": true, - "dev": true, "optional": true, "requires": { "aws-sign2": "0.6.0", @@ -4434,38 +5051,32 @@ "rimraf": { "version": "2.6.1", "bundled": true, - "dev": true, "requires": { "glob": "7.1.2" } }, "safe-buffer": { "version": "5.0.1", - "bundled": true, - "dev": true + "bundled": true }, "semver": { "version": "5.3.0", "bundled": true, - "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", "bundled": true, - "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", "bundled": true, - "dev": true, "optional": true }, "sntp": { "version": "1.0.9", "bundled": true, - "dev": true, "requires": { "hoek": "2.16.3" } @@ -4473,7 +5084,6 @@ "sshpk": { "version": "1.13.0", "bundled": true, - "dev": true, "optional": true, "requires": { "asn1": "0.2.3", @@ -4490,7 +5100,6 @@ "assert-plus": { "version": "1.0.0", "bundled": true, - "dev": true, "optional": true } } @@ -4498,7 +5107,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "dev": true, "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", @@ -4508,7 +5116,6 @@ "string_decoder": { "version": "1.0.1", "bundled": true, - "dev": true, "requires": { "safe-buffer": "5.0.1" } @@ -4516,13 +5123,11 @@ "stringstream": { "version": "0.0.5", "bundled": true, - "dev": true, "optional": true }, "strip-ansi": { "version": "3.0.1", "bundled": true, - "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -4530,13 +5135,11 @@ "strip-json-comments": { "version": "2.0.1", "bundled": true, - "dev": true, "optional": true }, "tar": { "version": "2.2.1", "bundled": true, - "dev": true, "requires": { "block-stream": "0.0.9", "fstream": "1.0.11", @@ -4546,7 +5149,6 @@ "tar-pack": { "version": "3.4.0", "bundled": true, - "dev": true, "optional": true, "requires": { "debug": "2.6.8", @@ -4562,7 +5164,6 @@ "tough-cookie": { "version": "2.3.2", "bundled": true, - "dev": true, "optional": true, "requires": { "punycode": "1.4.1" @@ -4571,7 +5172,6 @@ "tunnel-agent": { "version": "0.6.0", "bundled": true, - "dev": true, "optional": true, "requires": { "safe-buffer": "5.0.1" @@ -4580,30 +5180,25 @@ "tweetnacl": { "version": "0.14.5", "bundled": true, - "dev": true, "optional": true }, "uid-number": { "version": "0.0.6", "bundled": true, - "dev": true, "optional": true }, "util-deprecate": { "version": "1.0.2", - "bundled": true, - "dev": true + "bundled": true }, "uuid": { "version": "3.0.1", "bundled": true, - "dev": true, "optional": true }, "verror": { "version": "1.3.6", "bundled": true, - "dev": true, "optional": true, "requires": { "extsprintf": "1.0.2" @@ -4612,7 +5207,6 @@ "wide-align": { "version": "1.1.2", "bundled": true, - "dev": true, "optional": true, "requires": { "string-width": "1.0.2" @@ -4620,8 +5214,7 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "dev": true + "bundled": true } } }, @@ -4658,6 +5251,34 @@ "webpack-cli": "2.0.12" } }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "requires": { + "is-property": "1.0.2" + } + }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -4669,6 +5290,93 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-pkg-repo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", + "requires": { + "hosted-git-info": "2.6.0", + "meow": "3.7.0", + "normalize-package-data": "2.4.0", + "parse-github-repo-url": "1.4.1", + "through2": "2.0.3" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.4.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "requires": { + "get-stdin": "4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + } + } + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -4692,21 +5400,90 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/gh-got/-/gh-got-6.0.0.tgz", "integrity": "sha512-F/mS+fsWQMo1zfgG9MD8KWvTWPPzzhuVwY++fhQ5Ggd+0P+CAMHtzMZhNxG+TqGfHDChJKsbh6otfMGqO2AKBw==", - "dev": true, "requires": { "got": "7.1.0", "is-plain-obj": "1.1.0" } }, + "git-raw-commits": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-1.3.6.tgz", + "integrity": "sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg==", + "requires": { + "dargs": "4.1.0", + "lodash.template": "4.4.0", + "meow": "4.0.0", + "split2": "2.2.0", + "through2": "2.0.3" + }, + "dependencies": { + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "requires": { + "number-is-nan": "1.0.1" + } + } + } + }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "requires": { + "gitconfiglocal": "1.0.0", + "pify": "2.3.0" + } + }, + "git-semver-tags": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-1.3.6.tgz", + "integrity": "sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig==", + "requires": { + "meow": "4.0.0", + "semver": "5.5.0" + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "requires": { + "ini": "1.3.5" + } + }, "github-username": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/github-username/-/github-username-4.1.0.tgz", "integrity": "sha1-y+KABBiDIG2kISrp5LXxacML9Bc=", - "dev": true, "requires": { "gh-got": "6.0.0" } }, + "giveth-common-contracts": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/giveth-common-contracts/-/giveth-common-contracts-0.5.0.tgz", + "integrity": "sha512-lUZFgyVQHS73imrg2LQ7OmhCnjqnpPfoNRVwobT/tZKOZP7nTPqYW5mffJPvl8SJX4WNMmNum45xFgVnl/jU3w==", + "requires": { + "babel-eslint": "8.2.2", + "codecov": "2.3.1", + "jsonfile": "3.0.1", + "solidity-coverage": "0.4.14", + "solium": "0.5.5", + "truffle": "4.1.3" + }, + "dependencies": { + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "requires": { + "graceful-fs": "4.1.11" + } + } + } + }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -4724,7 +5501,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.1.0.tgz", "integrity": "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=", - "dev": true, "requires": { "glob": "7.1.2", "yargs": "1.2.6" @@ -4733,14 +5509,12 @@ "minimist": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz", - "integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=", - "dev": true + "integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=" }, "yargs": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz", "integrity": "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=", - "dev": true, "requires": { "minimist": "0.1.0" } @@ -4751,7 +5525,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, "requires": { "glob-parent": "2.0.0", "is-glob": "2.0.1" @@ -4761,7 +5534,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, "requires": { "is-glob": "2.0.1" } @@ -4788,7 +5560,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, "requires": { "global-prefix": "1.0.2", "is-windows": "1.0.2", @@ -4799,7 +5570,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, "requires": { "expand-tilde": "2.0.2", "homedir-polyfill": "1.0.1", @@ -4811,8 +5581,7 @@ "globals": { "version": "11.3.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", - "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==", - "dev": true + "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==" }, "globby": { "version": "5.0.0", @@ -4863,7 +5632,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/grouped-queue/-/grouped-queue-0.3.3.tgz", "integrity": "sha1-wWfSpTGcWg4JZO9qJbfC34mWyFw=", - "dev": true, "requires": { "lodash": "4.17.5" } @@ -4871,14 +5639,12 @@ "growl": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", - "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", - "dev": true + "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==" }, "handlebars": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dev": true, "requires": { "async": "1.5.2", "optimist": "0.6.1", @@ -4890,7 +5656,6 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, "requires": { "amdefine": "1.0.1" } @@ -4924,7 +5689,6 @@ "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.1.1" } @@ -4932,14 +5696,12 @@ "has-color": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbol-support-x": { "version": "1.4.2", @@ -4954,6 +5716,11 @@ "has-symbol-support-x": "1.4.2" } }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -5045,8 +5812,7 @@ "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" }, "hmac-drbg": { "version": "1.0.1", @@ -5067,7 +5833,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" @@ -5077,7 +5842,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, "requires": { "parse-passwd": "1.0.0" } @@ -5087,11 +5851,45 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==" }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", - "dev": true + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.3.0", + "domutils": "1.5.1", + "entities": "1.0.0", + "readable-stream": "1.1.14" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" }, "http-errors": { "version": "1.6.2", @@ -5157,14 +5955,12 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, "requires": { "repeating": "2.0.1" } @@ -5186,14 +5982,12 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, "requires": { "ansi-escapes": "3.0.0", "chalk": "2.3.2", @@ -5214,20 +6008,17 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "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" @@ -5237,7 +6028,6 @@ "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" } @@ -5247,14 +6037,12 @@ "interpret": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" }, "into-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "dev": true, "requires": { "from2": "2.3.0", "p-is-promise": "1.1.0" @@ -5264,7 +6052,6 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, "requires": { "loose-envify": "1.3.1" } @@ -5305,7 +6092,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, "requires": { "binary-extensions": "1.11.0" } @@ -5313,8 +6099,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -5324,6 +6109,14 @@ "builtin-modules": "1.1.1" } }, + "is-ci": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", + "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", + "requires": { + "ci-info": "1.1.3" + } + }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", @@ -5363,14 +6156,12 @@ "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, "requires": { "is-primitive": "2.0.0" } @@ -5378,20 +6169,17 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, "is-finite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, "requires": { "number-is-nan": "1.0.1" } @@ -5413,7 +6201,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, "requires": { "is-extglob": "1.0.0" } @@ -5433,6 +6220,23 @@ "is-path-inside": "1.0.1" } }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==" + }, + "is-my-json-valid": { + "version": "2.17.2", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", + "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "is-my-ip-valid": "1.0.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, "is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", @@ -5448,7 +6252,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, "requires": { "kind-of": "3.2.2" } @@ -5456,8 +6259,7 @@ "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-object": { "version": "1.0.1", @@ -5468,7 +6270,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", - "dev": true, "requires": { "symbol-observable": "0.2.4" }, @@ -5476,8 +6277,7 @@ "symbol-observable": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", - "dev": true + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=" } } }, @@ -5547,26 +6347,27 @@ "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" }, "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" }, "is-resolvable": { "version": "1.1.0", @@ -5583,7 +6384,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-scoped/-/is-scoped-1.0.0.tgz", "integrity": "sha1-RJypgpnnEwOCViieyytUDcQ3yzA=", - "dev": true, "requires": { "scoped-regex": "1.0.0" } @@ -5593,6 +6393,19 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-subset": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", + "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=" + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "requires": { + "text-extensions": "1.7.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -5606,8 +6419,7 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "isarray": { "version": "1.0.0", @@ -5617,14 +6429,12 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, "requires": { "isarray": "1.0.0" } @@ -5638,7 +6448,6 @@ "version": "0.4.5", "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "dev": true, "requires": { "abbrev": "1.0.9", "async": "1.5.2", @@ -5659,20 +6468,17 @@ "abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=" }, "esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" }, "glob": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, "requires": { "inflight": "1.0.6", "inherits": "2.0.3", @@ -5684,14 +6490,12 @@ "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, "requires": { "abbrev": "1.0.9" } @@ -5699,14 +6503,12 @@ "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, "requires": { "has-flag": "1.0.0" } @@ -5717,7 +6519,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-2.2.1.tgz", "integrity": "sha512-TS+hoFl8Z5FAFMK38nhBkdLt44CclNRgDHWeMgsV8ko3nDlr/9UI2Sf839sW7enijf8oKsZYXRvM8g0it9Zmcw==", - "dev": true, "requires": { "binaryextensions": "2.1.1", "editions": "1.3.4", @@ -5737,7 +6538,6 @@ "version": "0.26.3", "resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz", "integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=", - "dev": true, "requires": { "commander": "0.6.1", "mkdirp": "0.3.0" @@ -5746,14 +6546,12 @@ "commander": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz", - "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=", - "dev": true + "integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY=" }, "mkdirp": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=", - "dev": true + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=" } } }, @@ -5765,14 +6563,12 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, "js-yaml": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", - "dev": true, "requires": { "argparse": "1.0.10", "esprima": "4.0.0" @@ -5788,7 +6584,6 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.5.0.tgz", "integrity": "sha512-JAcQINNMFpdzzpKJN8k5xXjF3XDuckB1/48uScSzcnNyK199iWEc9AxKL9OoX5144M2w5zEx9Qs4/E/eBZZUlw==", - "dev": true, "requires": { "babel-plugin-transform-flow-strip-types": "6.22.0", "babel-preset-es2015": "6.24.1", @@ -5810,20 +6605,63 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + }, + "jshint-esnext": { + "version": "2.7.0-3", + "resolved": "https://registry.npmjs.org/jshint-esnext/-/jshint-esnext-2.7.0-3.tgz", + "integrity": "sha1-M0xN6pF1MoQoyY2OkCR0h3rXiXE=", + "requires": { + "cli": "0.6.6", + "console-browserify": "1.1.0", + "exit": "0.1.2", + "htmlparser2": "3.8.3", + "lodash": "3.6.0", + "minimatch": "2.0.10", + "shelljs": "0.3.0", + "strip-json-comments": "1.0.4", + "underscore": "1.6.0" + }, + "dependencies": { + "lodash": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.6.0.tgz", + "integrity": "sha1-Umao9J3Zib5Pn2gbbyoMVShdDZo=" + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", + "requires": { + "brace-expansion": "1.1.11" + } + }, + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=" + }, + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=" + } + } }, "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, "json-parse-better-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", - "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==", - "dev": true + "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==" }, "json-schema": { "version": "0.2.3", @@ -5858,14 +6696,12 @@ "json3": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=" }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" }, "jsonfile": { "version": "2.4.0", @@ -5881,6 +6717,16 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -5916,7 +6762,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "dev": true, "requires": { "json-buffer": "3.0.0" } @@ -5925,7 +6770,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -5951,7 +6795,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true, "optional": true }, "lcid": { @@ -5962,131 +6805,453 @@ "invert-kv": "1.0.0" } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "listr": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", - "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", - "dev": true, + "lerna": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-2.9.1.tgz", + "integrity": "sha512-jwfX9kljxv4Y4oqbCbNNXfKNH9uHB7jp+pcS6chIbGeTs+5mhKYL61gYIfm9yYDEsTgyrojPhrIeZkuzijr2iA==", "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "figures": "1.7.0", - "indent-string": "2.1.0", - "is-observable": "0.2.0", - "is-promise": "2.1.0", - "is-stream": "1.1.0", - "listr-silent-renderer": "1.1.1", - "listr-update-renderer": "0.4.0", - "listr-verbose-renderer": "0.4.1", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "ora": "0.2.3", - "p-map": "1.2.0", - "rxjs": "5.5.7", - "stream-to-observable": "0.2.0", - "strip-ansi": "3.0.1" + "async": "1.5.2", + "chalk": "2.3.2", + "cmd-shim": "2.0.2", + "columnify": "1.5.4", + "command-join": "2.0.0", + "conventional-changelog-cli": "1.3.21", + "conventional-recommended-bump": "1.2.1", + "dedent": "0.7.0", + "execa": "0.8.0", + "find-up": "2.1.0", + "fs-extra": "4.0.3", + "get-port": "3.2.0", + "glob": "7.1.2", + "glob-parent": "3.1.0", + "globby": "6.1.0", + "graceful-fs": "4.1.11", + "hosted-git-info": "2.6.0", + "inquirer": "3.3.0", + "is-ci": "1.1.0", + "load-json-file": "4.0.0", + "lodash": "4.17.5", + "minimatch": "3.0.4", + "npmlog": "4.1.2", + "p-finally": "1.0.0", + "package-json": "4.0.1", + "path-exists": "3.0.0", + "read-cmd-shim": "1.0.1", + "read-pkg": "3.0.0", + "rimraf": "2.6.2", + "safe-buffer": "5.1.1", + "semver": "5.5.0", + "signal-exit": "3.0.2", + "slash": "1.0.0", + "strong-log-transformer": "1.0.6", + "temp-write": "3.4.0", + "write-file-atomic": "2.3.0", + "write-json-file": "2.3.0", + "write-pkg": "3.1.0", + "yargs": "8.0.2" }, "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" + "locate-path": "2.0.0" } }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "requires": { - "chalk": "1.1.3" + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.1" } - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", - "dev": true - }, - "listr-update-renderer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", - "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-truncate": "0.2.1", - "elegant-spinner": "1.0.1", - "figures": "1.7.0", - "indent-string": "3.2.0", - "log-symbols": "1.0.2", - "log-update": "1.0.2", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" } }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "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-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "2.1.1" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "4.1.11" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + }, + "dependencies": { + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + } + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + } + } + }, + "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-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "4.1.0" + } + } + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "listr": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/listr/-/listr-0.13.0.tgz", + "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=", + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "figures": "1.7.0", + "indent-string": "2.1.0", + "is-observable": "0.2.0", + "is-promise": "2.1.0", + "is-stream": "1.1.0", + "listr-silent-renderer": "1.1.1", + "listr-update-renderer": "0.4.0", + "listr-verbose-renderer": "0.4.1", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "ora": "0.2.3", + "p-map": "1.2.0", + "rxjs": "5.5.7", + "stream-to-observable": "0.2.0", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "requires": { + "chalk": "1.1.3" + } + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", + "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" + }, + "listr-update-renderer": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz", + "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=", + "requires": { + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "elegant-spinner": "1.0.1", + "figures": "1.7.0", + "indent-string": "3.2.0", + "log-symbols": "1.0.2", + "log-update": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "requires": { + "escape-string-regexp": "1.0.5", "object-assign": "4.1.1" } }, "indent-string": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, "requires": { "chalk": "1.1.3" } @@ -6097,7 +7262,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=", - "dev": true, "requires": { "chalk": "1.1.3", "cli-cursor": "1.0.2", @@ -6109,7 +7273,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -6122,7 +7285,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, "requires": { "restore-cursor": "1.0.1" } @@ -6131,7 +7293,6 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, "requires": { "escape-string-regexp": "1.0.5", "object-assign": "4.1.1" @@ -6140,14 +7301,12 @@ "onetime": { "version": "1.1.0", "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, "requires": { "exit-hook": "1.1.1", "onetime": "1.1.0" @@ -6171,7 +7330,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, "requires": { "big.js": "3.2.0", "emojis-list": "2.1.0", @@ -6182,7 +7340,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, "requires": { "p-locate": "2.0.0", "path-exists": "3.0.0" @@ -6191,8 +7348,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" } } }, @@ -6205,7 +7361,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, "requires": { "lodash._basecopy": "3.0.1", "lodash.keys": "3.1.2" @@ -6214,26 +7369,27 @@ "lodash._basecopy": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" }, "lodash._basecreate": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=" }, "lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" }, "lodash._isiterateecall": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, "lodash.assign": { "version": "4.2.0", @@ -6244,7 +7400,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, "requires": { "lodash._baseassign": "3.2.0", "lodash._basecreate": "3.0.3", @@ -6254,31 +7409,44 @@ "lodash.isarguments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" }, "lodash.isarray": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" }, "lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, "requires": { "lodash._getnative": "3.9.1", "lodash.isarguments": "3.1.0", "lodash.isarray": "3.0.4" } }, + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.1.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "requires": { + "lodash._reinterpolate": "3.0.0" + } + }, "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, "requires": { "chalk": "2.3.2" } @@ -6287,7 +7455,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", - "dev": true, "requires": { "ansi-escapes": "1.4.0", "cli-cursor": "1.0.2" @@ -6296,14 +7463,12 @@ "ansi-escapes": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" }, "cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, "requires": { "restore-cursor": "1.0.1" } @@ -6311,14 +7476,12 @@ "onetime": { "version": "1.1.0", "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, "requires": { "exit-hook": "1.1.1", "onetime": "1.1.0" @@ -6329,18 +7492,25 @@ "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" }, "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, "requires": { "js-tokens": "3.0.2" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, "lowercase-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", @@ -6350,7 +7520,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz", "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==", - "dev": true, "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" @@ -6377,6 +7546,11 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" + }, "map-stream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", @@ -6421,7 +7595,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, "requires": { "mimic-fn": "1.2.0" } @@ -6430,7 +7603,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/mem-fs/-/mem-fs-1.1.3.tgz", "integrity": "sha1-uK6NLj/Lb10/kWXBLUVRoGXZicw=", - "dev": true, "requires": { "through2": "2.0.3", "vinyl": "1.2.0", @@ -6441,7 +7613,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz", "integrity": "sha1-3Qpuryu4prN3QAZ6pUnrUwEFr58=", - "dev": true, "requires": { "commondir": "1.0.1", "deep-extend": "0.4.2", @@ -6458,20 +7629,17 @@ "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" }, "clone-stats": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", - "dev": true + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" }, "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, "requires": { "array-union": "1.0.2", "glob": "7.1.2", @@ -6483,14 +7651,12 @@ "replace-ext": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true + "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" }, "vinyl": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.1.0.tgz", "integrity": "sha1-Ah+cLPlR1rk5lDyJ617lrdT9kkw=", - "dev": true, "requires": { "clone": "2.1.2", "clone-buffer": "1.0.0", @@ -6506,7 +7672,6 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, "requires": { "errno": "0.1.7", "readable-stream": "2.3.5" @@ -6517,6 +7682,94 @@ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=" }, + "meow": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.0.tgz", + "integrity": "sha512-Me/kel335m6vMKmEmA6c87Z6DUFW3JqkINRnxkbC+A/PUm0D5Fl2dEBQrPKnqCL9Te/CIa1MUt/0InMJhuC/sw==", + "requires": { + "camelcase-keys": "4.2.0", + "decamelize-keys": "1.1.0", + "loud-rejection": "1.6.0", + "minimist": "1.2.0", + "minimist-options": "3.0.2", + "normalize-package-data": "2.4.0", + "read-pkg-up": "3.0.0", + "redent": "2.0.0", + "trim-newlines": "2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "1.3.1", + "json-parse-better-errors": "1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "4.0.0", + "normalize-package-data": "2.4.0", + "path-type": "3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + } + } + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -6531,7 +7784,6 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, "requires": { "arr-diff": "2.0.0", "array-unique": "0.2.1", @@ -6578,8 +7830,7 @@ "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, "mimic-response": { "version": "1.0.0", @@ -6617,6 +7868,15 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "requires": { + "arrify": "1.0.1", + "is-plain-obj": "1.1.0" + } + }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", @@ -6715,6 +7975,16 @@ "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.4.2.tgz", "integrity": "sha512-dF+yxZSojSiI8AXGoxj5qdFWpucndc54Ug+TwlpHFaV7j22MGG+OML2+FVa6xAZtjb/OFFQhOC37Jegx2GbEwA==" }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==" + }, + "moment": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz", + "integrity": "sha512-1muXCh8jb1N/gHRbn9VDUBr0GYb8A/aVcHlII9QSB68a50spqEVLIGN6KVmCOnSvJrUhC0edGgKU5ofnGXdYdg==" + }, "mout": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/mout/-/mout-0.11.1.tgz", @@ -6729,7 +7999,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true, "requires": { "array-differ": "1.0.0", "array-union": "1.0.2", @@ -6740,8 +8009,7 @@ "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "mz": { "version": "2.7.0", @@ -6817,20 +8085,17 @@ "neo-async": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", - "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==", - "dev": true + "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==" }, "nice-try": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", - "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", - "dev": true + "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==" }, "node-dir": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.8.tgz", - "integrity": "sha1-VfuN62mQcHB/tn+RpGDwRIKUx30=", - "dev": true + "integrity": "sha1-VfuN62mQcHB/tn+RpGDwRIKUx30=" }, "nodemon": { "version": "1.17.2", @@ -6874,7 +8139,6 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=", - "dev": true, "requires": { "chalk": "0.4.0", "underscore": "1.6.0" @@ -6883,14 +8147,12 @@ "ansi-styles": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=" }, "chalk": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, "requires": { "ansi-styles": "1.0.0", "has-color": "0.1.7", @@ -6900,14 +8162,12 @@ "strip-ansi": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=" }, "underscore": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=" } } }, @@ -6935,7 +8195,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, "requires": { "remove-trailing-separator": "1.1.0" } @@ -6944,7 +8203,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, "requires": { "prepend-http": "2.0.0", "query-string": "5.1.1", @@ -6954,8 +8212,7 @@ "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" } } }, @@ -6963,7 +8220,6 @@ "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.1" } @@ -6978,6 +8234,17 @@ "through2": "2.0.3" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -7089,7 +8356,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, "requires": { "for-own": "0.1.5", "is-extendable": "0.1.1" @@ -7140,7 +8406,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, "requires": { "mimic-fn": "1.2.0" } @@ -7149,7 +8414,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, "requires": { "minimist": "0.0.8", "wordwrap": "0.0.3" @@ -7158,8 +8422,7 @@ "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" } } }, @@ -7167,7 +8430,6 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, "requires": { "deep-is": "0.1.3", "fast-levenshtein": "2.0.6", @@ -7181,7 +8443,6 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", - "dev": true, "requires": { "chalk": "1.1.3", "cli-cursor": "1.0.2", @@ -7193,7 +8454,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -7206,7 +8466,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, "requires": { "restore-cursor": "1.0.1" } @@ -7214,14 +8473,12 @@ "onetime": { "version": "1.1.0", "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" }, "restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, "requires": { "exit-hook": "1.1.1", "onetime": "1.1.0" @@ -7232,14 +8489,12 @@ "original-require": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/original-require/-/original-require-1.0.1.tgz", - "integrity": "sha1-DxMEcVhM0zURxew4yNWSE/msXiA=", - "dev": true + "integrity": "sha1-DxMEcVhM0zURxew4yNWSE/msXiA=" }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-locale": { "version": "1.4.0", @@ -7252,8 +8507,7 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "p-cancelable": { "version": "0.3.0", @@ -7264,7 +8518,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", - "dev": true, "requires": { "p-reduce": "1.0.0" } @@ -7277,20 +8530,17 @@ "p-is-promise": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", - "dev": true + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" }, "p-lazy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-lazy/-/p-lazy-1.0.0.tgz", - "integrity": "sha1-7FPIAvLuOsKPFmzILQsrAt4nqDU=", - "dev": true + "integrity": "sha1-7FPIAvLuOsKPFmzILQsrAt4nqDU=" }, "p-limit": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", - "dev": true, "requires": { "p-try": "1.0.0" } @@ -7299,7 +8549,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, "requires": { "p-limit": "1.2.0" } @@ -7307,14 +8556,12 @@ "p-map": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" }, "p-reduce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" }, "p-timeout": { "version": "1.2.1", @@ -7327,14 +8574,12 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, "package-json": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, "requires": { "got": "6.7.1", "registry-auth-token": "3.3.2", @@ -7346,7 +8591,6 @@ "version": "6.7.1", "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "dev": true, "requires": { "create-error-class": "3.0.2", "duplexer3": "0.1.4", @@ -7375,11 +8619,15 @@ "pbkdf2": "3.0.14" } }, + "parse-github-repo-url": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", + "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=" + }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, "requires": { "glob-base": "0.3.0", "is-dotfile": "1.0.3", @@ -7407,8 +8655,7 @@ "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" }, "parseurl": { "version": "1.3.2", @@ -7424,8 +8671,7 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, "path-exists": { "version": "2.1.0", @@ -7449,14 +8695,12 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" }, "path-to-regexp": { "version": "0.1.7", @@ -7503,8 +8747,7 @@ "pegjs": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", - "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=", - "dev": true + "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=" }, "pend": { "version": "1.2.0", @@ -7558,8 +8801,7 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "prepend-http": { "version": "1.0.4", @@ -7569,26 +8811,22 @@ "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "prettier": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", - "integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==", - "dev": true + "integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==" }, "pretty-bytes": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz", - "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=", - "dev": true + "integrity": "sha1-sr+C5zUNZcbDOqlaqlpPYyf2HNk=" }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" }, "process": { "version": "0.5.2", @@ -7618,8 +8856,7 @@ "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, "ps-tree": { "version": "1.1.0", @@ -7633,8 +8870,7 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "pstree.remy": { "version": "1.1.0", @@ -7662,6 +8898,11 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", @@ -7677,11 +8918,15 @@ "strict-uri-encode": "1.1.0" } }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, "requires": { "is-number": "3.0.0", "kind-of": "4.0.0" @@ -7691,7 +8936,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, "requires": { "kind-of": "3.2.2" }, @@ -7700,7 +8944,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -7711,7 +8954,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -7760,7 +9002,6 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.6.tgz", "integrity": "sha1-6xiYnG1PTxYsOZ953dKfODVWgJI=", - "dev": true, "requires": { "deep-extend": "0.4.2", "ini": "1.3.5", @@ -7771,8 +9012,7 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, @@ -7780,7 +9020,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", "integrity": "sha1-agTAkoAF7Z1C4aasVgDhnLx/9lU=", - "dev": true, "requires": { "pify": "3.0.0", "safe-buffer": "5.1.1" @@ -7789,11 +9028,18 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" } } }, + "read-cmd-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz", + "integrity": "sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs=", + "requires": { + "graceful-fs": "4.1.11" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -7831,7 +9077,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", @@ -7843,7 +9088,6 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.5.tgz", "integrity": "sha512-GNFQGQrqW1R8w9XhhgYIN8H7ePPp088D+svHlb7DdP5DCqNDqTwH7lt378EouM+L18kCwkmqpAz1unLqpPhHmw==", - "dev": true, "requires": { "ast-types": "0.11.3", "esprima": "4.0.0", @@ -7855,28 +9099,40 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, "requires": { "resolve": "1.6.0" } }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "requires": { + "indent-string": "3.2.0", + "strip-indent": "2.0.0" + }, + "dependencies": { + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + } + } + }, "regenerate": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", - "dev": true + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==" }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, "regenerator-transform": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "dev": true, "requires": { "babel-runtime": "6.26.0", "babel-types": "6.26.0", @@ -7887,7 +9143,6 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, "requires": { "is-equal-shallow": "0.1.3" } @@ -7912,7 +9167,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, "requires": { "regenerate": "1.3.3", "regjsgen": "0.2.0", @@ -7923,7 +9177,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, "requires": { "rc": "1.2.6", "safe-buffer": "5.1.1" @@ -7933,7 +9186,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, "requires": { "rc": "1.2.6" } @@ -7941,14 +9193,12 @@ "regjsgen": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" }, "regjsparser": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, "requires": { "jsesc": "0.5.0" } @@ -7956,26 +9206,22 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "repeat-element": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "repeating": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, "requires": { "is-finite": "1.0.2" } @@ -7983,14 +9229,12 @@ "replace-ext": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=" }, "req-cwd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-1.0.1.tgz", "integrity": "sha1-DXOurpJm5penj3l2AZZ352rPD/8=", - "dev": true, "requires": { "req-from": "1.0.1" } @@ -7999,7 +9243,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/req-from/-/req-from-1.0.1.tgz", "integrity": "sha1-v4HaUUeUfTLRO5R9wSpYrUWHNQ4=", - "dev": true, "requires": { "resolve-from": "2.0.0" }, @@ -8007,8 +9250,7 @@ "resolve-from": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", - "dev": true + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" } } }, @@ -8070,7 +9312,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", - "dev": true, "requires": { "path-parse": "1.0.5" } @@ -8079,7 +9320,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, "requires": { "resolve-from": "3.0.0" }, @@ -8087,8 +9327,7 @@ "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" } } }, @@ -8096,7 +9335,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, "requires": { "expand-tilde": "2.0.2", "global-modules": "1.0.0" @@ -8118,7 +9356,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, "requires": { "lowercase-keys": "1.0.0" } @@ -8127,7 +9364,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, "requires": { "onetime": "2.0.1", "signal-exit": "3.0.2" @@ -8143,7 +9379,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, "optional": true, "requires": { "align-text": "0.1.4" @@ -8175,7 +9410,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, "requires": { "is-promise": "2.1.0" } @@ -8183,14 +9417,12 @@ "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" }, "rx-lite-aggregates": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, "requires": { "rx-lite": "4.0.8" } @@ -8199,7 +9431,6 @@ "version": "5.5.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.7.tgz", "integrity": "sha512-Hxo2ac8gRQjwjtKgukMIwBRbq5+KAeEV5hXM4obYBOAghev41bDQWgFH4svYiU9UnQ5kNww2LgfyBdevCd2HXA==", - "dev": true, "requires": { "symbol-observable": "1.0.1" } @@ -8221,8 +9452,7 @@ "scoped-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-1.0.0.tgz", - "integrity": "sha1-o0a7Gs1CB65wvXwMfKnlZra63bg=", - "dev": true + "integrity": "sha1-o0a7Gs1CB65wvXwMfKnlZra63bg=" }, "scrypt": { "version": "6.0.3", @@ -8337,8 +9567,7 @@ "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" }, "set-value": { "version": "2.0.0", @@ -8394,7 +9623,6 @@ "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" } @@ -8402,14 +9630,12 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shelljs": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.1.tgz", "integrity": "sha512-YA/iYtZpzFe5HyWVGrb02FjPxc4EMCfpoU/Phg9fQoyMC72u9598OUBrsU8IrtwAKG0tO8IYaqbaLIw+k3IRGA==", - "dev": true, "requires": { "glob": "7.1.2", "interpret": "1.1.0", @@ -8419,14 +9645,12 @@ "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "simple-concat": { "version": "1.0.0", @@ -8446,8 +9670,7 @@ "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" }, "slice-ansi": { "version": "1.0.0", @@ -8469,8 +9692,7 @@ "slide": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" }, "snapdragon": { "version": "0.8.2", @@ -8546,94 +9768,260 @@ } } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.2.1" + } + }, + "sol-digger": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/sol-digger/-/sol-digger-0.0.2.tgz", + "integrity": "sha1-QGxKnTHiaef4jrHC6hATGOXgkCU=" + }, + "sol-explore": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/sol-explore/-/sol-explore-1.6.2.tgz", + "integrity": "sha1-Q66MQZ/TrAVqBfip0fsQIs1B7MI=" + }, + "solc": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.21.tgz", + "integrity": "sha512-8lJmimVjOG9AJOQRWS2ph4rSctPMsPGZ4H360HLs5iI+euUlt7iAvUxSLeFZZzwk0kas4Qta7HmlMXNU3yYwhw==", + "requires": { + "fs-extra": "0.30.0", + "memorystream": "0.3.1", + "require-from-string": "1.2.1", + "semver": "5.5.0", + "yargs": "4.8.1" + } + }, + "solcpiler": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/solcpiler/-/solcpiler-0.0.11.tgz", + "integrity": "sha512-D7MQhB6oGEwc3ruWuPrPZzS7nAgOx7VnSr/yKMq1TFXSNfl/0clJkxmViuVJoSPSToflKOXPtkA70eJCVMZHhA==", + "requires": { + "app-root-path": "2.0.1", + "async": "2.6.0", + "glob": "7.1.2", + "lodash": "4.17.5", + "solc": "0.4.21", + "web3": "0.19.1", + "yargs": "8.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.5" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "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": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "ansi-regex": "3.0.0" } }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, + "web3": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.19.1.tgz", + "integrity": "sha1-52PVsRB8S8JKvU+MvuG6Nlnm6zE=", "requires": { - "is-descriptor": "1.0.2" + "bignumber.js": "4.1.0", + "crypto-js": "3.1.8", + "utf8": "2.1.1", + "xhr2": "0.1.4", + "xmlhttprequest": "1.8.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "requires": { + "camelcase": "4.1.0" + } } } }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "requires": { - "hoek": "4.2.1" - } - }, - "sol-explore": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/sol-explore/-/sol-explore-1.6.2.tgz", - "integrity": "sha1-Q66MQZ/TrAVqBfip0fsQIs1B7MI=", - "dev": true - }, - "solc": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.21.tgz", - "integrity": "sha512-8lJmimVjOG9AJOQRWS2ph4rSctPMsPGZ4H360HLs5iI+euUlt7iAvUxSLeFZZzwk0kas4Qta7HmlMXNU3yYwhw==", - "requires": { - "fs-extra": "0.30.0", - "memorystream": "0.3.1", - "require-from-string": "1.2.1", - "semver": "5.5.0", - "yargs": "4.8.1" - } - }, "solhint": { "version": "1.1.10", "resolved": "https://registry.npmjs.org/solhint/-/solhint-1.1.10.tgz", @@ -8738,7 +10126,6 @@ "version": "0.4.14", "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.4.14.tgz", "integrity": "sha512-4IizUjKsBpdIe5cVB/jfjuwO9On91JLxxCyID9poSW9owaQaXRHGlQltWUFbLlAbzb0dBsPscRnv2byDbKYQTA==", - "dev": true, "requires": { "death": "1.1.0", "ethereumjs-testrpc-sc": "6.1.2", @@ -8752,14 +10139,12 @@ }, "dependencies": { "bignumber.js": { - "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "dev": true + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" }, "shelljs": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, "requires": { "glob": "7.1.2", "interpret": "1.1.0", @@ -8770,7 +10155,6 @@ "version": "0.18.4", "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", - "dev": true, "requires": { "bignumber.js": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", "crypto-js": "3.1.8", @@ -8785,7 +10169,6 @@ "version": "0.4.6", "resolved": "https://registry.npmjs.org/solidity-parser-sc/-/solidity-parser-sc-0.4.6.tgz", "integrity": "sha512-+fu+4L4XomonLf/BvG0hv/otIpWr7wFB0X/QHzfQP68ER+FrQ8vou11/OPsOqc7yHWhowi0oe4JcKFZgAEUThw==", - "dev": true, "requires": { "mocha": "2.5.3", "pegjs": "0.10.0", @@ -8795,14 +10178,12 @@ "commander": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", - "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=", - "dev": true + "integrity": "sha1-/UMOiJgy7DU7ms0d4hfBHLPu+HM=" }, "debug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "dev": true, "requires": { "ms": "0.7.1" } @@ -8810,20 +10191,17 @@ "diff": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", - "dev": true + "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=" }, "escape-string-regexp": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", - "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=", - "dev": true + "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=" }, "glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true, "requires": { "inherits": "2.0.3", "minimatch": "0.3.0" @@ -8832,54 +10210,246 @@ "growl": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=" }, "lru-cache": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" }, "minimatch": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" + "lru-cache": "2.7.3", + "sigmund": "1.0.1" + } + }, + "mocha": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", + "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", + "requires": { + "commander": "2.3.0", + "debug": "2.2.0", + "diff": "1.4.0", + "escape-string-regexp": "1.0.2", + "glob": "3.2.11", + "growl": "1.9.2", + "jade": "0.26.3", + "mkdirp": "0.5.1", + "supports-color": "1.2.0", + "to-iso-string": "0.0.2" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "supports-color": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", + "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=" + } + } + }, + "solium": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/solium/-/solium-0.5.5.tgz", + "integrity": "sha1-QgrlwHCdAMGUMBWEGLuCZL2sZqo=", + "requires": { + "chokidar": "1.7.0", + "colors": "1.2.1", + "commander": "2.15.1", + "lodash": "4.17.5", + "sol-digger": "0.0.2", + "sol-explore": "1.6.2", + "solparse": "1.4.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "fsevents": "1.1.3", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "cliui": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", + "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "wrap-ansi": "2.1.0" + } + }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "diff": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==" + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "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=" + }, + "mocha": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz", + "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==", + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.11.0", + "debug": "3.1.0", + "diff": "3.3.1", + "escape-string-regexp": "1.0.5", + "glob": "7.1.2", + "growl": "1.10.3", + "he": "1.1.1", + "mkdirp": "0.5.1", + "supports-color": "4.4.0" + }, + "dependencies": { + "commander": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" + } + } + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "solparse": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/solparse/-/solparse-1.4.2.tgz", + "integrity": "sha512-TX7KhhJYpPDIjkS3kOfXn7u1yUD0AFk2mbrImsnPH2xPxLQ6fqppdIDjuJcU4Io1TuKbUg+Ar5n7tRB+5iJZww==", + "requires": { + "mocha": "4.1.0", + "pegjs": "0.10.0", + "yargs": "10.1.2" + } + }, + "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" } }, - "mocha": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-2.5.3.tgz", - "integrity": "sha1-FhvlvetJZ3HrmzV0UFC2IrWu/Fg=", - "dev": true, + "supports-color": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", + "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "requires": { - "commander": "2.3.0", - "debug": "2.2.0", - "diff": "1.4.0", - "escape-string-regexp": "1.0.2", - "glob": "3.2.11", - "growl": "1.9.2", - "jade": "0.26.3", - "mkdirp": "0.5.1", - "supports-color": "1.2.0", - "to-iso-string": "0.0.2" + "has-flag": "2.0.0" } }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", - "dev": true + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, - "supports-color": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", - "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=", - "dev": true + "yargs": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", + "requires": { + "cliui": "4.0.0", + "decamelize": "1.2.0", + "find-up": "2.1.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "8.1.0" + } + }, + "yargs-parser": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", + "requires": { + "camelcase": "4.1.0" + } } } }, @@ -8887,7 +10457,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, "requires": { "is-plain-obj": "1.1.0" } @@ -8895,8 +10464,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-resolve": { "version": "0.5.1", @@ -8915,7 +10483,6 @@ "version": "0.5.4", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", - "dev": true, "requires": { "source-map": "0.6.1" } @@ -8972,11 +10539,18 @@ "extend-shallow": "3.0.2" } }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "requires": { + "through2": "2.0.3" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { "version": "1.14.1", @@ -9089,7 +10663,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", - "dev": true, "requires": { "any-observable": "0.2.0" } @@ -9102,8 +10675,7 @@ "string-template": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", - "dev": true + "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=" }, "string-width": { "version": "1.0.2", @@ -9148,7 +10720,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz", "integrity": "sha1-+H217yYT9paKpUWr/h7HKLaoKco=", - "dev": true, "requires": { "first-chunk-stream": "2.0.0", "strip-bom": "2.0.0" @@ -9165,8 +10736,7 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-hex-prefix": { "version": "1.0.0", @@ -9176,17 +10746,39 @@ "is-hex-prefixed": "1.0.0" } }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "strong-log-transformer": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-1.0.6.tgz", + "integrity": "sha1-9/uTdYpppXEUAYEnfuoMLrEwH6M=", + "requires": { + "byline": "5.0.0", + "duplexer": "0.1.1", + "minimist": "0.1.0", + "moment": "2.22.0", + "through": "2.3.8" + }, + "dependencies": { + "minimist": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz", + "integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=" + } + } }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" }, "swarm-js": { "version": "0.1.37", @@ -9222,8 +10814,7 @@ "symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", - "dev": true + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" }, "table": { "version": "4.0.2", @@ -9275,8 +10866,7 @@ "tapable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==", - "dev": true + "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==" }, "tar": { "version": "2.2.1", @@ -9322,7 +10912,6 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", - "dev": true, "requires": { "os-tmpdir": "1.0.2", "rimraf": "2.2.8" @@ -9331,8 +10920,48 @@ "rimraf": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", - "dev": true + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" + }, + "temp-write": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-3.4.0.tgz", + "integrity": "sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI=", + "requires": { + "graceful-fs": "4.1.11", + "is-stream": "1.1.0", + "make-dir": "1.2.0", + "pify": "3.0.0", + "temp-dir": "1.0.0", + "uuid": "3.2.1" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } + } + }, + "tempfile": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", + "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", + "requires": { + "os-tmpdir": "1.0.2", + "uuid": "2.0.3" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" } } }, @@ -9345,17 +10974,20 @@ "execa": "0.7.0" } }, + "text-extensions": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.7.0.tgz", + "integrity": "sha512-AKXZeDq230UaSzaO5s3qQUZOaC7iKbzq0jOFL614R7d9R593HLqAOL0cYoqLdkNrjBSOdmoQI06yigq1TSBXAg==" + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" }, "textextensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-2.2.0.tgz", - "integrity": "sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA==", - "dev": true + "integrity": "sha512-j5EMxnryTvKxwH2Cq+Pb43tsf6sdEgw6Pdwxk83mPaq0ToeFJt6WE4J3s5BqY7vmjlLgkgXvhtXUxo80FyBhCA==" }, "thenify": { "version": "3.3.0", @@ -9382,7 +11014,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, "requires": { "readable-stream": "2.3.5", "xtend": "4.0.1" @@ -9397,7 +11028,6 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "requires": { "os-tmpdir": "1.0.2" } @@ -9405,14 +11035,12 @@ "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" }, "to-iso-string": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz", - "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=", - "dev": true + "integrity": "sha1-TcGeZk38y+Jb2NtQiwDG2hWCVdE=" }, "to-object-path": { "version": "0.3.0", @@ -9478,17 +11106,25 @@ "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=" + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, "truffle": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/truffle/-/truffle-4.1.3.tgz", "integrity": "sha512-BE9SMYRp/KH/xlQTOGmbV5wjju/456Fg/pS5Qez7UTHaJDQHF1OF8l4sWyMhs0TNTgRXwXLwkIBSeZA7QxHjkQ==", - "dev": true, "requires": { "mocha": "3.5.3", "original-require": "1.0.1", @@ -9499,7 +11135,6 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, "requires": { "graceful-readlink": "1.0.1" } @@ -9508,7 +11143,6 @@ "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, "requires": { "ms": "2.0.0" } @@ -9516,14 +11150,12 @@ "diff": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=" }, "glob": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -9536,20 +11168,17 @@ "growl": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=" }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" }, "mocha": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", - "dev": true, "requires": { "browser-stdout": "1.3.0", "commander": "2.9.0", @@ -9569,7 +11198,6 @@ "version": "0.4.19", "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.19.tgz", "integrity": "sha512-hvi/vi9rQcB73poRLoLRfQIYKwmdhrNbZlOOFCGd5v58gEsYEUr3+oHPSXhyk4CFNchWC2ojpMYrHDJNm0h4jQ==", - "dev": true, "requires": { "fs-extra": "0.30.0", "memorystream": "0.3.1", @@ -9582,7 +11210,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true, "requires": { "has-flag": "1.0.0" } @@ -9607,7 +11234,6 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, "requires": { "prelude-ls": "1.1.2" } @@ -9630,8 +11256,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typedarray-to-buffer": { "version": "3.1.5", @@ -9645,7 +11270,6 @@ "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, "optional": true, "requires": { "source-map": "0.5.7", @@ -9657,14 +11281,12 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true, "optional": true }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, "optional": true, "requires": { "center-align": "0.1.3", @@ -9676,28 +11298,24 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, "optional": true }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true, "optional": true }, "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true, "optional": true }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, "optional": true, "requires": { "camelcase": "1.2.1", @@ -9712,7 +11330,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, "optional": true }, "ultron": { @@ -9804,6 +11421,11 @@ "crypto-random-string": "1.0.0" } }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -9858,14 +11480,12 @@ "untildify": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.2.tgz", - "integrity": "sha1-fx8wIFWz/qDz6B3HjrNnZstl4/E=", - "dev": true + "integrity": "sha1-fx8wIFWz/qDz6B3HjrNnZstl4/E=" }, "unzip-response": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" }, "upath": { "version": "1.0.4", @@ -9914,6 +11534,11 @@ "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" }, + "urlgrey": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", + "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=" + }, "use": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", @@ -9954,8 +11579,7 @@ "v8-compile-cache": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz", - "integrity": "sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA==", - "dev": true + "integrity": "sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA==" }, "validate-npm-package-license": { "version": "3.0.3", @@ -9966,6 +11590,15 @@ "spdx-expression-parse": "3.0.0" } }, + "validated-token": { + "version": "github:Finhaven/ValidatedToken#935ea11a58ee1ef6a235eaac57ce985e64852189", + "requires": { + "eip777": "0.0.3", + "eip820": "0.0.17", + "giveth-common-contracts": "0.5.0", + "truffle": "4.1.3" + } + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -9985,7 +11618,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "dev": true, "requires": { "clone": "1.0.4", "clone-stats": "0.0.1", @@ -9996,7 +11628,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/vinyl-file/-/vinyl-file-2.0.0.tgz", "integrity": "sha1-p+v1/779obfRjRQPyweyI++2dRo=", - "dev": true, "requires": { "graceful-fs": "4.1.11", "pify": "2.3.0", @@ -10006,6 +11637,14 @@ "vinyl": "1.2.0" } }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "1.0.3" + } + }, "web3": { "version": "1.0.0-beta.33", "resolved": "https://registry.npmjs.org/web3/-/web3-1.0.0-beta.33.tgz", @@ -10247,16 +11886,6 @@ "websocket": "git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c" } }, - "web3-server-tools": { - "version": "git+https://github.com/Finhaven/web3-server-tools.git#4048c55f6924edb08240802a01b98f9d47b7b1b1", - "requires": { - "bignumber.js": "5.0.0", - "ethereumjs-tx": "1.3.4", - "lodash": "4.17.5", - "solc": "0.4.21", - "web3": "1.0.0-beta.33" - } - }, "web3-shh": { "version": "1.0.0-beta.33", "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.0.0-beta.33.tgz", @@ -10293,7 +11922,6 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-1.1.5.tgz", "integrity": "sha512-MGO0nVniCLFAQz1qv22zM02QPjcpAoJdy7ED0i3Zy7SY1IecgXCm460ib7H/Wq7e9oL5VL6S2BxaObxwIcag0g==", - "dev": true, "requires": { "jscodeshift": "0.4.1" }, @@ -10301,20 +11929,17 @@ "ast-types": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz", - "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==", - "dev": true + "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ==" }, "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "jscodeshift": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.4.1.tgz", "integrity": "sha512-iOX6If+hsw0q99V3n31t4f5VlD1TQZddH08xbT65ZqA7T4Vkx68emrDZMUOLVvCEAJ6NpAk7DECe3fjC/t52AQ==", - "dev": true, "requires": { "async": "1.5.2", "babel-plugin-transform-flow-strip-types": "6.22.0", @@ -10337,7 +11962,6 @@ "version": "0.12.9", "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz", "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==", - "dev": true, "requires": { "ast-types": "0.10.1", "core-js": "2.5.3", @@ -10352,7 +11976,6 @@ "version": "2.0.12", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.0.12.tgz", "integrity": "sha512-kMi6NquWwUhmQok2IFrtAEIbaVvujzYvtDGb5WElkwylbLboDsCgizv8IjSi/Q6SQRJ8Crayl1JCBnIJ3rU4Rg==", - "dev": true, "requires": { "chalk": "2.3.2", "cross-spawn": "6.0.5", @@ -10384,20 +12007,17 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, "cliui": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", - "dev": true, "requires": { "string-width": "2.1.1", "strip-ansi": "4.0.0", @@ -10408,7 +12028,6 @@ "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", @@ -10421,7 +12040,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, "requires": { "locate-path": "2.0.0" } @@ -10430,7 +12048,6 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/got/-/got-8.3.0.tgz", "integrity": "sha512-kBNy/S2CGwrYgDSec5KTWGKUvupwkkTVAjIsVFF2shXO13xpZdFP4d4kxa//CLX2tN/rV0aYwK8vY6UKWGn2vQ==", - "dev": true, "requires": { "@sindresorhus/is": "0.7.0", "cacheable-request": "2.1.4", @@ -10455,7 +12072,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.1.0.tgz", "integrity": "sha512-kn7N70US1MSZHZHSGJLiZ7iCwwncc7b0gc68YtlX29OjI3Mp0tSVV+snVXpZ1G+ONS3Ac9zd1m6hve2ibLDYfA==", - "dev": true, "requires": { "ansi-escapes": "3.0.0", "chalk": "2.3.2", @@ -10475,14 +12091,12 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dev": true, "requires": { "execa": "0.7.0", "lcid": "1.0.0", @@ -10492,14 +12106,12 @@ "p-cancelable": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.0.tgz", - "integrity": "sha512-/AodqPe1y/GYbhSlnMjxukLGQfQIgsmjSy2CXCNB96kg4ozKvmlovuHEKICToOO/yS3LLWgrWI1dFtFfrePS1g==", - "dev": true + "integrity": "sha512-/AodqPe1y/GYbhSlnMjxukLGQfQIgsmjSy2CXCNB96kg4ozKvmlovuHEKICToOO/yS3LLWgrWI1dFtFfrePS1g==" }, "p-timeout": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "dev": true, "requires": { "p-finally": "1.0.0" } @@ -10507,20 +12119,17 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, "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" @@ -10530,7 +12139,6 @@ "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" } @@ -10539,7 +12147,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "dev": true, "requires": { "has-flag": "3.0.0" } @@ -10548,7 +12155,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, "requires": { "prepend-http": "2.0.0" } @@ -10556,14 +12162,12 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "yargs": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", - "dev": true, "requires": { "cliui": "4.0.0", "decamelize": "1.2.0", @@ -10583,7 +12187,6 @@ "version": "9.0.2", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, "requires": { "camelcase": "4.1.0" } @@ -10603,7 +12206,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, "requires": { "isexe": "2.0.0" } @@ -10613,6 +12215,14 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "requires": { + "string-width": "1.0.2" + } + }, "widest-line": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", @@ -10663,8 +12273,7 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, "wrap-ansi": { "version": "2.1.0", @@ -10693,13 +12302,56 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true, "requires": { "graceful-fs": "4.1.11", "imurmurhash": "0.1.4", "slide": "1.1.6" } }, + "write-json-file": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", + "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", + "requires": { + "detect-indent": "5.0.0", + "graceful-fs": "4.1.11", + "make-dir": "1.2.0", + "pify": "3.0.0", + "sort-keys": "2.0.0", + "write-file-atomic": "2.3.0" + }, + "dependencies": { + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + } + } + }, + "write-pkg": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.1.0.tgz", + "integrity": "sha1-AwqZlMyZk9JbTnWp8aGSNgcpHOk=", + "requires": { + "sort-keys": "2.0.0", + "write-json-file": "2.3.0" + } + }, "ws": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", @@ -10757,8 +12409,7 @@ "xmlhttprequest": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", - "dev": true + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" }, "xtend": { "version": "4.0.1", @@ -10778,8 +12429,7 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { "version": "4.8.1", @@ -10824,7 +12474,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.5.tgz", "integrity": "sha512-6/W7/B54OPHJXob0n0+pmkwFsirC8cokuQkPSmT/D0lCcSxkKtg/BA6ZnjUBIwjuGqmw3DTrT4en++htaUju5g==", - "dev": true, "requires": { "chalk": "2.3.2", "debug": "3.1.0", @@ -10845,7 +12494,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -10854,7 +12502,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, "requires": { "array-union": "1.0.2", "glob": "7.1.2", @@ -10869,7 +12516,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.3.tgz", "integrity": "sha512-mODmrZ26a94djmGZZuIiomSGlN4wULdou29ZwcySupb2e9FdvoCl7Ps2FqHFjEHio3kOl/iBeaNqrnx3C3NwWg==", - "dev": true, "requires": { "async": "2.6.0", "chalk": "2.3.2", @@ -10902,7 +12548,6 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "dev": true, "requires": { "lodash": "4.17.5" } @@ -10911,7 +12556,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -10920,7 +12564,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, "requires": { "locate-path": "2.0.0" } @@ -10929,7 +12572,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, "requires": { "graceful-fs": "4.1.11", "parse-json": "4.0.0", @@ -10940,14 +12582,12 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, "requires": { "error-ex": "1.3.1", "json-parse-better-errors": "1.0.1" @@ -10957,7 +12597,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, "requires": { "pify": "3.0.0" } @@ -10965,14 +12604,12 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, "requires": { "load-json-file": "4.0.0", "normalize-package-data": "2.4.0", @@ -10983,7 +12620,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, "requires": { "find-up": "2.1.0", "read-pkg": "3.0.0" @@ -10992,8 +12628,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" } } }, diff --git a/package.json b/package.json index 857b659..6f727b2 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "dependencies": { "ethereumjs-tx": "^1.3.4", "solc": "^0.4.21", + "validated-token": "github:Finhaven/ValidatedToken#oss", "web3": "^1.0.0-beta.33", "web3-server-tools": "git+https://github.com/Finhaven/web3-server-tools.git" } From 7439e56d8bcc728c4a856ffce77999a864f09815 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Mon, 2 Apr 2018 20:26:29 -0700 Subject: [PATCH 02/43] =?UTF-8?q?This=20is=20starting=20to=20make=20more?= =?UTF-8?q?=20sense=20=F0=9F=98=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contracts/Deal.sol | 46 +-- contracts/DealFactory.sol | 2 - package-lock.json | 677 +++++++++++++++++++++++++++++++++++++- 3 files changed, 684 insertions(+), 41 deletions(-) diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 619e380..26b942f 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -1,38 +1,20 @@ pragma solidity ^0.4.15; - -import '../node_modules/zeppelin-solidity/contracts/crowdsale/Crowdsale.sol'; -import './TxOwnable.sol'; -import './DealToken.sol'; - - -contract Deal is Crowdsale, TxOwnable { - - DealToken dealToken; - mapping (address => bool) authorized; - event Authorizing(address sender, address investor); - - function Deal(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet) - Crowdsale(_startTime, _endTime, _rate, _wallet) TxOwnable { +import '../node_modules/validated-token/contracts/ReferenceToken.sol'; +import '../node_modules/zepplin-solidity/contracts/token/ERC20/TokenTimelock.sol'; + +contract Deal is ReferenceToken, TokenTimelock { + function Deal( + string _name, + string _symbol, + uint256 _granularity, + TokenValidator _validator + ) public { + ReferenceToken(_name, _symbol, _granularity, _validator); } - // creates the token to be sold. - // override this method to have crowdsale of a specific MintableToken token. - function createTokenContract() internal returns (MintableToken) { -// address dealAddress = address(this); -// DealToken(dealAddress, address(token)); - dealToken = new DealToken(); - return dealToken; - } - - function authorize(address investor) onlyOwner public { - Authorizing(msg.sender,investor); - dealToken.authorizeAddress(investor,true); - authorized[investor] = true; - } - - - function buyTokens(address beneficiary) public payable { - return super.buyTokens(beneficiary); + function mint(address _tokenHolder, uint256 _amount) public onlyOwner { + escrow = TokenTimelock(this, _tokenHolder, now + 16 weeks); + super.mint(escrow, _amount); } } diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol index 33e6e91..bb3fee2 100644 --- a/contracts/DealFactory.sol +++ b/contracts/DealFactory.sol @@ -1,9 +1,7 @@ pragma solidity ^0.4.15; - import './Deal.sol'; - contract DealFactory { event DealCreated(address sender, address instance); diff --git a/package-lock.json b/package-lock.json index 7aca7e5..8958879 100644 --- a/package-lock.json +++ b/package-lock.json @@ -159,6 +159,14 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, + "abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "requires": { + "xtend": "4.0.1" + } + }, "accepts": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", @@ -196,6 +204,11 @@ "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", "integrity": "sha1-anmQQ3ynNtXhKI25K9MmbV9csqo=" }, + "aes-js": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-0.2.4.tgz", + "integrity": "sha1-lLiBq3FyhtAV+iGeCPtmcJ3aWj0=" + }, "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", @@ -710,6 +723,24 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, + "async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "requires": { + "async": "2.6.0" + }, + "dependencies": { + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.5" + } + } + } + }, "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", @@ -1576,6 +1607,11 @@ } } }, + "base-x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-1.1.0.tgz", + "integrity": "sha1-QtPXF0dPnqAiB/bRqh9CaRPut6w=" + }, "base64-js": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", @@ -1615,6 +1651,18 @@ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==" }, + "bip39": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.5.0.tgz", + "integrity": "sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA==", + "requires": { + "create-hash": "1.1.3", + "pbkdf2": "3.0.14", + "randombytes": "2.0.6", + "safe-buffer": "5.1.1", + "unorm": "1.4.1" + } + }, "bip66": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", @@ -1822,6 +1870,23 @@ "parse-asn1": "5.1.0" } }, + "bs58": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-3.1.0.tgz", + "integrity": "sha1-1MJjiL9IBMrHFBQbGUWqR+XrJI4=", + "requires": { + "base-x": "1.1.0" + } + }, + "bs58check": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-1.3.4.tgz", + "integrity": "sha1-xSVABzdJEXcU+gQsMEfrj5FRy/g=", + "requires": { + "bs58": "3.1.0", + "create-hash": "1.1.3" + } + }, "buffer": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.1.0.tgz", @@ -2022,6 +2087,14 @@ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" }, + "checkpoint-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", + "integrity": "sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY=", + "requires": { + "functional-red-black-tree": "1.0.1" + } + }, "chokidar": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", @@ -2582,6 +2655,22 @@ } } }, + "coinstring": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/coinstring/-/coinstring-2.3.0.tgz", + "integrity": "sha1-zbYzY6lhUCQEolr7gsLibV/2J6Q=", + "requires": { + "bs58": "2.0.1", + "create-hash": "1.1.3" + }, + "dependencies": { + "bs58": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-2.0.1.tgz", + "integrity": "sha1-VZCNWPGYKrogCPob7Y+RmYopv40=" + } + } + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -3316,6 +3405,11 @@ "type-detect": "4.0.8" } }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, "deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", @@ -3334,6 +3428,30 @@ "clone": "1.0.4" } }, + "deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "requires": { + "abstract-leveldown": "2.6.3" + } + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + }, + "dependencies": { + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" + } + } + }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -3352,6 +3470,11 @@ } } }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, "del": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", @@ -3609,6 +3732,14 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.19" + } + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -3657,6 +3788,28 @@ "is-arrayish": "0.2.1" } }, + "es-abstract": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", + "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3982,6 +4135,56 @@ "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" }, + "ethereumjs-account": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.4.tgz", + "integrity": "sha1-+MMCMby3B/RRTYoFLB+doQNiTUc=", + "requires": { + "ethereumjs-util": "4.5.0", + "rlp": "2.0.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz", + "integrity": "sha1-PpQosxfuvaPXJg2FT93alUsfG8Y=", + "requires": { + "bn.js": "4.11.8", + "create-hash": "1.1.3", + "keccakjs": "0.2.1", + "rlp": "2.0.0", + "secp256k1": "3.5.0" + } + } + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "requires": { + "async": "2.6.0", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "1.3.4", + "ethereumjs-util": "5.1.5", + "merkle-patricia-tree": "2.3.1" + }, + "dependencies": { + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.5" + } + }, + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" + } + } + }, "ethereumjs-testrpc-sc": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/ethereumjs-testrpc-sc/-/ethereumjs-testrpc-sc-6.1.2.tgz", @@ -4014,6 +4217,72 @@ "secp256k1": "3.5.0" } }, + "ethereumjs-vm": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.3.3.tgz", + "integrity": "sha512-yIWJqTEcrF9vJTCvNMxacRkAx6zIZTOW0SmSA+hSFiU1x8JyVZDi9o5udwsRVECT5RkPgQzm62kpL6Pf4qemsw==", + "requires": { + "async": "2.6.0", + "async-eventemitter": "0.2.4", + "ethereum-common": "0.2.0", + "ethereumjs-account": "2.0.4", + "ethereumjs-block": "1.7.1", + "ethereumjs-util": "5.1.5", + "fake-merkle-patricia-tree": "1.0.1", + "functional-red-black-tree": "1.0.1", + "merkle-patricia-tree": "2.3.1", + "rustbn.js": "0.1.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.5" + } + }, + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" + } + } + }, + "ethereumjs-wallet": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.0.tgz", + "integrity": "sha1-gnY7Fpfuenlr5xVdqd+0my+Yz9s=", + "requires": { + "aes-js": "0.2.4", + "bs58check": "1.3.4", + "ethereumjs-util": "4.5.0", + "hdkey": "0.7.1", + "scrypt.js": "0.2.0", + "utf8": "2.1.1", + "uuid": "2.0.3" + }, + "dependencies": { + "ethereumjs-util": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.0.tgz", + "integrity": "sha1-PpQosxfuvaPXJg2FT93alUsfG8Y=", + "requires": { + "bn.js": "4.11.8", + "create-hash": "1.1.3", + "keccakjs": "0.2.1", + "rlp": "2.0.0", + "secp256k1": "3.5.0" + } + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + } + } + }, "ethjs-unit": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", @@ -4209,6 +4478,14 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, + "fake-merkle-patricia-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", + "integrity": "sha1-S4w6z7Ugr635hgsfFM2M40As3dM=", + "requires": { + "checkpoint-store": "1.1.0" + } + }, "fast-deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", @@ -4341,6 +4618,11 @@ "for-in": "1.0.2" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -5232,14 +5514,12 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, "ganache-cli": { "version": "6.1.0", @@ -5680,7 +5960,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, "requires": { "function-bind": "1.1.1" } @@ -5809,6 +6088,15 @@ "sntp": "2.1.0" } }, + "hdkey": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-0.7.1.tgz", + "integrity": "sha1-yu5L6BqneSHpCbjSKN0PKayu5jI=", + "requires": { + "coinstring": "2.3.0", + "secp256k1": "3.5.0" + } + }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", @@ -5946,6 +6234,11 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, + "immediate": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", + "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=" + }, "import-lazy": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", @@ -6109,6 +6402,11 @@ "builtin-modules": "1.1.1" } }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" + }, "is-ci": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz", @@ -6134,6 +6432,11 @@ } } }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", @@ -6369,6 +6672,14 @@ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "1.0.1" + } + }, "is-resolvable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", @@ -6398,6 +6709,11 @@ "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=" }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" + }, "is-text-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", @@ -6439,6 +6755,15 @@ "isarray": "1.0.0" } }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.4" + } + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -7138,6 +7463,114 @@ } } }, + "level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==" + }, + "level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "requires": { + "errno": "0.1.7" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0=", + "requires": { + "inherits": "2.0.3", + "level-errors": "1.0.5", + "readable-stream": "1.1.14", + "xtend": "4.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos=", + "requires": { + "readable-stream": "1.0.34", + "xtend": "2.1.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "requires": { + "object-keys": "0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "requires": { + "deferred-leveldown": "1.2.2", + "level-codec": "7.0.1", + "level-errors": "1.0.5", + "level-iterator-stream": "1.3.1", + "prr": "1.0.1", + "semver": "5.4.1", + "xtend": "4.0.1" + }, + "dependencies": { + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" + } + } + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -7525,6 +7958,11 @@ "yallist": "2.1.2" } }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=" + }, "make-dir": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", @@ -7668,6 +8106,29 @@ } } }, + "memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha1-tOThkhdGZP+65BNhqlAPMRnv4hU=", + "requires": { + "abstract-leveldown": "2.7.2", + "functional-red-black-tree": "1.0.1", + "immediate": "3.2.3", + "inherits": "2.0.3", + "ltgt": "2.2.1", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "requires": { + "xtend": "4.0.1" + } + } + } + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -7775,6 +8236,21 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, + "merkle-patricia-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.1.tgz", + "integrity": "sha512-Qp9Mpb3xazznXzzGQBqHbqCpT2AR9joUOHYYPiQjYCarrdCPCnLWXo4BFv77y4xN26KR224xoU1n/qYY7RYYgw==", + "requires": { + "async": "1.5.2", + "ethereumjs-util": "5.1.5", + "level-ws": "0.0.0", + "levelup": "1.3.9", + "memdown": "1.4.1", + "readable-stream": "2.3.5", + "rlp": "2.0.0", + "semaphore": "1.1.0" + } + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -8097,6 +8573,15 @@ "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.8.tgz", "integrity": "sha1-VfuN62mQcHB/tn+RpGDwRIKUx30=" }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, "nodemon": { "version": "1.17.2", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.17.2.tgz", @@ -8335,6 +8820,16 @@ } } }, + "object-inspect": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.5.0.tgz", + "integrity": "sha512-UmOFbHbwvv+XHj7BerrhVq+knjceBdkvU5AriwLMvhv2qi+e7DJzxfBeFpILEjVzCp+xA+W/pIf06RGPWlZNfw==" + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -9369,6 +9864,14 @@ "signal-exit": "3.0.2" } }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", + "requires": { + "through": "2.3.8" + } + }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -9414,6 +9917,11 @@ "is-promise": "2.1.0" } }, + "rustbn.js": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.1.2.tgz", + "integrity": "sha512-bAkNqSHYdJdFsBC7Z11JgzYktL31HIpB2o70jZcGiL1U1TVtPyvaVhDrGWwS8uZtaqwW2k6NOPGZCqW/Dgh5Lg==" + }, "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", @@ -9502,6 +10010,11 @@ "commander": "2.8.1" } }, + "semaphore": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==" + }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", @@ -10687,6 +11200,16 @@ "strip-ansi": "3.0.1" } }, + "string.prototype.trim": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", + "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.11.0", + "function-bind": "1.1.1" + } + }, "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", @@ -10868,6 +11391,41 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==" }, + "tape": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.9.0.tgz", + "integrity": "sha512-j0jO9BiScfqtPBb9QmPLL0qvxXMz98xjkMb7x8lKipFlJZwNJkqkWPou+NU4V6T9RnVh1kuSthLE8gLrN8bBfw==", + "requires": { + "deep-equal": "1.0.1", + "defined": "1.0.0", + "for-each": "0.3.2", + "function-bind": "1.1.1", + "glob": "7.1.2", + "has": "1.0.1", + "inherits": "2.0.3", + "minimist": "1.2.0", + "object-inspect": "1.5.0", + "resolve": "1.5.0", + "resumer": "0.0.0", + "string.prototype.trim": "1.1.2", + "through": "2.3.8" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "requires": { + "path-parse": "1.0.5" + } + } + } + }, "tar": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", @@ -11216,6 +11774,34 @@ } } }, + "truffle-hdwallet-provider": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/truffle-hdwallet-provider/-/truffle-hdwallet-provider-0.0.3.tgz", + "integrity": "sha1-Dh3gIQS3PTh14c9wkzBbTqii2EM=", + "requires": { + "bip39": "2.5.0", + "ethereumjs-wallet": "0.6.0", + "web3": "0.18.4", + "web3-provider-engine": "8.6.1" + }, + "dependencies": { + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" + }, + "web3": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", + "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", + "requires": { + "bignumber.js": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "crypto-js": "3.1.8", + "utf8": "2.1.1", + "xhr2": "0.1.4", + "xmlhttprequest": "1.8.0" + } + } + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -11426,6 +12012,11 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" }, + "unorm": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.4.1.tgz", + "integrity": "sha1-NkIA1fE2RsqLzURJAnEzVhR5IwA=" + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -11591,12 +12182,12 @@ } }, "validated-token": { - "version": "github:Finhaven/ValidatedToken#935ea11a58ee1ef6a235eaac57ce985e64852189", + "version": "github:Finhaven/ValidatedToken#229223abb3fe8c6edf4af4a6999e8f0063864d37", "requires": { "eip777": "0.0.3", "eip820": "0.0.17", "giveth-common-contracts": "0.5.0", - "truffle": "4.1.3" + "truffle-hdwallet-provider": "0.0.3" } }, "vary": { @@ -11857,6 +12448,56 @@ "web3-utils": "1.0.0-beta.33" } }, + "web3-provider-engine": { + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-8.6.1.tgz", + "integrity": "sha1-TYbhnjDKr5ffNRUR7A9gE25bMOs=", + "requires": { + "async": "2.6.0", + "clone": "2.1.2", + "ethereumjs-block": "1.7.1", + "ethereumjs-tx": "1.3.4", + "ethereumjs-util": "5.1.5", + "ethereumjs-vm": "2.3.3", + "isomorphic-fetch": "2.2.1", + "request": "2.85.0", + "semaphore": "1.1.0", + "solc": "0.4.21", + "tape": "4.9.0", + "web3": "0.16.0", + "xhr": "2.4.1", + "xtend": "4.0.1" + }, + "dependencies": { + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "requires": { + "lodash": "4.17.5" + } + }, + "bignumber.js": { + "version": "git+https://github.com/debris/bignumber.js.git#c7a38de919ed75e6fb6ba38051986e294b328df9" + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "web3": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.16.0.tgz", + "integrity": "sha1-pFVBdc1GKUMDWx8dOUMvdBxrYBk=", + "requires": { + "bignumber.js": "git+https://github.com/debris/bignumber.js.git#c7a38de919ed75e6fb6ba38051986e294b328df9", + "crypto-js": "3.1.8", + "utf8": "2.1.1", + "xmlhttprequest": "1.8.0" + } + } + } + }, "web3-providers-http": { "version": "1.0.0-beta.33", "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.0.0-beta.33.tgz", @@ -11886,6 +12527,23 @@ "websocket": "git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c" } }, + "web3-server-tools": { + "version": "git+https://github.com/Finhaven/web3-server-tools.git#bd8fcd06a2612655182d26d4de27eb32524b755f", + "requires": { + "bignumber.js": "6.0.0", + "ethereumjs-tx": "1.3.4", + "request": "2.85.0", + "solc": "0.4.21", + "web3": "1.0.0-beta.33" + }, + "dependencies": { + "bignumber.js": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-6.0.0.tgz", + "integrity": "sha512-x247jIuy60/+FtMRvscqfxtVHQf8AGx2hm9c6btkgC0x/hp9yt+teISNhvF8WlwRkCc5yF2fDECH8SIMe8j+GA==" + } + } + }, "web3-shh": { "version": "1.0.0-beta.33", "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.0.0-beta.33.tgz", @@ -12202,6 +12860,11 @@ "yaeti": "0.0.6" } }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", From dd2d72ebad9e4498fd46940a648f61521665eb0d Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Tue, 3 Apr 2018 00:31:03 -0700 Subject: [PATCH 03/43] Compiles --- contracts/Deal.sol | 63 ++- contracts/DealFactory.sol | 32 +- contracts/DealToken.sol | 13 - contracts/RegulatedToken.sol | 48 -- contracts/SimpleContract.sol | 17 - contracts/TxOwnable.sol | 42 -- package-lock.json | 972 ++++++++++++++++++++++++++++++++++- package.json | 7 +- 8 files changed, 1036 insertions(+), 158 deletions(-) delete mode 100644 contracts/DealToken.sol delete mode 100644 contracts/RegulatedToken.sol delete mode 100644 contracts/SimpleContract.sol delete mode 100644 contracts/TxOwnable.sol diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 26b942f..2e748c9 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -1,20 +1,51 @@ pragma solidity ^0.4.15; import '../node_modules/validated-token/contracts/ReferenceToken.sol'; -import '../node_modules/zepplin-solidity/contracts/token/ERC20/TokenTimelock.sol'; - -contract Deal is ReferenceToken, TokenTimelock { - function Deal( - string _name, - string _symbol, - uint256 _granularity, - TokenValidator _validator - ) public { - ReferenceToken(_name, _symbol, _granularity, _validator); - } - - function mint(address _tokenHolder, uint256 _amount) public onlyOwner { - escrow = TokenTimelock(this, _tokenHolder, now + 16 weeks); - super.mint(escrow, _amount); - } +import '../node_modules/zeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol'; + +contract Deal is ReferenceToken { + using SafeMath for uint256; + + uint256 public startTime; + uint256 public endTime; + uint256 public holdPeriod; + + // Does this need to be mapping(address => TokenTimelock[])? + mapping(address => TokenTimelock) public holds; + + function Deal( + string _name, + string _symbol, + uint256 _granularity, + uint256 _startTime, + uint256 _endTime, + uint256 _holdPeriod, + TokenValidator _validator + ) ReferenceToken(_name, _symbol, _granularity, _validator) public { + require(_startTime >= now); + require(_startTime < _endTime); + + startTime = _startTime; + endTime = _endTime; + holdPeriod = _holdPeriod; + } + + function mint(address _tokenHolder, uint256 _amount) public onlyOwner whileOpen { + TokenTimelock escrow = new TokenTimelock(ERC20Basic(this), _tokenHolder, now.add(holdPeriod)); + holds[_tokenHolder] = escrow; + super.mint(escrow, _amount); + } + + /// Releases hold on funds from TokenTimelock. Reverts if the hold time has not elapsed. + function releaseFor(address _tokenHolder) public { holds[_tokenHolder].release(); } + // Not removing from map saves gas. + // https://ethereum.stackexchange.com/questions/41576/is-it-cheaper-to-delete-or-ignore-obsolete-mappings + + + /// Reverts if not in crowdsale time range. + modifier whileOpen { + require(now >= startTime); + require(now <= endTime); + _; + } } diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol index bb3fee2..b80d8f2 100644 --- a/contracts/DealFactory.sol +++ b/contracts/DealFactory.sol @@ -3,13 +3,27 @@ pragma solidity ^0.4.15; import './Deal.sol'; contract DealFactory { - event DealCreated(address sender, address instance); - - mapping(address => address[]) public instantiations; - function createDeal(uint256 _startTime, uint256 _endTime, uint256 _rate, address _wallet) public returns (address deal) { - deal = new Deal(_startTime, _endTime, _rate, _wallet); - instantiations[msg.sender].push(deal); - DealCreated(msg.sender,deal); - return deal; - } + event DealCreated(address sender, address instance); + + mapping(address => address[]) public registry; + + function create( + string _name, + string _symbol, + uint256 _granularity, + uint256 _startTime, + uint256 _endTime, + uint256 _holdPeriod, + TokenValidator _validator + ) public returns (address _deal) { + address deal = + new Deal(_name, _symbol, _granularity, _startTime, _endTime, _holdPeriod, _validator); + + registry[msg.sender].push(deal); + DealCreated(msg.sender, deal); + + return deal; + } + + function mine() public view returns (address[]) { return registry[msg.sender]; } } diff --git a/contracts/DealToken.sol b/contracts/DealToken.sol deleted file mode 100644 index 5121b5c..0000000 --- a/contracts/DealToken.sol +++ /dev/null @@ -1,13 +0,0 @@ - - pragma solidity ^0.4.15; - -import "./RegulatedToken.sol"; - -contract DealToken is RegulatedToken { - string public name = "Frontier Deal Token"; - string public symbol = "FRDT"; - uint256 public decimals = 18; - address deal; - function DealToken() public { - } -} diff --git a/contracts/RegulatedToken.sol b/contracts/RegulatedToken.sol deleted file mode 100644 index d53aef9..0000000 --- a/contracts/RegulatedToken.sol +++ /dev/null @@ -1,48 +0,0 @@ -pragma solidity ^0.4.15; - - -import '../node_modules/zeppelin-solidity/contracts/token/MintableToken.sol'; -import '../node_modules/zeppelin-solidity/contracts/token/LimitedTransferToken.sol'; - - -contract RegulatedToken is MintableToken, LimitedTransferToken { - - mapping (address => bool) authorizedAddresses; - - event Authorization(address indexed _sender, address indexed _authorized, bool _isAuthorized); - - event CheckAuthorization(address indexed _authorized, bool _isAuthorized); - - event TransferFrom(address _from, address _to, uint256 _value); - - event IsAuthorized(address indexed _authorized); - - modifier onlyAuthorized(address _to) { - CheckAuthorization(_to, authorizedAddresses[_to]); - require(authorizedAddresses[_to]); - _; - } - - function authorizeAddress(address _authorized, bool _isAuthorized) onlyOwner public { - Authorization(msg.sender, _authorized, _isAuthorized); - authorizedAddresses[_authorized] = _isAuthorized; - } - - function isAuthorized(address _authorized) public returns (bool){ - IsAuthorized(_authorized); - return authorizedAddresses[_authorized]; - } - - function transferFrom(address _from, address _to, uint256 _value) onlyAuthorized(_to) public returns (bool) { - TransferFrom(_from, _to, _value); - return super.transferFrom(_from, _to, _value); - } - - function mint(address _to, uint256 _amount) - // onlyOwner - // canMint - onlyAuthorized(_to) - public returns (bool) { - return super.mint(_to, _amount); - } -} diff --git a/contracts/SimpleContract.sol b/contracts/SimpleContract.sol deleted file mode 100644 index c491359..0000000 --- a/contracts/SimpleContract.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity ^0.4.15; - -// a simple contract just for testing smart contract interactions - -contract SimpleContract { - - int public value = 0; - - function add(int _value) public { - value = value + _value; - } - - function SimpleContract(int initialValue) { - value = initialValue; - } - -} \ No newline at end of file diff --git a/contracts/TxOwnable.sol b/contracts/TxOwnable.sol deleted file mode 100644 index 6ab1d42..0000000 --- a/contracts/TxOwnable.sol +++ /dev/null @@ -1,42 +0,0 @@ -pragma solidity ^0.4.15; - - -/** - * @title TxOwnable - * @dev The TxOwnable contract has an owner address, and provides basic authorization control - * functions, this simplifies the implementation of "user permissions". Same as "Ownable" but defaults to tx.origin instead of msg.sender - */ -contract TxOwnable { - address public owner; - - - event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); - - - /** - * @dev The Ownable constructor sets the `owner` based on the contructor arg - */ - function TxOwnable() { - owner = tx.origin; - } - - /** - * @dev Throws if called by any account other than the owner. - */ - modifier onlyOwner() { - require(msg.sender == owner); - _; - } - - - /** - * @dev Allows the current owner to transfer control of the contract to a newOwner. - * @param newOwner The address to transfer ownership to. - */ - function transferOwnership(address newOwner) onlyOwner public { - require(newOwner != address(0)); - OwnershipTransferred(owner, newOwner); - owner = newOwner; - } - -} diff --git a/package-lock.json b/package-lock.json index 8958879..d51c503 100644 --- a/package-lock.json +++ b/package-lock.json @@ -182,6 +182,15 @@ "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", "dev": true }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "5.5.3" + } + }, "acorn-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", @@ -691,6 +700,15 @@ "minimalistic-assert": "1.0.0" } }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -1870,6 +1888,15 @@ "parse-asn1": "5.1.0" } }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "1.0.6" + } + }, "bs58": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bs58/-/bs58-3.1.0.tgz", @@ -1921,6 +1948,12 @@ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, "byline": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", @@ -1931,6 +1964,35 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "chownr": "1.0.1", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "lru-cache": "4.1.2", + "mississippi": "2.0.0", + "mkdirp": "0.5.1", + "move-concurrently": "1.0.1", + "promise-inflight": "1.0.1", + "rimraf": "2.6.2", + "ssri": "5.3.0", + "unique-filename": "1.1.0", + "y18n": "4.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -2241,6 +2303,18 @@ } } }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "dev": true + }, + "chrome-trace-event": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.2.tgz", + "integrity": "sha1-kPNohdU0WlBiEzLwcXtZWIPV2YI=", + "dev": true + }, "ci-info": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz", @@ -2815,6 +2889,12 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", @@ -3104,6 +3184,20 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "1.2.0", + "fs-write-stream-atomic": "1.0.10", + "iferr": "0.1.5", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -3235,6 +3329,12 @@ "array-find-index": "1.0.2" } }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, "dargs": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", @@ -3582,6 +3682,12 @@ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, "domelementtype": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", @@ -3613,6 +3719,12 @@ "is-obj": "1.0.1" } }, + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=", + "dev": true + }, "drbg.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", @@ -3633,6 +3745,18 @@ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, + "duplexify": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz", + "integrity": "sha512-JzYSLYMhoVVBe8+mbHQ4KgpvHpm0DZpJuL8PY93Vyv1fW7jYJ90LoXa1di/CVbJM+TgMs91rbDapE/RNIfnJsA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "stream-shift": "1.0.0" + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -4283,6 +4407,31 @@ } } }, + "ethjs-abi": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.2.1.tgz", + "integrity": "sha1-4KepOn6BFjqUR3utVu3lJKtt5TM=", + "dev": true, + "requires": { + "bn.js": "4.11.6", + "js-sha3": "0.5.5", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + }, + "js-sha3": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", + "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=", + "dev": true + } + } + }, "ethjs-unit": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", @@ -4328,6 +4477,12 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", "integrity": "sha1-R3hr2qCHyvext15zq8XH1UAVjNA=" }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -4563,6 +4718,37 @@ "unpipe": "1.0.0" } }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "1.0.1", + "make-dir": "1.2.0", + "pkg-dir": "2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "2.1.0" + } + } + } + }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", @@ -4597,6 +4783,16 @@ "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.68.0.tgz", "integrity": "sha1-nMlmIKEC4xajFLa81WIFzqzoYtg=" }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, "for-each": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", @@ -4706,6 +4902,18 @@ } } }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "iferr": "0.1.5", + "imurmurhash": "0.1.4", + "readable-stream": "2.3.5" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -6212,6 +6420,12 @@ "sshpk": "1.14.1" } }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", @@ -6222,6 +6436,12 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.10.tgz", "integrity": "sha512-byWFX8OyW/qeVxcY21r6Ncxl0ZYHgnf0cPup2h34eHXrCJbOp7IuqnJ4Q0omfyWl6Z++BTI6bByf31pZt7iRLg==" }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, "ignore": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", @@ -6258,6 +6478,12 @@ "repeating": "2.0.1" } }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -7759,6 +7985,12 @@ "strip-bom": "2.0.0" } }, + "loader-runner": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, "loader-utils": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", @@ -8353,6 +8585,24 @@ "is-plain-obj": "1.1.0" } }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "duplexify": "3.5.4", + "end-of-stream": "1.4.1", + "flush-write-stream": "1.0.3", + "from2": "2.3.0", + "parallel-transform": "1.1.0", + "pump": "2.0.1", + "pumpify": "1.4.0", + "stream-each": "1.2.2", + "through2": "2.0.3" + } + }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", @@ -8466,6 +8716,20 @@ "resolved": "https://registry.npmjs.org/mout/-/mout-0.11.1.tgz", "integrity": "sha1-ujYR318OWx/7/QEWa48C0fX6K5k=" }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "copy-concurrently": "1.0.5", + "fs-write-stream-atomic": "1.0.10", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "run-queue": "1.0.3" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -8582,6 +8846,56 @@ "is-stream": "1.1.0" } }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "1.4.1", + "browserify-zlib": "0.2.0", + "buffer": "4.9.1", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "domain-browser": "1.2.0", + "events": "1.1.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "readable-stream": "2.3.5", + "stream-browserify": "2.0.1", + "stream-http": "2.8.1", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.6", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "1.2.3", + "ieee754": "1.1.10", + "isarray": "1.0.0" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + } + } + }, "nodemon": { "version": "1.17.2", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.17.2.tgz", @@ -8986,6 +9300,12 @@ "resolved": "https://registry.npmjs.org/original-require/-/original-require-1.0.1.tgz", "integrity": "sha1-DxMEcVhM0zURxew4yNWSE/msXiA=" }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -9102,6 +9422,23 @@ } } }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "0.2.2", + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, "parse-asn1": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", @@ -9163,6 +9500,12 @@ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", @@ -9339,6 +9682,12 @@ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, "proxy-addr": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", @@ -9388,6 +9737,27 @@ "randombytes": "2.0.6" } }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "once": "1.4.0" + } + }, + "pumpify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.4.0.tgz", + "integrity": "sha512-2kmNR9ry+Pf45opRVirpNuIFotsxUGLaYqxIwuR77AYrYRMuFCz9eryHBS52L360O+NcR383CL4QYlMKPq4zYA==", + "dev": true, + "requires": { + "duplexify": "3.5.4", + "inherits": "2.0.3", + "pump": "2.0.1" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -9413,6 +9783,18 @@ "strict-uri-encode": "1.1.0" } }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, "quick-lru": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", @@ -9917,6 +10299,15 @@ "is-promise": "2.1.0" } }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "1.2.0" + } + }, "rustbn.js": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.1.2.tgz", @@ -9957,6 +10348,36 @@ "ret": "0.1.15" } }, + "schema-utils": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", + "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==", + "dev": true, + "requires": { + "ajv": "6.4.0", + "ajv-keywords": "3.1.0" + }, + "dependencies": { + "ajv": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", + "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1", + "uri-js": "3.0.2" + } + }, + "ajv-keywords": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "dev": true + } + } + }, "scoped-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/scoped-regex/-/scoped-regex-1.0.0.tgz", @@ -10049,6 +10470,12 @@ "statuses": "1.4.0" } }, + "serialize-javascript": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", + "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=", + "dev": true + }, "serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", @@ -10974,6 +11401,12 @@ "is-plain-obj": "1.1.0" } }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11080,6 +11513,15 @@ "tweetnacl": "0.14.5" } }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -11163,6 +11605,16 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.5" + } + }, "stream-combiner": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", @@ -11172,10 +11624,39 @@ "duplexer": "0.1.1" } }, - "stream-to-observable": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", - "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", + "stream-each": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", + "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "dev": true, + "requires": { + "end-of-stream": "1.4.1", + "stream-shift": "1.0.0" + } + }, + "stream-http": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz", + "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", + "dev": true, + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.5", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "stream-to-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stream-to-observable/-/stream-to-observable-0.2.0.tgz", + "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=", "requires": { "any-observable": "0.2.0" } @@ -11582,6 +12063,15 @@ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, + "timers-browserify": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "dev": true, + "requires": { + "setimmediate": "1.0.5" + } + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -11590,6 +12080,12 @@ "os-tmpdir": "1.0.2" } }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", @@ -11802,6 +12298,12 @@ } } }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -11918,6 +12420,40 @@ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "optional": true }, + "uglifyjs-webpack-plugin": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz", + "integrity": "sha512-z0IbjpW8b3O/OVn+TTZN4pI29RN1zktFBXLIzzfZ+++cUtZ1ERSlLWgpE/5OERuEUs1ijVQnpYAkSlpoVmQmSQ==", + "dev": true, + "requires": { + "cacache": "10.0.4", + "find-cache-dir": "1.0.0", + "schema-utils": "0.4.5", + "serialize-javascript": "1.4.0", + "source-map": "0.6.1", + "uglify-es": "3.3.9", + "webpack-sources": "1.1.0", + "worker-farm": "1.6.0" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "2.13.0", + "source-map": "0.6.1" + } + } + } + }, "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -11998,6 +12534,24 @@ } } }, + "unique-filename": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", + "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "dev": true, + "requires": { + "unique-slug": "2.0.0" + } + }, + "unique-slug": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", + "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "dev": true, + "requires": { + "imurmurhash": "0.1.4" + } + }, "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", @@ -12101,12 +12655,47 @@ "xdg-basedir": "3.0.0" } }, + "uri-js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", + "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + } + } + }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", @@ -12152,6 +12741,23 @@ "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.1.tgz", "integrity": "sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g=" }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -12182,7 +12788,7 @@ } }, "validated-token": { - "version": "github:Finhaven/ValidatedToken#229223abb3fe8c6edf4af4a6999e8f0063864d37", + "version": "github:Finhaven/ValidatedToken#f2a8d3970735ff49af14338d88881f98b42881cf", "requires": { "eip777": "0.0.3", "eip820": "0.0.17", @@ -12228,6 +12834,26 @@ "vinyl": "1.2.0" } }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.5.0.tgz", + "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", + "dev": true, + "requires": { + "chokidar": "2.0.2", + "graceful-fs": "4.1.11", + "neo-async": "2.5.0" + } + }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -12528,7 +13154,7 @@ } }, "web3-server-tools": { - "version": "git+https://github.com/Finhaven/web3-server-tools.git#bd8fcd06a2612655182d26d4de27eb32524b755f", + "version": "github:Finhaven/web3-server-tools#bd8fcd06a2612655182d26d4de27eb32524b755f", "requires": { "bignumber.js": "6.0.0", "ethereumjs-tx": "1.3.4", @@ -12576,6 +13202,309 @@ } } }, + "webpack": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.4.1.tgz", + "integrity": "sha512-iLUJcsEAjaPKWbB32ADr29Pg9fPUVfFEMPK4VXyZGftzhSEFg2BLjHLoBYZ14wdTEA8xqG/hjpuX8qOmabRYvw==", + "dev": true, + "requires": { + "acorn": "5.5.3", + "acorn-dynamic-import": "3.0.0", + "ajv": "6.4.0", + "ajv-keywords": "3.1.0", + "chrome-trace-event": "0.1.2", + "enhanced-resolve": "4.0.0", + "eslint-scope": "3.7.1", + "loader-runner": "2.3.0", + "loader-utils": "1.1.0", + "memory-fs": "0.4.1", + "micromatch": "3.1.10", + "mkdirp": "0.5.1", + "neo-async": "2.5.0", + "node-libs-browser": "2.1.0", + "schema-utils": "0.4.5", + "tapable": "1.0.0", + "uglifyjs-webpack-plugin": "1.2.4", + "watchpack": "1.5.0", + "webpack-sources": "1.1.0" + }, + "dependencies": { + "ajv": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", + "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "dev": true, + "requires": { + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1", + "uri-js": "3.0.2" + } + }, + "ajv-keywords": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz", + "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74=", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", + "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "kind-of": "6.0.2", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.1", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } + } + }, "webpack-addons": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/webpack-addons/-/webpack-addons-1.1.5.tgz", @@ -12851,6 +13780,16 @@ } } }, + "webpack-sources": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", + "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "dev": true, + "requires": { + "source-list-map": "2.0.0", + "source-map": "0.6.1" + } + }, "websocket": { "version": "git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c", "requires": { @@ -12938,6 +13877,15 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "0.1.7" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -13296,10 +14244,14 @@ } }, "zeppelin-solidity": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/zeppelin-solidity/-/zeppelin-solidity-1.3.0.tgz", - "integrity": "sha512-q+WyqvQjE5gpKgXrhD8LBh0Njg7GI/zs4lKX14y0j7ISJIxe68hihSjaMU05V0M0qAbxgRC43AFTt7CxNsO8nQ==", - "dev": true + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/zeppelin-solidity/-/zeppelin-solidity-1.8.0.tgz", + "integrity": "sha512-7Mxq6Y7EES0PSLrRF6v0EVYqBVRRo8hFrr7m3jEs69VbbQ5kpANzizeEdbP1/PWKSOmBOg208qP2vSA0FlzFLA==", + "dev": true, + "requires": { + "dotenv": "4.0.0", + "ethjs-abi": "0.2.1" + } } } } diff --git a/package.json b/package.json index 6f727b2..a63468e 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,8 @@ "solhint": "^1.1.10", "solidity-coverage": "^0.4.14", "truffle": "^4.1.3", - "zeppelin-solidity": "1.3.0" + "webpack": "^4.0.0", + "zeppelin-solidity": "1.8.0" }, "engines": { "node": "8.4" @@ -49,8 +50,8 @@ "dependencies": { "ethereumjs-tx": "^1.3.4", "solc": "^0.4.21", - "validated-token": "github:Finhaven/ValidatedToken#oss", + "validated-token": "github:Finhaven/ValidatedToken", "web3": "^1.0.0-beta.33", - "web3-server-tools": "git+https://github.com/Finhaven/web3-server-tools.git" + "web3-server-tools": "github:Finhaven/web3-server-tools" } } From 25d063ea3b5a9435ddd3a79be9f6fd208326fb70 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Tue, 3 Apr 2018 00:33:15 -0700 Subject: [PATCH 04/43] Tweak --- contracts/Deal.sol | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 2e748c9..b63434f 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -38,9 +38,7 @@ contract Deal is ReferenceToken { /// Releases hold on funds from TokenTimelock. Reverts if the hold time has not elapsed. function releaseFor(address _tokenHolder) public { holds[_tokenHolder].release(); } - // Not removing from map saves gas. - // https://ethereum.stackexchange.com/questions/41576/is-it-cheaper-to-delete-or-ignore-obsolete-mappings - + // Not removing from map saves gas: https://ethereum.stackexchange.com/questions/41576/is-it-cheaper-to-delete-or-ignore-obsolete-mappings /// Reverts if not in crowdsale time range. modifier whileOpen { From f93e551d47127561e5ad23b158386b82a4d18071 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Tue, 3 Apr 2018 00:34:43 -0700 Subject: [PATCH 05/43] Better types --- contracts/DealFactory.sol | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol index b80d8f2..b9bbc0d 100644 --- a/contracts/DealFactory.sol +++ b/contracts/DealFactory.sol @@ -5,7 +5,7 @@ import './Deal.sol'; contract DealFactory { event DealCreated(address sender, address instance); - mapping(address => address[]) public registry; + mapping(address => Deal[]) public registry; function create( string _name, @@ -16,7 +16,7 @@ contract DealFactory { uint256 _holdPeriod, TokenValidator _validator ) public returns (address _deal) { - address deal = + Deal deal = new Deal(_name, _symbol, _granularity, _startTime, _endTime, _holdPeriod, _validator); registry[msg.sender].push(deal); @@ -25,5 +25,5 @@ contract DealFactory { return deal; } - function mine() public view returns (address[]) { return registry[msg.sender]; } + function mine() public view returns (Deal[]) { return registry[msg.sender]; } } From dc48a0cd8c5a230c5fd3422b4576dd2c0af2a587 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Tue, 3 Apr 2018 00:35:45 -0700 Subject: [PATCH 06/43] Better types --- contracts/DealFactory.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol index b9bbc0d..1feab35 100644 --- a/contracts/DealFactory.sol +++ b/contracts/DealFactory.sol @@ -15,7 +15,7 @@ contract DealFactory { uint256 _endTime, uint256 _holdPeriod, TokenValidator _validator - ) public returns (address _deal) { + ) public returns (Deal _deal) { Deal deal = new Deal(_name, _symbol, _granularity, _startTime, _endTime, _holdPeriod, _validator); From 3335ac0228e5fafe814f72fdea60c70c567ad765 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Tue, 3 Apr 2018 00:41:37 -0700 Subject: [PATCH 07/43] Better types --- contracts/DealFactory.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol index 1feab35..791ac3b 100644 --- a/contracts/DealFactory.sol +++ b/contracts/DealFactory.sol @@ -3,9 +3,9 @@ pragma solidity ^0.4.15; import './Deal.sol'; contract DealFactory { - event DealCreated(address sender, address instance); + event DealCreated(address sender, Deal deal); - mapping(address => Deal[]) public registry; + mapping(address => Deal[]) private registry; function create( string _name, From 8ae6c57c060b9f9cc23982ae5a1cc4ebc1c86d22 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Tue, 3 Apr 2018 00:43:31 -0700 Subject: [PATCH 08/43] Bump sol --- contracts/Deal.sol | 2 +- contracts/DealFactory.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/Deal.sol b/contracts/Deal.sol index b63434f..e5d5cfa 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.15; +pragma solidity ^0.4.19; import '../node_modules/validated-token/contracts/ReferenceToken.sol'; import '../node_modules/zeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol'; diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol index 791ac3b..e3e0ffa 100644 --- a/contracts/DealFactory.sol +++ b/contracts/DealFactory.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.15; +pragma solidity ^0.4.19; import './Deal.sol'; From 313e555fc1da2b61f3173f203f4861efd5ac7b4a Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Tue, 3 Apr 2018 00:48:02 -0700 Subject: [PATCH 09/43] Notes to self --- contracts/Deal.sol | 7 ++++--- contracts/DealFactory.sol | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/contracts/Deal.sol b/contracts/Deal.sol index e5d5cfa..ccf6b58 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -39,11 +39,12 @@ contract Deal is ReferenceToken { /// Releases hold on funds from TokenTimelock. Reverts if the hold time has not elapsed. function releaseFor(address _tokenHolder) public { holds[_tokenHolder].release(); } // Not removing from map saves gas: https://ethereum.stackexchange.com/questions/41576/is-it-cheaper-to-delete-or-ignore-obsolete-mappings + // Do we need to check if the TokenTimelock is there before calling #release/0? /// Reverts if not in crowdsale time range. modifier whileOpen { - require(now >= startTime); - require(now <= endTime); - _; + require(now >= startTime); + require(now <= endTime); + _; } } diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol index e3e0ffa..7552b7f 100644 --- a/contracts/DealFactory.sol +++ b/contracts/DealFactory.sol @@ -5,6 +5,7 @@ import './Deal.sol'; contract DealFactory { event DealCreated(address sender, Deal deal); + // Any point making this private? It's all actually public anyways. mapping(address => Deal[]) private registry; function create( From fe2d71fa21c886edfbfc8bb2cf57456e496e3c15 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 13:46:21 -0700 Subject: [PATCH 10/43] Refactoring --- contracts/Deal.sol | 16 +++++--------- contracts/DealFactory.sol | 2 ++ contracts/DealValidator.sol | 43 +++++++++++++++++++++++++++++++++++++ contracts/SingleClose.sol | 28 ++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 11 deletions(-) create mode 100644 contracts/DealValidator.sol create mode 100644 contracts/SingleClose.sol diff --git a/contracts/Deal.sol b/contracts/Deal.sol index ccf6b58..d0cfac2 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -8,10 +8,6 @@ contract Deal is ReferenceToken { uint256 public startTime; uint256 public endTime; - uint256 public holdPeriod; - - // Does this need to be mapping(address => TokenTimelock[])? - mapping(address => TokenTimelock) public holds; function Deal( string _name, @@ -19,7 +15,6 @@ contract Deal is ReferenceToken { uint256 _granularity, uint256 _startTime, uint256 _endTime, - uint256 _holdPeriod, TokenValidator _validator ) ReferenceToken(_name, _symbol, _granularity, _validator) public { require(_startTime >= now); @@ -30,17 +25,16 @@ contract Deal is ReferenceToken { holdPeriod = _holdPeriod; } + function endNow() public onlyOwner { + endTime = now; + } + function mint(address _tokenHolder, uint256 _amount) public onlyOwner whileOpen { - TokenTimelock escrow = new TokenTimelock(ERC20Basic(this), _tokenHolder, now.add(holdPeriod)); + /* TokenTimelock escrow = new TokenTimelock(ERC20Basic(this), _tokenHolder, now.add(holdPeriod)); */ holds[_tokenHolder] = escrow; super.mint(escrow, _amount); } - /// Releases hold on funds from TokenTimelock. Reverts if the hold time has not elapsed. - function releaseFor(address _tokenHolder) public { holds[_tokenHolder].release(); } - // Not removing from map saves gas: https://ethereum.stackexchange.com/questions/41576/is-it-cheaper-to-delete-or-ignore-obsolete-mappings - // Do we need to check if the TokenTimelock is there before calling #release/0? - /// Reverts if not in crowdsale time range. modifier whileOpen { require(now >= startTime); diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol index 7552b7f..5c52f7c 100644 --- a/contracts/DealFactory.sol +++ b/contracts/DealFactory.sol @@ -7,6 +7,8 @@ contract DealFactory { // Any point making this private? It's all actually public anyways. mapping(address => Deal[]) private registry; + // People can change public? + // hash this? function create( string _name, diff --git a/contracts/DealValidator.sol b/contracts/DealValidator.sol new file mode 100644 index 0000000..4af0ccd --- /dev/null +++ b/contracts/DealValidator.sol @@ -0,0 +1,43 @@ +pragma solidity ^0.4.19; + +import '../node_modules/validated-token/contracts/TokenValidator.sol'; +import '../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol'; + +contract DealValidator is Ownable, TokenValidator { + using SafeMath for uint256; + + mapping(address => bool) private authorizations; + + function DealValidator() Ownable public { + + } + + // TokenValidator + + function check(address _token, address _account) public returns(uint8 result) { + if(authorizations[_account]) { + return 1; + } else { + return 0; + } + } + + function check( + address /* _tokem */, + address _from, + address _to, + uint256 _amount + ) public returns (uint8 result) { + if(!authorizations[_from] && authorizations[_to]) { + return 1; + } else { + return 0; + } + } + + // Specific + + function setAuthorization(address /* _token */, bool _status) public onlyOwner { + authorizations[_address] = _status; + } +} diff --git a/contracts/SingleClose.sol b/contracts/SingleClose.sol new file mode 100644 index 0000000..7d96d10 --- /dev/null +++ b/contracts/SingleClose.sol @@ -0,0 +1,28 @@ +pragma solidity ^0.4.19; + +import './Deal.sol'; + +import '../node_modules/validated-token/contracts/ReferenceToken.sol'; +import '../node_modules/zeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol'; + +contract SingleClose is Deal { + using SafeMath for uint256; + + uint256 public holdPeriod; + + // Hash all addresses? + // Does this need to be mapping(address => TokenTimelock[])? + mapping(address => TokenTimelock) public holds; + + function SingleClose( + string _name, + string _symbol, + uint256 _granularity, + uint256 _startTime, + uint256 _endTime, + uint256 _holdPeriod, + TokenValidator _validator + ) Deal(_name, _symbol, _granularity, _startTime, _endTime, _validator) public { + holdPeriod = _holdPeriod; + } +} From 7d14bfc59cd49b37bb8409cf63568342aefa0be3 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 15:04:41 -0700 Subject: [PATCH 11/43] Time locking in validator --- contracts/Deal.sol | 35 +++++++++++++++++++++++------ contracts/DealValidator.sol | 44 +++++++++++++++++++++++-------------- contracts/RollingClose.sol | 28 +++++++++++++++++++++++ 3 files changed, 84 insertions(+), 23 deletions(-) create mode 100644 contracts/RollingClose.sol diff --git a/contracts/Deal.sol b/contracts/Deal.sol index d0cfac2..b5d948e 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -22,18 +22,15 @@ contract Deal is ReferenceToken { startTime = _startTime; endTime = _endTime; - holdPeriod = _holdPeriod; } + // CUSTOM // + function endNow() public onlyOwner { - endTime = now; + endTime = now; } - function mint(address _tokenHolder, uint256 _amount) public onlyOwner whileOpen { - /* TokenTimelock escrow = new TokenTimelock(ERC20Basic(this), _tokenHolder, now.add(holdPeriod)); */ - holds[_tokenHolder] = escrow; - super.mint(escrow, _amount); - } + // MODIFERS // /// Reverts if not in crowdsale time range. modifier whileOpen { @@ -41,4 +38,28 @@ contract Deal is ReferenceToken { require(now <= endTime); _; } + + // ERC20 // + + function mint(address _tokenHolder, uint256 _amount) public onlyOwner whileOpen { + super.mint(_tokenHolder, _amount) + } + + function transfer(address _to, uint256 _amount) public whileOpen returns (bool success) { + super.transfer(_to, _amount); + } + + function transferFrom(address _from, address _to, uint256 _amount) public whileOpen returns (bool success) { + super.transferFrom(_from, _to, _amount); + } + + // HELPERS // + + /* function check(address _tokenHolder) internal returns (uint8) { */ + /* validator.check(this, _tokenHolder); */ + /* } */ + + /* function check(address _from, address _to, uint256 _amount) internal returns (uint8) { */ + /* validator.check(this, _from, _to, _amount); */ + /* } */ } diff --git a/contracts/DealValidator.sol b/contracts/DealValidator.sol index 4af0ccd..f8494d4 100644 --- a/contracts/DealValidator.sol +++ b/contracts/DealValidator.sol @@ -1,25 +1,43 @@ pragma solidity ^0.4.19; +import './Deal.sol'; import '../node_modules/validated-token/contracts/TokenValidator.sol'; import '../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol'; contract DealValidator is Ownable, TokenValidator { using SafeMath for uint256; - mapping(address => bool) private authorizations; + mapping(address => bool) private auths; - function DealValidator() Ownable public { + function DealValidator() Ownable public {} + // CUSTOM // + + function setAuth(address _address, bool _status) public onlyOwner { + authorizations[_address] = _status; } - // TokenValidator + function availability(Deal _token) internal pure returns (byte _status) { + if(_token.startTime < now) { + return hex"43"; // Not yet available + } - function check(address _token, address _account) public returns(uint8 result) { - if(authorizations[_account]) { - return 1; - } else { - return 0; - } + if(_token.endTime >= now) { + return hex"40"; // Expired + } + + return hex"41"; // Available + } + + // TOKEN VALIDATOR // + + function check(Deal _deal, address _account) public returns(byte _status) { + // Reads way better with guards. I can add the tnested logic, if preferred. + if(!auths[_account]) { return hex"10"; } // Unauthorized + + byte timeState = availability(_deal); + if(timeState == hex"41") { return hex"11"; } // Authorized + return timeState; // Pass along time failure code } function check( @@ -28,16 +46,10 @@ contract DealValidator is Ownable, TokenValidator { address _to, uint256 _amount ) public returns (uint8 result) { - if(!authorizations[_from] && authorizations[_to]) { + if(auths[_from] && auths[_to]) { return 1; } else { return 0; } } - - // Specific - - function setAuthorization(address /* _token */, bool _status) public onlyOwner { - authorizations[_address] = _status; - } } diff --git a/contracts/RollingClose.sol b/contracts/RollingClose.sol new file mode 100644 index 0000000..203ebcf --- /dev/null +++ b/contracts/RollingClose.sol @@ -0,0 +1,28 @@ +pragma solidity ^0.4.19; + +import './Deal.sol'; + +import '../node_modules/validated-token/contracts/ReferenceToken.sol'; +import '../node_modules/zeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol'; + +contract RollingClose is Deal { + using SafeMath for uint256; + + uint256 public holdPeriod; + + // Hash all addresses? + // Does this need to be mapping(address => TokenTimelock[])? + mapping(address => TokenTimelock) public holds; + + function RollingClose( + string _name, + string _symbol, + uint256 _granularity, + uint256 _startTime, + uint256 _endTime, + uint256 _holdPeriod, + TokenValidator _validator + ) Deal(_name, _symbol, _granularity, _startTime, _endTime, _validator) public { + holdPeriod = _holdPeriod; + } +} From 1eed98164f12fc87c1b53b7560eb14570262ebf5 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 16:03:06 -0700 Subject: [PATCH 12/43] Charts --- contracts/AsyncCloseValidator.sol | 54 +++++++++++++++++++++++++++++++ contracts/Deal.sol | 4 ++- contracts/DealValidator.sol | 24 ++++++-------- contracts/PhaseValidator.sol | 46 ++++++++++++++++++++++++++ contracts/RollingClose.sol | 28 ---------------- contracts/SingleClose.sol | 28 ---------------- 6 files changed, 112 insertions(+), 72 deletions(-) create mode 100644 contracts/AsyncCloseValidator.sol create mode 100644 contracts/PhaseValidator.sol delete mode 100644 contracts/RollingClose.sol delete mode 100644 contracts/SingleClose.sol diff --git a/contracts/AsyncCloseValidator.sol b/contracts/AsyncCloseValidator.sol new file mode 100644 index 0000000..ce7f620 --- /dev/null +++ b/contracts/AsyncCloseValidator.sol @@ -0,0 +1,54 @@ +pragma solidity ^0.4.19; + +import './PhaseValidator.sol'; + +/* + Asynchronous close validtor + + -3M 0M 60M + |==========|============================| +Prehistory | Mintable | Tradeable | + |==========|============================| + | | | + Alice | x ---------- x+4M | + |Mint Hold Trade | + | | | + Bob | x ---------- x+4M | + | Mint Hold Trade | + | | | + Carol | x ---------- x+4M | + | Mint| Hold Trade | + | | | + + */ +contract AsyncCloseValidator is TokenValidator { + using SafeMath for uint256; + + // VALIDATION // + + // Ready? + function check(Deal _deal, address /* _account */) public pure returns (byte _status) { + return (_deal.startTime < now) ? hex"43" : hex"41"; + } + + function check( + address _deal + address _from, + address _to, + uint256 /* _amount */ + ) public returns (byte _validation) { + return (_deal == _from) ? mintable(_deal) : transferrable(_deal); + } + + // HELPERS // + + function mintable(Deal _deal) internal pure returns (byte _validation) { + if(_deal.startTime < now) { return hex"43"; } // Not yet available + if(_deal.endTime >= now) { return hex"40"; } // Expired + return hex"41"; // Available + } + + function transferrable(Deal _deal) internal pure returns (byte _validation) { + return (_deal.endTime + _deal.holdPeriod < now) ? hex"43" : hex"41"; + } +} diff --git a/contracts/Deal.sol b/contracts/Deal.sol index b5d948e..b68d2db 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -8,6 +8,7 @@ contract Deal is ReferenceToken { uint256 public startTime; uint256 public endTime; + uint256 public holdPeriod; function Deal( string _name, @@ -15,6 +16,7 @@ contract Deal is ReferenceToken { uint256 _granularity, uint256 _startTime, uint256 _endTime, + uint256 _holdPeriod, TokenValidator _validator ) ReferenceToken(_name, _symbol, _granularity, _validator) public { require(_startTime >= now); @@ -27,7 +29,7 @@ contract Deal is ReferenceToken { // CUSTOM // function endNow() public onlyOwner { - endTime = now; + endTime = now; } // MODIFERS // diff --git a/contracts/DealValidator.sol b/contracts/DealValidator.sol index f8494d4..b899785 100644 --- a/contracts/DealValidator.sol +++ b/contracts/DealValidator.sol @@ -1,6 +1,8 @@ pragma solidity ^0.4.19; import './Deal.sol'; +import './TimeValidator.sol'; + import '../node_modules/validated-token/contracts/TokenValidator.sol'; import '../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol'; @@ -9,7 +11,11 @@ contract DealValidator is Ownable, TokenValidator { mapping(address => bool) private auths; - function DealValidator() Ownable public {} + TimeValidator private timeValidator; + + function DealValidator(TimeValidator _timeValidator) Ownable public { + timeValidator = _timeValidator; + } // CUSTOM // @@ -17,26 +23,14 @@ contract DealValidator is Ownable, TokenValidator { authorizations[_address] = _status; } - function availability(Deal _token) internal pure returns (byte _status) { - if(_token.startTime < now) { - return hex"43"; // Not yet available - } - - if(_token.endTime >= now) { - return hex"40"; // Expired - } - - return hex"41"; // Available - } - // TOKEN VALIDATOR // function check(Deal _deal, address _account) public returns(byte _status) { // Reads way better with guards. I can add the tnested logic, if preferred. if(!auths[_account]) { return hex"10"; } // Unauthorized - byte timeState = availability(_deal); - if(timeState == hex"41") { return hex"11"; } // Authorized + byte timeState = timeValidtor.check(_deal, _account); + if(isOk(timeState)) { return hex"11"; } // Authorized return timeState; // Pass along time failure code } diff --git a/contracts/PhaseValidator.sol b/contracts/PhaseValidator.sol new file mode 100644 index 0000000..d80ecd5 --- /dev/null +++ b/contracts/PhaseValidator.sol @@ -0,0 +1,46 @@ +pragma solidity ^0.4.19; + +import './Deal.sol'; +import '../node_modules/validated-token/contracts/TokenValidator.sol'; + +/* + Synchronous close validtor + All tokens have the same hold period and start trading on the same day + + + -3M 0M 4M 60M + |----------|------------|----------------| +Prehistory | Mint | Hold | Trade | + + */ +contract SyncCloseValidator is TokenValidator { + using SafeMath for uint256; + + // VALIDATION // + + // Ready? + function check(Deal _deal, address /* _account */) public pure returns (byte _status) { + return (_deal.startTime < now) ? hex"43" : hex"41"; + } + + function check( + address _deal + address _from, + address _to, + uint256 /* _amount */ + ) public returns (byte _validation) { + return (_deal == _from) ? mintable(_deal) : transferrable(_deal); + } + + // HELPERS // + + function mintable(Deal _deal) internal pure returns (byte _validation) { + if(_deal.startTime < now) { return hex"43"; } // Not yet available + if(_deal.endTime >= now) { return hex"40"; } // Expired + return hex"41"; // Available + } + + function transferrable(Deal _deal) internal pure returns (byte _validation) { + return (_deal.endTime + _deal.holdPeriod < now) ? hex"43" : hex"41"; + } +} diff --git a/contracts/RollingClose.sol b/contracts/RollingClose.sol deleted file mode 100644 index 203ebcf..0000000 --- a/contracts/RollingClose.sol +++ /dev/null @@ -1,28 +0,0 @@ -pragma solidity ^0.4.19; - -import './Deal.sol'; - -import '../node_modules/validated-token/contracts/ReferenceToken.sol'; -import '../node_modules/zeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol'; - -contract RollingClose is Deal { - using SafeMath for uint256; - - uint256 public holdPeriod; - - // Hash all addresses? - // Does this need to be mapping(address => TokenTimelock[])? - mapping(address => TokenTimelock) public holds; - - function RollingClose( - string _name, - string _symbol, - uint256 _granularity, - uint256 _startTime, - uint256 _endTime, - uint256 _holdPeriod, - TokenValidator _validator - ) Deal(_name, _symbol, _granularity, _startTime, _endTime, _validator) public { - holdPeriod = _holdPeriod; - } -} diff --git a/contracts/SingleClose.sol b/contracts/SingleClose.sol deleted file mode 100644 index 7d96d10..0000000 --- a/contracts/SingleClose.sol +++ /dev/null @@ -1,28 +0,0 @@ -pragma solidity ^0.4.19; - -import './Deal.sol'; - -import '../node_modules/validated-token/contracts/ReferenceToken.sol'; -import '../node_modules/zeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol'; - -contract SingleClose is Deal { - using SafeMath for uint256; - - uint256 public holdPeriod; - - // Hash all addresses? - // Does this need to be mapping(address => TokenTimelock[])? - mapping(address => TokenTimelock) public holds; - - function SingleClose( - string _name, - string _symbol, - uint256 _granularity, - uint256 _startTime, - uint256 _endTime, - uint256 _holdPeriod, - TokenValidator _validator - ) Deal(_name, _symbol, _granularity, _startTime, _endTime, _validator) public { - holdPeriod = _holdPeriod; - } -} From eb4846424562dd712aeace70221664ace90b37df Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 16:30:25 -0700 Subject: [PATCH 13/43] Speed bump --- contracts/AsyncCloseValidator.sol | 38 +++++++++++++++++++++++-------- contracts/Deal.sol | 9 ++++++++ 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/contracts/AsyncCloseValidator.sol b/contracts/AsyncCloseValidator.sol index ce7f620..229121d 100644 --- a/contracts/AsyncCloseValidator.sol +++ b/contracts/AsyncCloseValidator.sol @@ -7,17 +7,17 @@ import './PhaseValidator.sol'; -3M 0M 60M |==========|============================| -Prehistory | Mintable | Tradeable | +Prehistory | Mintable | Tradeable | Inactive |==========|============================| | | | Alice | x ---------- x+4M | |Mint Hold Trade | | | | - Bob | x ---------- x+4M | + Bob | x ---------- x+4M | | Mint Hold Trade | | | | - Carol | x ---------- x+4M | - | Mint| Hold Trade | + Carol | x ---------- x+4M | + | Mint | Hold Trade | | | | */ @@ -35,20 +35,38 @@ contract AsyncCloseValidator is TokenValidator { address _deal address _from, address _to, - uint256 /* _amount */ + uint256 _amount ) public returns (byte _validation) { - return (_deal == _from) ? mintable(_deal) : transferrable(_deal); + return (_deal == _from) ? mintable(_deal) : transferrable(_deal, _from, _amount); } // HELPERS // function mintable(Deal _deal) internal pure returns (byte _validation) { - if(_deal.startTime < now) { return hex"43"; } // Not yet available - if(_deal.endTime >= now) { return hex"40"; } // Expired + if(now < _deal.startTime) { return hex"43"; } // Not yet available + if(now >= _deal.endTime) { return hex"40"; } // Expired return hex"41"; // Available } - function transferrable(Deal _deal) internal pure returns (byte _validation) { - return (_deal.endTime + _deal.holdPeriod < now) ? hex"43" : hex"41"; + function transferrable(Deal _deal, address _from, uint256 _amount) internal pure returns (byte _validation) { + if(now < _deal.endTime) { return hex"43"; } // Not yet available + if(now < _deal.mintedAt[_from] + _deal.holdPeriod) { return hex"43"; } + + // Which of these? 🤔 + // mapping(address _user => [mintTime, uint256][]) + // mapping(address _user => [mintTime, balance]) + + return hex"41"; } + + /* mapping (address => uint) accountBalances; */ + /* mapping (uint => address) accountIndex; */ + /* uint accountCount; */ + /* function iterateAccountsBalances() */ + /* { */ + /* for(uint i=0;i Balance[]) private mBalances; */ + function Deal( string _name, string _symbol, From 7bcf3d35e1054a632485a49ca10ab9909b30ac27 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 16:32:37 -0700 Subject: [PATCH 14/43] Thought --- contracts/Deal.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/Deal.sol b/contracts/Deal.sol index ffb33b4..671456c 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -11,7 +11,7 @@ contract Deal is ReferenceToken { uint256 public holdPeriod; - // If and when we move to timestamped issuance + // If and when we move to timestamped issuance or maybe a RollingDeal? /* struct Balance { */ /* uint256 mintedAt; */ /* uint256 value; */ From 81ce89e9e19e9f2dd7404717063bd5135b4e5626 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 18:25:51 -0700 Subject: [PATCH 15/43] Tweak --- contracts/AsyncCloseValidator.sol | 72 --------------------------- contracts/DealFactory.sol | 4 -- contracts/DealValidator.sol | 35 ++++++------- contracts/PhaseValidator.sol | 19 +++---- contracts/StaggeredPhaseValidator.sol | 65 ++++++++++++++++++++++++ 5 files changed, 88 insertions(+), 107 deletions(-) delete mode 100644 contracts/AsyncCloseValidator.sol create mode 100644 contracts/StaggeredPhaseValidator.sol diff --git a/contracts/AsyncCloseValidator.sol b/contracts/AsyncCloseValidator.sol deleted file mode 100644 index 229121d..0000000 --- a/contracts/AsyncCloseValidator.sol +++ /dev/null @@ -1,72 +0,0 @@ -pragma solidity ^0.4.19; - -import './PhaseValidator.sol'; - -/* - Asynchronous close validtor - - -3M 0M 60M - |==========|============================| -Prehistory | Mintable | Tradeable | Inactive - |==========|============================| - | | | - Alice | x ---------- x+4M | - |Mint Hold Trade | - | | | - Bob | x ---------- x+4M | - | Mint Hold Trade | - | | | - Carol | x ---------- x+4M | - | Mint | Hold Trade | - | | | - - */ -contract AsyncCloseValidator is TokenValidator { - using SafeMath for uint256; - - // VALIDATION // - - // Ready? - function check(Deal _deal, address /* _account */) public pure returns (byte _status) { - return (_deal.startTime < now) ? hex"43" : hex"41"; - } - - function check( - address _deal - address _from, - address _to, - uint256 _amount - ) public returns (byte _validation) { - return (_deal == _from) ? mintable(_deal) : transferrable(_deal, _from, _amount); - } - - // HELPERS // - - function mintable(Deal _deal) internal pure returns (byte _validation) { - if(now < _deal.startTime) { return hex"43"; } // Not yet available - if(now >= _deal.endTime) { return hex"40"; } // Expired - return hex"41"; // Available - } - - function transferrable(Deal _deal, address _from, uint256 _amount) internal pure returns (byte _validation) { - if(now < _deal.endTime) { return hex"43"; } // Not yet available - if(now < _deal.mintedAt[_from] + _deal.holdPeriod) { return hex"43"; } - - // Which of these? 🤔 - // mapping(address _user => [mintTime, uint256][]) - // mapping(address _user => [mintTime, balance]) - - return hex"41"; - } - - /* mapping (address => uint) accountBalances; */ - /* mapping (uint => address) accountIndex; */ - /* uint accountCount; */ - /* function iterateAccountsBalances() */ - /* { */ - /* for(uint i=0;i Deal[]) private registry; - // People can change public? - // hash this? function create( string _name, diff --git a/contracts/DealValidator.sol b/contracts/DealValidator.sol index b899785..b1c1b38 100644 --- a/contracts/DealValidator.sol +++ b/contracts/DealValidator.sol @@ -1,7 +1,7 @@ pragma solidity ^0.4.19; import './Deal.sol'; -import './TimeValidator.sol'; +import './PhaseValidator.sol'; import '../node_modules/validated-token/contracts/TokenValidator.sol'; import '../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol'; @@ -9,16 +9,13 @@ import '../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol'; contract DealValidator is Ownable, TokenValidator { using SafeMath for uint256; + PhaseValidator private phaseValidator; mapping(address => bool) private auths; - TimeValidator private timeValidator; - - function DealValidator(TimeValidator _timeValidator) Ownable public { - timeValidator = _timeValidator; + function DealValidator(PhaseValidator _phaseValidator) Ownable public { + phaseValidator = _phaseValidator; } - // CUSTOM // - function setAuth(address _address, bool _status) public onlyOwner { authorizations[_address] = _status; } @@ -26,24 +23,22 @@ contract DealValidator is Ownable, TokenValidator { // TOKEN VALIDATOR // function check(Deal _deal, address _account) public returns(byte _status) { - // Reads way better with guards. I can add the tnested logic, if preferred. - if(!auths[_account]) { return hex"10"; } // Unauthorized - - byte timeState = timeValidtor.check(_deal, _account); - if(isOk(timeState)) { return hex"11"; } // Authorized - return timeState; // Pass along time failure code + return auths[_account] ? phaseCheck(_deal, _account) : hex"10"; } function check( - address /* _tokem */, + address /* _token */, address _from, address _to, uint256 _amount - ) public returns (uint8 result) { - if(auths[_from] && auths[_to]) { - return 1; - } else { - return 0; - } + ) public returns (byte _validation) { + return (auths[_from] && auths[_to]) ? hex"11" : return hex"10"; + } + + // HELPERS // + + function phaseCheck(Deal _deal, address _tokenHolder) internal view returns (byte _validation) { + byte phaseState = phaseValidator.check(_deal, _account); + return isOk(phaseState) ? return hex"11" : phaseState; } } diff --git a/contracts/PhaseValidator.sol b/contracts/PhaseValidator.sol index d80ecd5..240556c 100644 --- a/contracts/PhaseValidator.sol +++ b/contracts/PhaseValidator.sol @@ -7,18 +7,15 @@ import '../node_modules/validated-token/contracts/TokenValidator.sol'; Synchronous close validtor All tokens have the same hold period and start trading on the same day - - -3M 0M 4M 60M - |----------|------------|----------------| -Prehistory | Mint | Hold | Trade | + startTime endTime endTime + holdPeriod dealOver + -tX t0 tY tZ + |----------|-----------------|------------------| +Prehistory | Mint | Hold | Trade | */ -contract SyncCloseValidator is TokenValidator { +contract PhaseValidator is TokenValidator { using SafeMath for uint256; - // VALIDATION // - - // Ready? function check(Deal _deal, address /* _account */) public pure returns (byte _status) { return (_deal.startTime < now) ? hex"43" : hex"41"; } @@ -29,18 +26,18 @@ contract SyncCloseValidator is TokenValidator { address _to, uint256 /* _amount */ ) public returns (byte _validation) { - return (_deal == _from) ? mintable(_deal) : transferrable(_deal); + return (0x0 == _from) ? mintable(_deal) : transferrable(_deal); } // HELPERS // function mintable(Deal _deal) internal pure returns (byte _validation) { if(_deal.startTime < now) { return hex"43"; } // Not yet available - if(_deal.endTime >= now) { return hex"40"; } // Expired + if(_deal.endTime >= now) { return hex"40"; } // Expired return hex"41"; // Available } function transferrable(Deal _deal) internal pure returns (byte _validation) { - return (_deal.endTime + _deal.holdPeriod < now) ? hex"43" : hex"41"; + return (_deal.endTime.add(_deal.holdPeriod) < now) ? hex"43" : hex"41"; } } diff --git a/contracts/StaggeredPhaseValidator.sol b/contracts/StaggeredPhaseValidator.sol new file mode 100644 index 0000000..a7322c1 --- /dev/null +++ b/contracts/StaggeredPhaseValidator.sol @@ -0,0 +1,65 @@ +pragma solidity ^0.4.19; + +import './PhaseValidator.sol'; + +/** Validators for when there's an staggered close + + startTime endTime dealOver + -tX t0 tZ + |============|============================| +Prehistory | Mintable | Tradeable | Inactive + |============|============================| + | | | + | | | + Alice | a ---------- a + holdPeriod | + | Mint Hold Trade | + | | | + | | | + Bob | b ---------- b + holdPeriod | + | Mint Hold Trade | + | | | + | | | + Carol | c ---------- c + holdPeriod | + | Mint | Hold Trade | + | | | + + */ +contract StaggeredPhaseValidator is TokenValidator { + using SafeMath for uint256; + + // Check if in ready state + function check(Deal _deal, address /* _account */) public view returns (byte _status) { + return (_deal.startTime < now) ? hex"43" : hex"41"; + } + + // NOTE TO SELF: Add events? + function check( + address _deal + address _from, + address _to, + uint256 _amount + ) public view returns (byte _validation) { + return (_deal == _from) ? mintable(_deal) : transferrable(_deal, _from, _amount); + } + + // HELPERS // + + function mintable(Deal _deal) internal view returns (byte _validation) { + if(now < _deal.startTime) { return hex"43"; } // Not yet available + if(now >= _deal.endTime) { return hex"40"; } // No longer available + return hex"41"; // Available + } + + function transferrable(Deal _deal, address _from, uint256 _amount) internal view returns (byte _validation) { + return (isMintPeriod(_deal) || isTokenHeld(_deal, _from)) ? hex"43" : hex"41"; + } + + function isMintPeriod(Deal _deal) internal view returns (bool) { + return now < _deal.endTime; + } + + // Need to make this work on multiple issuance + function isTokenHeld(Deal _deal, address _from) internal view returns (bool) { + return now < _deal.balances[_from].mintedAt.add(_deal.holdPeriod); + } +} From e7593aed4f5e4dbc744b21f867b36612fd6cbfc1 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 21:12:18 -0700 Subject: [PATCH 16/43] Tweak --- contracts/Deal.sol | 11 ---- contracts/Token.sol | 135 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 135 insertions(+), 11 deletions(-) create mode 100644 contracts/Token.sol diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 671456c..80ad2b6 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -10,7 +10,6 @@ contract Deal is ReferenceToken { uint256 public endTime; uint256 public holdPeriod; - // If and when we move to timestamped issuance or maybe a RollingDeal? /* struct Balance { */ /* uint256 mintedAt; */ @@ -63,14 +62,4 @@ contract Deal is ReferenceToken { function transferFrom(address _from, address _to, uint256 _amount) public whileOpen returns (bool success) { super.transferFrom(_from, _to, _amount); } - - // HELPERS // - - /* function check(address _tokenHolder) internal returns (uint8) { */ - /* validator.check(this, _tokenHolder); */ - /* } */ - - /* function check(address _from, address _to, uint256 _amount) internal returns (uint8) { */ - /* validator.check(this, _from, _to, _amount); */ - /* } */ } diff --git a/contracts/Token.sol b/contracts/Token.sol new file mode 100644 index 0000000..b329ad3 --- /dev/null +++ b/contracts/Token.sol @@ -0,0 +1,135 @@ +pragma solidity ^0.4.19; + +import "./ValidatedToken.sol"; +import "./TokenValidator.sol"; + +import "./dependencies/Owned.sol"; +import "./dependencies/SafeMath.sol"; + +import "./dependencies/ERC20Token.sol"; + +contract Token is Owned, ERC20Token, ValidatedToken { + using SafeMath for uint256; + + string private mName; + string private mSymbol; + + uint256 private mGranularity; + uint256 private mTotalSupply; + + mapping(address => [uint256, uint][]) private mBalances; + mapping(address => mapping(address => bool)) private mAuthorized; + mapping(address => mapping(address => uint256)) private mAllowed; + + TokenValidator private validator; + + function ReferenceToken( + string _name, + string _symbol, + uint256 _granularity, + TokenValidator _validator + ) public { + mName = _name; + mSymbol = _symbol; + mTotalSupply = 0; + require(_granularity >= 1); + mGranularity = _granularity; + validator = TokenValidator(_validator); + } + + // VALIDATION HELPERS // + + function validate(address _user) private returns (byte) { + uint8 checkResult = validator.check(this, _user); + Validation(checkResult, _user); + return checkResult; + } + + function validate( + address _from, + address _to, + uint256 _amount + ) private returns (byte) { + uint8 checkResult = validator.check(this, _from, _to, _amount); + Validation(checkResult, _from, _to, _amount); + return checkResult; + } + + // STATUS CODE HELPERS // + + byte constant lowNibbleMask = byte(hex"0F"); + + function isOk(byte _statusCode) internal view { + return _statusCode & lowNibbleMask == 1; + } + + function requireOk(byte _statusCode) internal view { + require(isOk(_statusCode)); + } + + // ERC 20 // + + function name() public constant returns (string) { return mName; } + + function symbol() public constant returns(string) { return mSymbol; } + + function granularity() public constant returns(uint256) { return mGranularity; } + + function decimals() public constant returns (uint8) { return uint8(18); } + + function totalSupply() public constant returns(uint256) { return mTotalSupply; } + + function balanceOf(address _tokenHolder) public constant returns (uint256) { + return mBalances[_tokenHolder]; + } + + function requireMultiple(uint256 _amount) internal view { + require(_amount.div(mGranularity).mul(mGranularity) == _amount); + } + + function approve(address _spender, uint256 _amount) public returns (bool success) { + if(isOk(validate(msg.sender, _spender, _amount))) { return false; } + + mAllowed[msg.sender][_spender] = _amount; + Approval(msg.sender, _spender, _amount); + return true; + } + + function allowance(address _owner, address _spender) public view returns (uint256 remaining) { + return mAllowed[_owner][_spender]; + } + + function mint(address _tokenHolder, uint256 _amount) public onlyOwner { + requireOk(validate(_tokenHolder)); + requireMultiple(_amount); + + mTotalSupply = mTotalSupply.add(_amount); + mBalances[_tokenHolder] = mBalances[_tokenHolder].add(_amount); + + Transfer(address(0), _tokenHolder, _amount); + } + + function transfer(address _to, uint256 _amount) public returns (bool success) { + doSend(msg.sender, _to, _amount); + return true; + } + + function transferFrom(address _from, address _to, uint256 _amount) public returns (bool success) { + require(_amount <= mAllowed[_from][msg.sender]); + + mAllowed[_from][msg.sender] = mAllowed[_from][msg.sender].sub(_amount); + doSend(_from, _to, _amount); + return true; + } + + function doSend(address _from, address _to, uint256 _amount) internal { + requireMultiple(_amount); + require(_to != address(0)); // Forbid sending to 0x0 (=burning) + require(mBalances[_from] >= _amount); // Ensure enough funds + requireOk(validate(_from, _to, _amount)); // Ensure passes validation + + mBalances[_from] = mBalances[_from].sub(_amount); + mBalances[_to] = mBalances[_to].add(_amount); + Transfer(_from, _to, _amount); + } +} From ef8791a4e639d560a4dc3c2194edee81d2511326 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 22:46:59 -0700 Subject: [PATCH 17/43] Clarify with README --- contracts/Deal.sol | 12 +-- contracts/StaggeredDeal.sol | 54 +++++++++++ contracts/StaggeredPhaseValidator.sol | 22 ++++- contracts/Token.sol | 135 -------------------------- contracts/heirarchy.md | 19 ++++ 5 files changed, 95 insertions(+), 147 deletions(-) create mode 100644 contracts/StaggeredDeal.sol delete mode 100644 contracts/Token.sol create mode 100644 contracts/heirarchy.md diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 80ad2b6..8ee11a6 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -16,8 +16,6 @@ contract Deal is ReferenceToken { /* uint256 value; */ /* } */ - /* mapping(address => Balance[]) private mBalances; */ - function Deal( string _name, string _symbol, @@ -34,14 +32,10 @@ contract Deal is ReferenceToken { endTime = _endTime; } - // CUSTOM // - function endNow() public onlyOwner { endTime = now; } - // MODIFERS // - /// Reverts if not in crowdsale time range. modifier whileOpen { require(now >= startTime); @@ -59,7 +53,11 @@ contract Deal is ReferenceToken { super.transfer(_to, _amount); } - function transferFrom(address _from, address _to, uint256 _amount) public whileOpen returns (bool success) { + function transferFrom( + address _from, + address _to, + uint256 _amount + ) public whileOpen returns (bool success) { super.transferFrom(_from, _to, _amount); } } diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol new file mode 100644 index 0000000..d4552de --- /dev/null +++ b/contracts/StaggeredDeal.sol @@ -0,0 +1,54 @@ +pragma solidity ^0.4.19; + +import './Deal.sol'; + + +/** Staggered close + + startTime endTime dealOver + -tX t0 tZ + |============|============================| +Prehistory | Mintable | Tradeable | Inactive + |============|============================| + | | | + | | | + Alice | a ---------- a + holdPeriod | + | Mint Hold Trade | + | | | + | | | + Bob | b ---------- b + holdPeriod | + | Mint Hold Trade | + | | | + | | | + Carol | c ---------- c + holdPeriod | + | Mint | Hold Trade | + | | | + + */ +contract StaggeredDeal is ReferenceToken { + struct Minting { + uint256 amount; + uint256 createdAt; + } + + mapping(address => Minting[]) public mintings; + + function StaggeredDeal( + string _name, + string _symbol, + uint256 _granularity, + uint256 _startTime, + uint256 _endTime, + uint256 _holdPeriod, + TokenValidator _validator + ) DealToken(_name, _symbol, _granularity, _holdPeriod, _validator) public {} + + function mint(address _tokenHolder, uint256 _amount) public onlyOwner whileOpen { + mintings[_tokenHolder].push(Minting({ + amount: _amount, + createdAt: now + })); + + super.mint(_tokenHolder, _amount) + } +} diff --git a/contracts/StaggeredPhaseValidator.sol b/contracts/StaggeredPhaseValidator.sol index a7322c1..642a3a5 100644 --- a/contracts/StaggeredPhaseValidator.sol +++ b/contracts/StaggeredPhaseValidator.sol @@ -50,16 +50,28 @@ contract StaggeredPhaseValidator is TokenValidator { return hex"41"; // Available } - function transferrable(Deal _deal, address _from, uint256 _amount) internal view returns (byte _validation) { - return (isMintPeriod(_deal) || isTokenHeld(_deal, _from)) ? hex"43" : hex"41"; + function transferrable( + Deal _deal, + address _from, + uint256 _amount + ) internal view returns (byte _validation) { + return (isMintPeriod(_deal) || enoughSpendable(_deal, _from, _amount)) ? hex"43" : hex"41"; } function isMintPeriod(Deal _deal) internal view returns (bool) { return now < _deal.endTime; } - // Need to make this work on multiple issuance - function isTokenHeld(Deal _deal, address _from) internal view returns (bool) { - return now < _deal.balances[_from].mintedAt.add(_deal.holdPeriod); + function enoughSpendable(Deal _deal, address _from, uint256 _amount) internal view returns (bool) { + total = _deal.balanceOf(_tokenHolder); + mintings = _deal.mintings; + + for (i = 0; i++; i < mintings.length) { + if (records[i].createdAt.add(holdPeriod) < now) { + total.sub(mintings[i].amount); + } + } + + return total >= _amount; } } diff --git a/contracts/Token.sol b/contracts/Token.sol deleted file mode 100644 index b329ad3..0000000 --- a/contracts/Token.sol +++ /dev/null @@ -1,135 +0,0 @@ -pragma solidity ^0.4.19; - -import "./ValidatedToken.sol"; -import "./TokenValidator.sol"; - -import "./dependencies/Owned.sol"; -import "./dependencies/SafeMath.sol"; - -import "./dependencies/ERC20Token.sol"; - -contract Token is Owned, ERC20Token, ValidatedToken { - using SafeMath for uint256; - - string private mName; - string private mSymbol; - - uint256 private mGranularity; - uint256 private mTotalSupply; - - mapping(address => [uint256, uint][]) private mBalances; - mapping(address => mapping(address => bool)) private mAuthorized; - mapping(address => mapping(address => uint256)) private mAllowed; - - TokenValidator private validator; - - function ReferenceToken( - string _name, - string _symbol, - uint256 _granularity, - TokenValidator _validator - ) public { - mName = _name; - mSymbol = _symbol; - mTotalSupply = 0; - require(_granularity >= 1); - mGranularity = _granularity; - validator = TokenValidator(_validator); - } - - // VALIDATION HELPERS // - - function validate(address _user) private returns (byte) { - uint8 checkResult = validator.check(this, _user); - Validation(checkResult, _user); - return checkResult; - } - - function validate( - address _from, - address _to, - uint256 _amount - ) private returns (byte) { - uint8 checkResult = validator.check(this, _from, _to, _amount); - Validation(checkResult, _from, _to, _amount); - return checkResult; - } - - // STATUS CODE HELPERS // - - byte constant lowNibbleMask = byte(hex"0F"); - - function isOk(byte _statusCode) internal view { - return _statusCode & lowNibbleMask == 1; - } - - function requireOk(byte _statusCode) internal view { - require(isOk(_statusCode)); - } - - // ERC 20 // - - function name() public constant returns (string) { return mName; } - - function symbol() public constant returns(string) { return mSymbol; } - - function granularity() public constant returns(uint256) { return mGranularity; } - - function decimals() public constant returns (uint8) { return uint8(18); } - - function totalSupply() public constant returns(uint256) { return mTotalSupply; } - - function balanceOf(address _tokenHolder) public constant returns (uint256) { - return mBalances[_tokenHolder]; - } - - function requireMultiple(uint256 _amount) internal view { - require(_amount.div(mGranularity).mul(mGranularity) == _amount); - } - - function approve(address _spender, uint256 _amount) public returns (bool success) { - if(isOk(validate(msg.sender, _spender, _amount))) { return false; } - - mAllowed[msg.sender][_spender] = _amount; - Approval(msg.sender, _spender, _amount); - return true; - } - - function allowance(address _owner, address _spender) public view returns (uint256 remaining) { - return mAllowed[_owner][_spender]; - } - - function mint(address _tokenHolder, uint256 _amount) public onlyOwner { - requireOk(validate(_tokenHolder)); - requireMultiple(_amount); - - mTotalSupply = mTotalSupply.add(_amount); - mBalances[_tokenHolder] = mBalances[_tokenHolder].add(_amount); - - Transfer(address(0), _tokenHolder, _amount); - } - - function transfer(address _to, uint256 _amount) public returns (bool success) { - doSend(msg.sender, _to, _amount); - return true; - } - - function transferFrom(address _from, address _to, uint256 _amount) public returns (bool success) { - require(_amount <= mAllowed[_from][msg.sender]); - - mAllowed[_from][msg.sender] = mAllowed[_from][msg.sender].sub(_amount); - doSend(_from, _to, _amount); - return true; - } - - function doSend(address _from, address _to, uint256 _amount) internal { - requireMultiple(_amount); - require(_to != address(0)); // Forbid sending to 0x0 (=burning) - require(mBalances[_from] >= _amount); // Ensure enough funds - requireOk(validate(_from, _to, _amount)); // Ensure passes validation - - mBalances[_from] = mBalances[_from].sub(_amount); - mBalances[_to] = mBalances[_to].add(_amount); - Transfer(_from, _to, _amount); - } -} diff --git a/contracts/heirarchy.md b/contracts/heirarchy.md new file mode 100644 index 0000000..4f4ab39 --- /dev/null +++ b/contracts/heirarchy.md @@ -0,0 +1,19 @@ +# Heirarchy + +| Symbol | Meaning | +|---------------|---------------| +| `△` | Inherits from | +| `V`, `>`, `<` | Depends on | + +``` + +ReferenceToken + △ + | +---DealFactory----+ + | | | + | V V + Deal <--------- DealValidator ----> PhaseValidator + △ △ + | | +StaggeredDeal <------------------ StaggeredPhaseValidator +``` From 6c9b9475542b636819751ca25d00f855b8290791 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 23:11:58 -0700 Subject: [PATCH 18/43] Clean up README --- contracts/StaggeredPhaseValidator.sol | 7 +------ contracts/heirarchy.md | 27 ++++++++++++++++----------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/contracts/StaggeredPhaseValidator.sol b/contracts/StaggeredPhaseValidator.sol index 642a3a5..8f8e8fd 100644 --- a/contracts/StaggeredPhaseValidator.sol +++ b/contracts/StaggeredPhaseValidator.sol @@ -24,14 +24,9 @@ Prehistory | Mintable | Tradeable | Inactive | | | */ -contract StaggeredPhaseValidator is TokenValidator { +contract StaggeredPhaseValidator is PhaseValidator { using SafeMath for uint256; - // Check if in ready state - function check(Deal _deal, address /* _account */) public view returns (byte _status) { - return (_deal.startTime < now) ? hex"43" : hex"41"; - } - // NOTE TO SELF: Add events? function check( address _deal diff --git a/contracts/heirarchy.md b/contracts/heirarchy.md index 4f4ab39..9c0cd73 100644 --- a/contracts/heirarchy.md +++ b/contracts/heirarchy.md @@ -1,19 +1,24 @@ # Heirarchy -| Symbol | Meaning | -|---------------|---------------| -| `△` | Inherits from | -| `V`, `>`, `<` | Depends on | +| Symbol | Meaning | Memonic | +|---------------|---------------|---------| +| `△` | Inherits from | "is a" | +| `V`, `>`, `<` | Depends on | "has a" | ``` +TOKENS FACTORIES VALIDATORS + (EIP-902) ReferenceToken △ - | +---DealFactory----+ - | | | - | V V - Deal <--------- DealValidator ----> PhaseValidator - △ △ - | | -StaggeredDeal <------------------ StaggeredPhaseValidator + | +----- DealFactory ----> TokenValidator + | | △ △ + | | | | + | |+------------------ DealValidator | + | || | | + | VV V | + Deal <-------------------- PhaseValidator + △ △ + | | +StaggeredDeal <------- StaggeredPhaseValidator ``` From eb0de61654c566857eac62ea27e2da37648675df Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 23:18:47 -0700 Subject: [PATCH 19/43] Rearrange --- contracts/Deal.sol | 1 - contracts/{ => validators}/DealValidator.sol | 2 +- contracts/{ => validators}/PhaseValidator.sol | 2 +- contracts/{ => validators}/StaggeredPhaseValidator.sol | 0 4 files changed, 2 insertions(+), 3 deletions(-) rename contracts/{ => validators}/DealValidator.sol (98%) rename contracts/{ => validators}/PhaseValidator.sol (98%) rename contracts/{ => validators}/StaggeredPhaseValidator.sol (100%) diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 8ee11a6..2fceb43 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -1,7 +1,6 @@ pragma solidity ^0.4.19; import '../node_modules/validated-token/contracts/ReferenceToken.sol'; -import '../node_modules/zeppelin-solidity/contracts/token/ERC20/TokenTimelock.sol'; contract Deal is ReferenceToken { using SafeMath for uint256; diff --git a/contracts/DealValidator.sol b/contracts/validators/DealValidator.sol similarity index 98% rename from contracts/DealValidator.sol rename to contracts/validators/DealValidator.sol index b1c1b38..b6096db 100644 --- a/contracts/DealValidator.sol +++ b/contracts/validators/DealValidator.sol @@ -1,7 +1,7 @@ pragma solidity ^0.4.19; -import './Deal.sol'; import './PhaseValidator.sol'; +import '../Deal.sol'; import '../node_modules/validated-token/contracts/TokenValidator.sol'; import '../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol'; diff --git a/contracts/PhaseValidator.sol b/contracts/validators/PhaseValidator.sol similarity index 98% rename from contracts/PhaseValidator.sol rename to contracts/validators/PhaseValidator.sol index 240556c..50ea905 100644 --- a/contracts/PhaseValidator.sol +++ b/contracts/validators/PhaseValidator.sol @@ -1,6 +1,6 @@ pragma solidity ^0.4.19; -import './Deal.sol'; +import '../Deal.sol'; import '../node_modules/validated-token/contracts/TokenValidator.sol'; /* diff --git a/contracts/StaggeredPhaseValidator.sol b/contracts/validators/StaggeredPhaseValidator.sol similarity index 100% rename from contracts/StaggeredPhaseValidator.sol rename to contracts/validators/StaggeredPhaseValidator.sol From 4715fd222b44d7e3b3930758abdd7451824e2438 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 23:19:15 -0700 Subject: [PATCH 20/43] Typo --- contracts/StaggeredDeal.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol index d4552de..010a0c2 100644 --- a/contracts/StaggeredDeal.sol +++ b/contracts/StaggeredDeal.sol @@ -49,6 +49,6 @@ contract StaggeredDeal is ReferenceToken { createdAt: now })); - super.mint(_tokenHolder, _amount) + super.mint(_tokenHolder, _amount); } } From 44e5d40dab29ce8063431b04b57c17691cced3ec Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 23:35:20 -0700 Subject: [PATCH 21/43] Note to self --- contracts/Deal.sol | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 2fceb43..0f438f4 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -9,12 +9,6 @@ contract Deal is ReferenceToken { uint256 public endTime; uint256 public holdPeriod; - // If and when we move to timestamped issuance or maybe a RollingDeal? - /* struct Balance { */ - /* uint256 mintedAt; */ - /* uint256 value; */ - /* } */ - function Deal( string _name, string _symbol, @@ -35,6 +29,7 @@ contract Deal is ReferenceToken { endTime = now; } + // Handle in validator /// Reverts if not in crowdsale time range. modifier whileOpen { require(now >= startTime); @@ -45,7 +40,7 @@ contract Deal is ReferenceToken { // ERC20 // function mint(address _tokenHolder, uint256 _amount) public onlyOwner whileOpen { - super.mint(_tokenHolder, _amount) + super.mint(_tokenHolder, _amount); } function transfer(address _to, uint256 _amount) public whileOpen returns (bool success) { From 9b6e454c95f93e1da0035b4ae2106deb2f2ebf5a Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 23:37:44 -0700 Subject: [PATCH 22/43] Remove unused code --- contracts/Deal.sol | 26 ------------------------- contracts/StaggeredDeal.sol | 4 ++-- contracts/validators/DealValidator.sol | 2 +- contracts/validators/PhaseValidator.sol | 4 ++-- 4 files changed, 5 insertions(+), 31 deletions(-) diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 0f438f4..ef87452 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -28,30 +28,4 @@ contract Deal is ReferenceToken { function endNow() public onlyOwner { endTime = now; } - - // Handle in validator - /// Reverts if not in crowdsale time range. - modifier whileOpen { - require(now >= startTime); - require(now <= endTime); - _; - } - - // ERC20 // - - function mint(address _tokenHolder, uint256 _amount) public onlyOwner whileOpen { - super.mint(_tokenHolder, _amount); - } - - function transfer(address _to, uint256 _amount) public whileOpen returns (bool success) { - super.transfer(_to, _amount); - } - - function transferFrom( - address _from, - address _to, - uint256 _amount - ) public whileOpen returns (bool success) { - super.transferFrom(_from, _to, _amount); - } } diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol index 010a0c2..9c9d383 100644 --- a/contracts/StaggeredDeal.sol +++ b/contracts/StaggeredDeal.sol @@ -27,8 +27,8 @@ Prehistory | Mintable | Tradeable | Inactive */ contract StaggeredDeal is ReferenceToken { struct Minting { - uint256 amount; - uint256 createdAt; + uint256 amount; + uint256 createdAt; } mapping(address => Minting[]) public mintings; diff --git a/contracts/validators/DealValidator.sol b/contracts/validators/DealValidator.sol index b6096db..81396e1 100644 --- a/contracts/validators/DealValidator.sol +++ b/contracts/validators/DealValidator.sol @@ -32,7 +32,7 @@ contract DealValidator is Ownable, TokenValidator { address _to, uint256 _amount ) public returns (byte _validation) { - return (auths[_from] && auths[_to]) ? hex"11" : return hex"10"; + return (auths[_from] && auths[_to]) ? hex"11" : hex"10"; } // HELPERS // diff --git a/contracts/validators/PhaseValidator.sol b/contracts/validators/PhaseValidator.sol index 50ea905..4dbc7eb 100644 --- a/contracts/validators/PhaseValidator.sol +++ b/contracts/validators/PhaseValidator.sol @@ -9,8 +9,8 @@ import '../node_modules/validated-token/contracts/TokenValidator.sol'; startTime endTime endTime + holdPeriod dealOver -tX t0 tY tZ - |----------|-----------------|------------------| -Prehistory | Mint | Hold | Trade | + |==========|=================|==================| +Prehistory | Mint | Hold | Trade | */ contract PhaseValidator is TokenValidator { From 6fccc46b76303753336fd3f79cdc5ee3b7625e7d Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 4 Apr 2018 23:45:26 -0700 Subject: [PATCH 23/43] Crutial flaw --- contracts/validators/StaggeredPhaseValidator.sol | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/contracts/validators/StaggeredPhaseValidator.sol b/contracts/validators/StaggeredPhaseValidator.sol index 8f8e8fd..8a29156 100644 --- a/contracts/validators/StaggeredPhaseValidator.sol +++ b/contracts/validators/StaggeredPhaseValidator.sol @@ -29,12 +29,12 @@ contract StaggeredPhaseValidator is PhaseValidator { // NOTE TO SELF: Add events? function check( - address _deal + address _deal, address _from, address _to, uint256 _amount ) public view returns (byte _validation) { - return (_deal == _from) ? mintable(_deal) : transferrable(_deal, _from, _amount); + return (_from == address(0)) ? mintable(_deal) : transferrable(_deal, _from, _amount); } // HELPERS // @@ -62,7 +62,7 @@ contract StaggeredPhaseValidator is PhaseValidator { mintings = _deal.mintings; for (i = 0; i++; i < mintings.length) { - if (records[i].createdAt.add(holdPeriod) < now) { + if (now < mintings[i].createdAt.add(holdPeriod)) { total.sub(mintings[i].amount); } } From 7687ff827dd836f4aad5f6e7ca6cab8d8150155f Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Tue, 10 Apr 2018 12:00:03 -0700 Subject: [PATCH 24/43] WIP --- contracts/Deal.sol | 8 ++-- contracts/StaggeredDeal.sol | 25 +++++------ contracts/validators/.#PhaseValidator.sol | 1 + contracts/validators/DealValidator.sol | 45 ++++++++++++++++--- contracts/validators/PhaseValidator.sol | 6 +-- .../validators/StaggeredPhaseValidator.sol | 12 ++--- contracts/validators/TokenValidator.sol | 15 +++++++ package-lock.json | 2 +- package.json | 2 +- 9 files changed, 82 insertions(+), 34 deletions(-) create mode 120000 contracts/validators/.#PhaseValidator.sol create mode 100644 contracts/validators/TokenValidator.sol diff --git a/contracts/Deal.sol b/contracts/Deal.sol index ef87452..75ec98b 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -18,11 +18,11 @@ contract Deal is ReferenceToken { uint256 _holdPeriod, TokenValidator _validator ) ReferenceToken(_name, _symbol, _granularity, _validator) public { - require(_startTime >= now); - require(_startTime < _endTime); + require(_startTime >= now); + require(_startTime < _endTime); - startTime = _startTime; - endTime = _endTime; + startTime = _startTime; + endTime = _endTime; } function endNow() public onlyOwner { diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol index 9c9d383..104f3ba 100644 --- a/contracts/StaggeredDeal.sol +++ b/contracts/StaggeredDeal.sol @@ -2,7 +2,6 @@ pragma solidity ^0.4.19; import './Deal.sol'; - /** Staggered close startTime endTime dealOver @@ -25,7 +24,7 @@ Prehistory | Mintable | Tradeable | Inactive | | | */ -contract StaggeredDeal is ReferenceToken { +contract StaggeredDeal is Deal { struct Minting { uint256 amount; uint256 createdAt; @@ -33,17 +32,17 @@ contract StaggeredDeal is ReferenceToken { mapping(address => Minting[]) public mintings; - function StaggeredDeal( - string _name, - string _symbol, - uint256 _granularity, - uint256 _startTime, - uint256 _endTime, - uint256 _holdPeriod, - TokenValidator _validator - ) DealToken(_name, _symbol, _granularity, _holdPeriod, _validator) public {} - - function mint(address _tokenHolder, uint256 _amount) public onlyOwner whileOpen { + /* function StaggeredDeal( */ + /* string _name, */ + /* string _symbol, */ + /* uint256 _granularity, */ + /* uint256 _startTime, */ + /* uint256 _endTime, */ + /* uint256 _holdPeriod, */ + /* TokenValidator _validator */ + /* ) Deal(_name, _symbol, _granularity, _holdPeriod, _validator) public {} */ + + function mint(address _tokenHolder, uint256 _amount) public onlyOwner { mintings[_tokenHolder].push(Minting({ amount: _amount, createdAt: now diff --git a/contracts/validators/.#PhaseValidator.sol b/contracts/validators/.#PhaseValidator.sol new file mode 120000 index 0000000..1def9c7 --- /dev/null +++ b/contracts/validators/.#PhaseValidator.sol @@ -0,0 +1 @@ +expede@Latte.hitronhub.home.54986 \ No newline at end of file diff --git a/contracts/validators/DealValidator.sol b/contracts/validators/DealValidator.sol index 81396e1..8baa538 100644 --- a/contracts/validators/DealValidator.sol +++ b/contracts/validators/DealValidator.sol @@ -1,11 +1,40 @@ pragma solidity ^0.4.19; import './PhaseValidator.sol'; -import '../Deal.sol'; +import './TokenValidator.sol'; -import '../node_modules/validated-token/contracts/TokenValidator.sol'; -import '../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol'; +/* import '../Deal.sol'; */ +import '../../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol'; + +/* + Deal DealValidator PhaseValidator + | | | + | check/4 | | + +---------------> | | + | | check/4 | + | +------------------> | + | | | + | | | + | | startTime/0 | + | <------------------------------------+ + | | 12345 | + +------------------------------------> | + | | | + | | | + | | endTime/0 | + | <------------------------------------+ + | | 67890 | + +------------------------------------> | + | | | + | | | + | | hex"41" | + | | <------------------+ + | hex"41" | | + | <---------------+ | + | | | + | | | + */ contract DealValidator is Ownable, TokenValidator { using SafeMath for uint256; @@ -17,7 +46,7 @@ contract DealValidator is Ownable, TokenValidator { } function setAuth(address _address, bool _status) public onlyOwner { - authorizations[_address] = _status; + auths[_address] = _status; } // TOKEN VALIDATOR // @@ -38,7 +67,11 @@ contract DealValidator is Ownable, TokenValidator { // HELPERS // function phaseCheck(Deal _deal, address _tokenHolder) internal view returns (byte _validation) { - byte phaseState = phaseValidator.check(_deal, _account); - return isOk(phaseState) ? return hex"11" : phaseState; + byte phaseState = phaseValidator.check(_deal, _tokenHolder); + return isOk(phaseState) ? hex"11" : phaseState; + } + + function isOk(byte status) internal view returns (bool) { + return (status & hex"0F") == 1; } } diff --git a/contracts/validators/PhaseValidator.sol b/contracts/validators/PhaseValidator.sol index 4dbc7eb..edae8b1 100644 --- a/contracts/validators/PhaseValidator.sol +++ b/contracts/validators/PhaseValidator.sol @@ -1,7 +1,7 @@ pragma solidity ^0.4.19; -import '../Deal.sol'; -import '../node_modules/validated-token/contracts/TokenValidator.sol'; +import './TokenValidator.sol'; +import '../../node_modules/zeppelin-solidity/contracts/math/SafeMath.sol'; /* Synchronous close validtor @@ -21,7 +21,7 @@ contract PhaseValidator is TokenValidator { } function check( - address _deal + Deal _deal, address _from, address _to, uint256 /* _amount */ diff --git a/contracts/validators/StaggeredPhaseValidator.sol b/contracts/validators/StaggeredPhaseValidator.sol index 8a29156..d4db432 100644 --- a/contracts/validators/StaggeredPhaseValidator.sol +++ b/contracts/validators/StaggeredPhaseValidator.sol @@ -1,6 +1,7 @@ pragma solidity ^0.4.19; import './PhaseValidator.sol'; +/* import '../StaggeredDeal.sol'; */ /** Validators for when there's an staggered close @@ -29,7 +30,7 @@ contract StaggeredPhaseValidator is PhaseValidator { // NOTE TO SELF: Add events? function check( - address _deal, + Deal _deal, address _from, address _to, uint256 _amount @@ -58,12 +59,11 @@ contract StaggeredPhaseValidator is PhaseValidator { } function enoughSpendable(Deal _deal, address _from, uint256 _amount) internal view returns (bool) { - total = _deal.balanceOf(_tokenHolder); - mintings = _deal.mintings; + uint256 total = _deal.balanceOf(_from); - for (i = 0; i++; i < mintings.length) { - if (now < mintings[i].createdAt.add(holdPeriod)) { - total.sub(mintings[i].amount); + for (uint i = 0; i++; i < _deal.mintings.length) { + if (now < _deal.mintings[i].createdAt.add(_deal.holdPeriod)) { + total.sub(_deal.mintings[i].amount); } } diff --git a/contracts/validators/TokenValidator.sol b/contracts/validators/TokenValidator.sol new file mode 100644 index 0000000..aea3ab7 --- /dev/null +++ b/contracts/validators/TokenValidator.sol @@ -0,0 +1,15 @@ +pragma solidity ^0.4.19; + +interface TokenValidator { + function check( + address _token, + address _user + ) public returns(byte result); + + function check( + address _token, + address _from, + address _to, + uint256 _amount + ) public returns (byte result); +} diff --git a/package-lock.json b/package-lock.json index d51c503..73bed3c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12788,7 +12788,7 @@ } }, "validated-token": { - "version": "github:Finhaven/ValidatedToken#f2a8d3970735ff49af14338d88881f98b42881cf", + "version": "github:Finhaven/ValidatedToken#4afbe89ec8942ee76bfc0b83922b1a9bd018f2d1", "requires": { "eip777": "0.0.3", "eip820": "0.0.17", diff --git a/package.json b/package.json index a63468e..cc1fc63 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "dependencies": { "ethereumjs-tx": "^1.3.4", "solc": "^0.4.21", - "validated-token": "github:Finhaven/ValidatedToken", + "validated-token": "github:Finhaven/ValidatedToken#bytes", "web3": "^1.0.0-beta.33", "web3-server-tools": "github:Finhaven/web3-server-tools" } From 4e96a8fb2d214a0f2816d3e17f222262dffb84fd Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 11 Apr 2018 17:43:39 -0700 Subject: [PATCH 25/43] WIP --- contracts/Deal.sol | 2 +- contracts/StaggeredDeal.sol | 28 +++++++++++-- contracts/validators/.#PhaseValidator.sol | 1 - contracts/validators/DealValidator.sol | 28 +++++++++---- contracts/validators/PhaseValidator.sol | 20 ++++++--- .../validators/StaggeredPhaseValidator.sol | 42 ++++++++++++++----- contracts/validators/TokenValidator.sol | 15 ------- 7 files changed, 91 insertions(+), 45 deletions(-) delete mode 120000 contracts/validators/.#PhaseValidator.sol delete mode 100644 contracts/validators/TokenValidator.sol diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 75ec98b..48ab8e2 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -1,6 +1,6 @@ pragma solidity ^0.4.19; -import '../node_modules/validated-token/contracts/ReferenceToken.sol'; +import "../node_modules/validated-token/contracts/ReferenceToken.sol"; contract Deal is ReferenceToken { using SafeMath for uint256; diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol index 104f3ba..85c5264 100644 --- a/contracts/StaggeredDeal.sol +++ b/contracts/StaggeredDeal.sol @@ -30,7 +30,12 @@ contract StaggeredDeal is Deal { uint256 createdAt; } - mapping(address => Minting[]) public mintings; + // Indexed from 1, blugh + uint public holderCount; + mapping(uint => address) private holderIndex; + mapping(address => uint) private reverseHolderIndex; + + mapping(address => Minting[]) private mMintHistory; /* function StaggeredDeal( */ /* string _name, */ @@ -43,11 +48,28 @@ contract StaggeredDeal is Deal { /* ) Deal(_name, _symbol, _granularity, _holdPeriod, _validator) public {} */ function mint(address _tokenHolder, uint256 _amount) public onlyOwner { - mintings[_tokenHolder].push(Minting({ + super.mint(_tokenHolder, _amount); + recordMinting(_tokenHolder, _amount); + } + + function mintHistory(address _holder) public returns (Minting[]) { + return mMintHistory[_holder]; + } + + function recordMinting(address _tokenHolder, uint256 _amount) internal onlyOwner { + upsertHolder(_tokenHolder); + + mMintHistory[_tokenHolder].push(Minting({ amount: _amount, createdAt: now })); + } - super.mint(_tokenHolder, _amount); + function upsertHolder(address _tokenHolder) internal onlyOwner { + if (reverseHolderIndex[_tokenHolder] == 0) { + holderCount++; + holderIndex[holderCount] = _tokenHolder; + reverseHolderIndex[_tokenHolder] = holderCount; + } } } diff --git a/contracts/validators/.#PhaseValidator.sol b/contracts/validators/.#PhaseValidator.sol deleted file mode 120000 index 1def9c7..0000000 --- a/contracts/validators/.#PhaseValidator.sol +++ /dev/null @@ -1 +0,0 @@ -expede@Latte.hitronhub.home.54986 \ No newline at end of file diff --git a/contracts/validators/DealValidator.sol b/contracts/validators/DealValidator.sol index 8baa538..cc2172e 100644 --- a/contracts/validators/DealValidator.sol +++ b/contracts/validators/DealValidator.sol @@ -1,11 +1,10 @@ pragma solidity ^0.4.19; -import './PhaseValidator.sol'; -import './TokenValidator.sol'; +import "../Deal.sol"; +import "./PhaseValidator.sol"; -/* import '../Deal.sol'; */ - -import '../../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol'; +import "../../node_modules/validated-token/contracts/TokenValidator.sol"; +import "../../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol"; /* Deal DealValidator PhaseValidator @@ -52,7 +51,11 @@ contract DealValidator is Ownable, TokenValidator { // TOKEN VALIDATOR // function check(Deal _deal, address _account) public returns(byte _status) { - return auths[_account] ? phaseCheck(_deal, _account) : hex"10"; + if (auths[_account]) { + return phaseCheck(_deal, _account); + } else { + return hex"10"; + } } function check( @@ -61,14 +64,23 @@ contract DealValidator is Ownable, TokenValidator { address _to, uint256 _amount ) public returns (byte _validation) { - return (auths[_from] && auths[_to]) ? hex"11" : hex"10"; + if (auths[_from] && auths[_to]) { + return hex"11"; + } else { + return hex"10"; + } } // HELPERS // function phaseCheck(Deal _deal, address _tokenHolder) internal view returns (byte _validation) { byte phaseState = phaseValidator.check(_deal, _tokenHolder); - return isOk(phaseState) ? hex"11" : phaseState; + + if (isOk(phaseState)) { + return hex"11"; + } else { + return phaseState; + } } function isOk(byte status) internal view returns (bool) { diff --git a/contracts/validators/PhaseValidator.sol b/contracts/validators/PhaseValidator.sol index edae8b1..50e1499 100644 --- a/contracts/validators/PhaseValidator.sol +++ b/contracts/validators/PhaseValidator.sol @@ -1,7 +1,7 @@ pragma solidity ^0.4.19; -import './TokenValidator.sol'; -import '../../node_modules/zeppelin-solidity/contracts/math/SafeMath.sol'; +import "../Deal.sol"; +import "../../node_modules/validated-token/contracts/TokenValidator.sol"; /* Synchronous close validtor @@ -17,7 +17,11 @@ contract PhaseValidator is TokenValidator { using SafeMath for uint256; function check(Deal _deal, address /* _account */) public pure returns (byte _status) { - return (_deal.startTime < now) ? hex"43" : hex"41"; + if (_deal.startTime() < now) { + return hex"43"; + } else { + return hex"41"; + } } function check( @@ -32,12 +36,16 @@ contract PhaseValidator is TokenValidator { // HELPERS // function mintable(Deal _deal) internal pure returns (byte _validation) { - if(_deal.startTime < now) { return hex"43"; } // Not yet available - if(_deal.endTime >= now) { return hex"40"; } // Expired + if(_deal.startTime() < now) { return hex"43"; } // Not yet available + if(_deal.endTime() >= now) { return hex"40"; } // Expired return hex"41"; // Available } function transferrable(Deal _deal) internal pure returns (byte _validation) { - return (_deal.endTime.add(_deal.holdPeriod) < now) ? hex"43" : hex"41"; + if (_deal.endTime().add(_deal.holdPeriod()) < now) { + return hex"43"; + } else { + return hex"41"; + } } } diff --git a/contracts/validators/StaggeredPhaseValidator.sol b/contracts/validators/StaggeredPhaseValidator.sol index d4db432..a2fda93 100644 --- a/contracts/validators/StaggeredPhaseValidator.sol +++ b/contracts/validators/StaggeredPhaseValidator.sol @@ -1,7 +1,7 @@ pragma solidity ^0.4.19; -import './PhaseValidator.sol'; -/* import '../StaggeredDeal.sol'; */ +import "./PhaseValidator.sol"; +import "../StaggeredDeal.sol"; /** Validators for when there's an staggered close @@ -35,14 +35,18 @@ contract StaggeredPhaseValidator is PhaseValidator { address _to, uint256 _amount ) public view returns (byte _validation) { - return (_from == address(0)) ? mintable(_deal) : transferrable(_deal, _from, _amount); + if (_from == address(0)) { + return mintable(_deal); + } else { + return transferrable(_deal, _from, _amount); + } } // HELPERS // function mintable(Deal _deal) internal view returns (byte _validation) { - if(now < _deal.startTime) { return hex"43"; } // Not yet available - if(now >= _deal.endTime) { return hex"40"; } // No longer available + if(now < _deal.startTime()) { return hex"43"; } // Not yet available + if(now >= _deal.endTime()) { return hex"40"; } // No longer available return hex"41"; // Available } @@ -51,19 +55,35 @@ contract StaggeredPhaseValidator is PhaseValidator { address _from, uint256 _amount ) internal view returns (byte _validation) { - return (isMintPeriod(_deal) || enoughSpendable(_deal, _from, _amount)) ? hex"43" : hex"41"; + if (isMintPeriod(_deal) || enoughSpendable(_deal, _from, _amount)) { + return hex"43"; + } else { + return hex"41"; + } } function isMintPeriod(Deal _deal) internal view returns (bool) { - return now < _deal.endTime; + return now < _deal.endTime(); + } + + // DUPLICATE; extract! fom both! + struct Minting { + uint256 amount; + uint256 createdAt; } - function enoughSpendable(Deal _deal, address _from, uint256 _amount) internal view returns (bool) { + function enoughSpendable( + StaggeredDeal _deal, + address _from, + uint256 _amount + ) internal view returns (bool) { uint256 total = _deal.balanceOf(_from); - for (uint i = 0; i++; i < _deal.mintings.length) { - if (now < _deal.mintings[i].createdAt.add(_deal.holdPeriod)) { - total.sub(_deal.mintings[i].amount); + Minting[] storage foo = _deal.mintHistory(_from); + + for (uint i = 0; i < foo.length; i++) { + if (now < _deal.mintHistory(_from)[i].createdAt.add(_deal.holdPeriod())) { + total.sub(_deal.mintHistory(_from)[i].amount); } } diff --git a/contracts/validators/TokenValidator.sol b/contracts/validators/TokenValidator.sol deleted file mode 100644 index aea3ab7..0000000 --- a/contracts/validators/TokenValidator.sol +++ /dev/null @@ -1,15 +0,0 @@ -pragma solidity ^0.4.19; - -interface TokenValidator { - function check( - address _token, - address _user - ) public returns(byte result); - - function check( - address _token, - address _from, - address _to, - uint256 _amount - ) public returns (byte result); -} From 09f084e7996dd185a577875b015ed34a9a0b0fd3 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 11 Apr 2018 22:29:29 -0700 Subject: [PATCH 26/43] WIP --- contracts/.#Deal.sol | 1 + contracts/Deal.sol | 1 + contracts/DealFactory.sol | 2 +- contracts/MintHistory.sol | 8 +++++ contracts/StaggeredDeal.sol | 15 ++++---- contracts/validators/DealValidator.sol | 14 ++++---- contracts/validators/PhaseValidator.sol | 18 ++++++---- .../validators/StaggeredPhaseValidator.sol | 34 ++++++++----------- package-lock.json | 22 +++--------- package.json | 2 +- 10 files changed, 56 insertions(+), 61 deletions(-) create mode 120000 contracts/.#Deal.sol create mode 100644 contracts/MintHistory.sol diff --git a/contracts/.#Deal.sol b/contracts/.#Deal.sol new file mode 120000 index 0000000..3a33ef4 --- /dev/null +++ b/contracts/.#Deal.sol @@ -0,0 +1 @@ +expede@Latte.local.56891 \ No newline at end of file diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 48ab8e2..e1d5f27 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -21,6 +21,7 @@ contract Deal is ReferenceToken { require(_startTime >= now); require(_startTime < _endTime); + holdPeriod = _holdPeriod; startTime = _startTime; endTime = _endTime; } diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol index 778b403..fc533fd 100644 --- a/contracts/DealFactory.sol +++ b/contracts/DealFactory.sol @@ -19,7 +19,7 @@ contract DealFactory { new Deal(_name, _symbol, _granularity, _startTime, _endTime, _holdPeriod, _validator); registry[msg.sender].push(deal); - DealCreated(msg.sender, deal); + emit DealCreated(msg.sender, deal); return deal; } diff --git a/contracts/MintHistory.sol b/contracts/MintHistory.sol new file mode 100644 index 0000000..d511b3a --- /dev/null +++ b/contracts/MintHistory.sol @@ -0,0 +1,8 @@ +pragma solidity ^0.4.19; + +library MintHistory { + struct Minting { + uint256 amount; + uint256 createdAt; + } +} diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol index 85c5264..0d1f96b 100644 --- a/contracts/StaggeredDeal.sol +++ b/contracts/StaggeredDeal.sol @@ -1,6 +1,8 @@ pragma solidity ^0.4.19; +pragma experimental ABIEncoderV2; -import './Deal.sol'; +import "./Deal.sol"; +import "./MintHistory.sol"; /** Staggered close @@ -25,17 +27,12 @@ Prehistory | Mintable | Tradeable | Inactive */ contract StaggeredDeal is Deal { - struct Minting { - uint256 amount; - uint256 createdAt; - } - // Indexed from 1, blugh uint public holderCount; mapping(uint => address) private holderIndex; mapping(address => uint) private reverseHolderIndex; - mapping(address => Minting[]) private mMintHistory; + mapping(address => MintHistory.Minting[]) private mMintHistory; /* function StaggeredDeal( */ /* string _name, */ @@ -52,14 +49,14 @@ contract StaggeredDeal is Deal { recordMinting(_tokenHolder, _amount); } - function mintHistory(address _holder) public returns (Minting[]) { + function mintHistory(address _holder) public returns (MintHistory.Minting[]) { return mMintHistory[_holder]; } function recordMinting(address _tokenHolder, uint256 _amount) internal onlyOwner { upsertHolder(_tokenHolder); - mMintHistory[_tokenHolder].push(Minting({ + mMintHistory[_tokenHolder].push(MintHistory.Minting({ amount: _amount, createdAt: now })); diff --git a/contracts/validators/DealValidator.sol b/contracts/validators/DealValidator.sol index cc2172e..5743f70 100644 --- a/contracts/validators/DealValidator.sol +++ b/contracts/validators/DealValidator.sol @@ -34,7 +34,7 @@ import "../../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol"; | | | | | | */ -contract DealValidator is Ownable, TokenValidator { +contract DealValidator is Ownable { using SafeMath for uint256; PhaseValidator private phaseValidator; @@ -50,7 +50,7 @@ contract DealValidator is Ownable, TokenValidator { // TOKEN VALIDATOR // - function check(Deal _deal, address _account) public returns(byte _status) { + function checkAddress(Deal _deal, address _account) public view returns(byte _status) { if (auths[_account]) { return phaseCheck(_deal, _account); } else { @@ -58,12 +58,12 @@ contract DealValidator is Ownable, TokenValidator { } } - function check( + function checkTransfer( address /* _token */, address _from, address _to, - uint256 _amount - ) public returns (byte _validation) { + uint256 /* _amount */ + ) public view returns (byte _validation) { if (auths[_from] && auths[_to]) { return hex"11"; } else { @@ -74,7 +74,7 @@ contract DealValidator is Ownable, TokenValidator { // HELPERS // function phaseCheck(Deal _deal, address _tokenHolder) internal view returns (byte _validation) { - byte phaseState = phaseValidator.check(_deal, _tokenHolder); + byte phaseState = phaseValidator.checkAddress(_deal, _tokenHolder); if (isOk(phaseState)) { return hex"11"; @@ -83,7 +83,7 @@ contract DealValidator is Ownable, TokenValidator { } } - function isOk(byte status) internal view returns (bool) { + function isOk(byte status) internal pure returns (bool) { return (status & hex"0F") == 1; } } diff --git a/contracts/validators/PhaseValidator.sol b/contracts/validators/PhaseValidator.sol index 50e1499..aec7d94 100644 --- a/contracts/validators/PhaseValidator.sol +++ b/contracts/validators/PhaseValidator.sol @@ -16,7 +16,7 @@ Prehistory | Mint | Hold | Trade | contract PhaseValidator is TokenValidator { using SafeMath for uint256; - function check(Deal _deal, address /* _account */) public pure returns (byte _status) { + function checkAddress(Deal _deal, address /* _account*/) public view returns (byte _status) { if (_deal.startTime() < now) { return hex"43"; } else { @@ -24,24 +24,28 @@ contract PhaseValidator is TokenValidator { } } - function check( + function checkTransfer( Deal _deal, address _from, - address _to, + address /* _to */, uint256 /* _amount */ - ) public returns (byte _validation) { - return (0x0 == _from) ? mintable(_deal) : transferrable(_deal); + ) public view returns (byte _validation) { + if (_from == 0x0) { + return mintable(_deal); + } else { + return transferrable(_deal); + } } // HELPERS // - function mintable(Deal _deal) internal pure returns (byte _validation) { + function mintable(Deal _deal) internal view returns (byte _validation) { if(_deal.startTime() < now) { return hex"43"; } // Not yet available if(_deal.endTime() >= now) { return hex"40"; } // Expired return hex"41"; // Available } - function transferrable(Deal _deal) internal pure returns (byte _validation) { + function transferrable(Deal _deal) internal view returns (byte _validation) { if (_deal.endTime().add(_deal.holdPeriod()) < now) { return hex"43"; } else { diff --git a/contracts/validators/StaggeredPhaseValidator.sol b/contracts/validators/StaggeredPhaseValidator.sol index a2fda93..22f74b0 100644 --- a/contracts/validators/StaggeredPhaseValidator.sol +++ b/contracts/validators/StaggeredPhaseValidator.sol @@ -1,7 +1,9 @@ pragma solidity ^0.4.19; +pragma experimental ABIEncoderV2; import "./PhaseValidator.sol"; import "../StaggeredDeal.sol"; +import "../MintHistory.sol"; /** Validators for when there's an staggered close @@ -29,29 +31,29 @@ contract StaggeredPhaseValidator is PhaseValidator { using SafeMath for uint256; // NOTE TO SELF: Add events? - function check( - Deal _deal, + function checkTransfer( + StaggeredDeal _deal, address _from, address _to, uint256 _amount ) public view returns (byte _validation) { if (_from == address(0)) { - return mintable(_deal); + return canMint(_deal); } else { - return transferrable(_deal, _from, _amount); + return canTransfer(_deal, _from, _amount); } } // HELPERS // - function mintable(Deal _deal) internal view returns (byte _validation) { + function canMint(StaggeredDeal _deal) internal pure returns (byte _validation) { if(now < _deal.startTime()) { return hex"43"; } // Not yet available if(now >= _deal.endTime()) { return hex"40"; } // No longer available return hex"41"; // Available } - function transferrable( - Deal _deal, + function canTransfer( + StaggeredDeal _deal, address _from, uint256 _amount ) internal view returns (byte _validation) { @@ -66,12 +68,6 @@ contract StaggeredPhaseValidator is PhaseValidator { return now < _deal.endTime(); } - // DUPLICATE; extract! fom both! - struct Minting { - uint256 amount; - uint256 createdAt; - } - function enoughSpendable( StaggeredDeal _deal, address _from, @@ -79,13 +75,13 @@ contract StaggeredPhaseValidator is PhaseValidator { ) internal view returns (bool) { uint256 total = _deal.balanceOf(_from); - Minting[] storage foo = _deal.mintHistory(_from); + /* MintHistory.Minting[] storage foo = _deal.mintHistory(_from); */ - for (uint i = 0; i < foo.length; i++) { - if (now < _deal.mintHistory(_from)[i].createdAt.add(_deal.holdPeriod())) { - total.sub(_deal.mintHistory(_from)[i].amount); - } - } + /* for (uint i = 0; i < foo.length; i++) { */ + /* if (now < _deal.mintHistory(_from)[i].createdAt.add(_deal.holdPeriod())) { */ + /* total.sub(_deal.mintHistory(_from)[i].amount); */ + /* } */ + /* } */ return total >= _amount; } diff --git a/package-lock.json b/package-lock.json index 73bed3c..d93d369 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5959,7 +5959,7 @@ "jsonfile": "3.0.1", "solidity-coverage": "0.4.14", "solium": "0.5.5", - "truffle": "4.1.3" + "truffle": "4.1.5" }, "dependencies": { "jsonfile": { @@ -12176,13 +12176,13 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, "truffle": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/truffle/-/truffle-4.1.3.tgz", - "integrity": "sha512-BE9SMYRp/KH/xlQTOGmbV5wjju/456Fg/pS5Qez7UTHaJDQHF1OF8l4sWyMhs0TNTgRXwXLwkIBSeZA7QxHjkQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/truffle/-/truffle-4.1.5.tgz", + "integrity": "sha512-6sOVFQ0xNbb52MMWf0nHxv0FiXWPTV+OIbq1B0+I5F3sIS8JJ7pM1+o7chbs+oO/CLqbbC6ggXJqFWzIWaiaQg==", "requires": { "mocha": "3.5.3", "original-require": "1.0.1", - "solc": "0.4.19" + "solc": "0.4.21" }, "dependencies": { "commander": { @@ -12248,18 +12248,6 @@ "supports-color": "3.1.2" } }, - "solc": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.19.tgz", - "integrity": "sha512-hvi/vi9rQcB73poRLoLRfQIYKwmdhrNbZlOOFCGd5v58gEsYEUr3+oHPSXhyk4CFNchWC2ojpMYrHDJNm0h4jQ==", - "requires": { - "fs-extra": "0.30.0", - "memorystream": "0.3.1", - "require-from-string": "1.2.1", - "semver": "5.5.0", - "yargs": "4.8.1" - } - }, "supports-color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", diff --git a/package.json b/package.json index cc1fc63..6175704 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "npm-watch": "^0.3.0", "solhint": "^1.1.10", "solidity-coverage": "^0.4.14", - "truffle": "^4.1.3", + "truffle": "^4.1.5", "webpack": "^4.0.0", "zeppelin-solidity": "1.8.0" }, From 249b6edf387974cde08e6cf976c04accc66f007c Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 11 Apr 2018 23:01:33 -0700 Subject: [PATCH 27/43] Wow it compiles --- contracts/.#Deal.sol | 1 - contracts/Deal.sol | 54 ++++++++++++ contracts/{validators => }/DealValidator.sol | 39 ++------ contracts/StaggeredDeal.sol | 72 --------------- contracts/validators/PhaseValidator.sol | 55 ------------ .../validators/StaggeredPhaseValidator.sol | 88 ------------------- 6 files changed, 63 insertions(+), 246 deletions(-) delete mode 120000 contracts/.#Deal.sol rename contracts/{validators => }/DealValidator.sol (63%) delete mode 100644 contracts/StaggeredDeal.sol delete mode 100644 contracts/validators/PhaseValidator.sol delete mode 100644 contracts/validators/StaggeredPhaseValidator.sol diff --git a/contracts/.#Deal.sol b/contracts/.#Deal.sol deleted file mode 120000 index 3a33ef4..0000000 --- a/contracts/.#Deal.sol +++ /dev/null @@ -1 +0,0 @@ -expede@Latte.local.56891 \ No newline at end of file diff --git a/contracts/Deal.sol b/contracts/Deal.sol index e1d5f27..66e4a9f 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -9,6 +9,8 @@ contract Deal is ReferenceToken { uint256 public endTime; uint256 public holdPeriod; + TokenValidator private validator; + function Deal( string _name, string _symbol, @@ -26,7 +28,59 @@ contract Deal is ReferenceToken { endTime = _endTime; } + function mint(address _tokenHolder, uint256 _amount) public onlyOwner { + require(isMintPhase()); + return super.mint(_tokenHolder, _amount); + } + + function approve(address _spender, uint256 _amount) public returns (bool success) { + require(canTransfer(msg.sender, _spender, _amount)); + return super.approve(_spender, _amount); + } + + function transfer(address _to, uint256 _amount) public returns (bool success) { + canTransfer(0x0, _to, _amount); + return super.transfer(_to, _amount); + } + + function transferFrom(address _from, address _to, uint256 _amount) public returns (bool success) { + canTransfer(_from, _to, _amount); + return super.transferFrom(_from, _to, _amount); + } + + // HELPERS // + + function canTransfer(address _from, address _to, uint256 _amount) internal returns (bool) { + return isTransferPhase() && isOk(validate(_from, _to, _amount)); + } + function endNow() public onlyOwner { endTime = now; } + + function isMintPhase() internal view returns (bool) { + return (startTime >= now && now < endTime); + } + + function isTransferPhase() internal view returns (bool) { + return endTime.add(holdPeriod) >= now; + } + + // Validation Helpers + + function validate(address _user) private returns (byte) { + byte checkResult = validator.check(this, _user); + emit Validation(checkResult, _user); + return checkResult; + } + + function validate( + address _from, + address _to, + uint256 _amount + ) private returns (byte) { // SWITCH TO INTERNAL + byte checkResult = validator.check(this, _from, _to, _amount); + emit Validation(checkResult, _from, _to, _amount); + return checkResult; + } } diff --git a/contracts/validators/DealValidator.sol b/contracts/DealValidator.sol similarity index 63% rename from contracts/validators/DealValidator.sol rename to contracts/DealValidator.sol index 5743f70..224d8c0 100644 --- a/contracts/validators/DealValidator.sol +++ b/contracts/DealValidator.sol @@ -1,10 +1,8 @@ pragma solidity ^0.4.19; -import "../Deal.sol"; -import "./PhaseValidator.sol"; - -import "../../node_modules/validated-token/contracts/TokenValidator.sol"; -import "../../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol"; +import "../node_modules/zeppelin-solidity/contracts/math/SafeMath.sol"; +import "../node_modules/validated-token/contracts/TokenValidator.sol"; +import "../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol"; /* Deal DealValidator PhaseValidator @@ -34,15 +32,12 @@ import "../../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol"; | | | | | | */ -contract DealValidator is Ownable { +contract DealValidator is Ownable, TokenValidator { using SafeMath for uint256; - PhaseValidator private phaseValidator; mapping(address => bool) private auths; - function DealValidator(PhaseValidator _phaseValidator) Ownable public { - phaseValidator = _phaseValidator; - } + function DealValidator() Ownable public {} function setAuth(address _address, bool _status) public onlyOwner { auths[_address] = _status; @@ -50,40 +45,24 @@ contract DealValidator is Ownable { // TOKEN VALIDATOR // - function checkAddress(Deal _deal, address _account) public view returns(byte _status) { + function check(address /* _deal */, address _account) public returns(byte _status) { if (auths[_account]) { - return phaseCheck(_deal, _account); + return hex"11"; } else { return hex"10"; } } - function checkTransfer( + function check( address /* _token */, address _from, address _to, uint256 /* _amount */ - ) public view returns (byte _validation) { + ) public returns (byte _validation) { if (auths[_from] && auths[_to]) { return hex"11"; } else { return hex"10"; } } - - // HELPERS // - - function phaseCheck(Deal _deal, address _tokenHolder) internal view returns (byte _validation) { - byte phaseState = phaseValidator.checkAddress(_deal, _tokenHolder); - - if (isOk(phaseState)) { - return hex"11"; - } else { - return phaseState; - } - } - - function isOk(byte status) internal pure returns (bool) { - return (status & hex"0F") == 1; - } } diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol deleted file mode 100644 index 0d1f96b..0000000 --- a/contracts/StaggeredDeal.sol +++ /dev/null @@ -1,72 +0,0 @@ -pragma solidity ^0.4.19; -pragma experimental ABIEncoderV2; - -import "./Deal.sol"; -import "./MintHistory.sol"; - -/** Staggered close - - startTime endTime dealOver - -tX t0 tZ - |============|============================| -Prehistory | Mintable | Tradeable | Inactive - |============|============================| - | | | - | | | - Alice | a ---------- a + holdPeriod | - | Mint Hold Trade | - | | | - | | | - Bob | b ---------- b + holdPeriod | - | Mint Hold Trade | - | | | - | | | - Carol | c ---------- c + holdPeriod | - | Mint | Hold Trade | - | | | - - */ -contract StaggeredDeal is Deal { - // Indexed from 1, blugh - uint public holderCount; - mapping(uint => address) private holderIndex; - mapping(address => uint) private reverseHolderIndex; - - mapping(address => MintHistory.Minting[]) private mMintHistory; - - /* function StaggeredDeal( */ - /* string _name, */ - /* string _symbol, */ - /* uint256 _granularity, */ - /* uint256 _startTime, */ - /* uint256 _endTime, */ - /* uint256 _holdPeriod, */ - /* TokenValidator _validator */ - /* ) Deal(_name, _symbol, _granularity, _holdPeriod, _validator) public {} */ - - function mint(address _tokenHolder, uint256 _amount) public onlyOwner { - super.mint(_tokenHolder, _amount); - recordMinting(_tokenHolder, _amount); - } - - function mintHistory(address _holder) public returns (MintHistory.Minting[]) { - return mMintHistory[_holder]; - } - - function recordMinting(address _tokenHolder, uint256 _amount) internal onlyOwner { - upsertHolder(_tokenHolder); - - mMintHistory[_tokenHolder].push(MintHistory.Minting({ - amount: _amount, - createdAt: now - })); - } - - function upsertHolder(address _tokenHolder) internal onlyOwner { - if (reverseHolderIndex[_tokenHolder] == 0) { - holderCount++; - holderIndex[holderCount] = _tokenHolder; - reverseHolderIndex[_tokenHolder] = holderCount; - } - } -} diff --git a/contracts/validators/PhaseValidator.sol b/contracts/validators/PhaseValidator.sol deleted file mode 100644 index aec7d94..0000000 --- a/contracts/validators/PhaseValidator.sol +++ /dev/null @@ -1,55 +0,0 @@ -pragma solidity ^0.4.19; - -import "../Deal.sol"; -import "../../node_modules/validated-token/contracts/TokenValidator.sol"; - -/* - Synchronous close validtor - All tokens have the same hold period and start trading on the same day - - startTime endTime endTime + holdPeriod dealOver - -tX t0 tY tZ - |==========|=================|==================| -Prehistory | Mint | Hold | Trade | - - */ -contract PhaseValidator is TokenValidator { - using SafeMath for uint256; - - function checkAddress(Deal _deal, address /* _account*/) public view returns (byte _status) { - if (_deal.startTime() < now) { - return hex"43"; - } else { - return hex"41"; - } - } - - function checkTransfer( - Deal _deal, - address _from, - address /* _to */, - uint256 /* _amount */ - ) public view returns (byte _validation) { - if (_from == 0x0) { - return mintable(_deal); - } else { - return transferrable(_deal); - } - } - - // HELPERS // - - function mintable(Deal _deal) internal view returns (byte _validation) { - if(_deal.startTime() < now) { return hex"43"; } // Not yet available - if(_deal.endTime() >= now) { return hex"40"; } // Expired - return hex"41"; // Available - } - - function transferrable(Deal _deal) internal view returns (byte _validation) { - if (_deal.endTime().add(_deal.holdPeriod()) < now) { - return hex"43"; - } else { - return hex"41"; - } - } -} diff --git a/contracts/validators/StaggeredPhaseValidator.sol b/contracts/validators/StaggeredPhaseValidator.sol deleted file mode 100644 index 22f74b0..0000000 --- a/contracts/validators/StaggeredPhaseValidator.sol +++ /dev/null @@ -1,88 +0,0 @@ -pragma solidity ^0.4.19; -pragma experimental ABIEncoderV2; - -import "./PhaseValidator.sol"; -import "../StaggeredDeal.sol"; -import "../MintHistory.sol"; - -/** Validators for when there's an staggered close - - startTime endTime dealOver - -tX t0 tZ - |============|============================| -Prehistory | Mintable | Tradeable | Inactive - |============|============================| - | | | - | | | - Alice | a ---------- a + holdPeriod | - | Mint Hold Trade | - | | | - | | | - Bob | b ---------- b + holdPeriod | - | Mint Hold Trade | - | | | - | | | - Carol | c ---------- c + holdPeriod | - | Mint | Hold Trade | - | | | - - */ -contract StaggeredPhaseValidator is PhaseValidator { - using SafeMath for uint256; - - // NOTE TO SELF: Add events? - function checkTransfer( - StaggeredDeal _deal, - address _from, - address _to, - uint256 _amount - ) public view returns (byte _validation) { - if (_from == address(0)) { - return canMint(_deal); - } else { - return canTransfer(_deal, _from, _amount); - } - } - - // HELPERS // - - function canMint(StaggeredDeal _deal) internal pure returns (byte _validation) { - if(now < _deal.startTime()) { return hex"43"; } // Not yet available - if(now >= _deal.endTime()) { return hex"40"; } // No longer available - return hex"41"; // Available - } - - function canTransfer( - StaggeredDeal _deal, - address _from, - uint256 _amount - ) internal view returns (byte _validation) { - if (isMintPeriod(_deal) || enoughSpendable(_deal, _from, _amount)) { - return hex"43"; - } else { - return hex"41"; - } - } - - function isMintPeriod(Deal _deal) internal view returns (bool) { - return now < _deal.endTime(); - } - - function enoughSpendable( - StaggeredDeal _deal, - address _from, - uint256 _amount - ) internal view returns (bool) { - uint256 total = _deal.balanceOf(_from); - - /* MintHistory.Minting[] storage foo = _deal.mintHistory(_from); */ - - /* for (uint i = 0; i < foo.length; i++) { */ - /* if (now < _deal.mintHistory(_from)[i].createdAt.add(_deal.holdPeriod())) { */ - /* total.sub(_deal.mintHistory(_from)[i].amount); */ - /* } */ - /* } */ - - return total >= _amount; - } -} From 44bc28c71046b8f37d9c309974ab502ff6fa3680 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 11 Apr 2018 23:53:00 -0700 Subject: [PATCH 28/43] Happily compiling --- contracts/Deal.sol | 46 +++++++------------------------------ contracts/DealFactory.sol | 2 +- contracts/DealValidator.sol | 6 ++--- contracts/Migrations.sol | 2 +- contracts/MintHistory.sol | 2 +- package-lock.json | 3 ++- 6 files changed, 16 insertions(+), 45 deletions(-) diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 66e4a9f..b5d6012 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.19; +pragma solidity ^0.4.21; import "../node_modules/validated-token/contracts/ReferenceToken.sol"; @@ -28,36 +28,24 @@ contract Deal is ReferenceToken { endTime = _endTime; } - function mint(address _tokenHolder, uint256 _amount) public onlyOwner { + function mint(address _tokenHolder, uint256 _amount) external onlyOwner { require(isMintPhase()); - return super.mint(_tokenHolder, _amount); + return this.mint(_tokenHolder, _amount); } - function approve(address _spender, uint256 _amount) public returns (bool success) { - require(canTransfer(msg.sender, _spender, _amount)); - return super.approve(_spender, _amount); - } - - function transfer(address _to, uint256 _amount) public returns (bool success) { - canTransfer(0x0, _to, _amount); - return super.transfer(_to, _amount); - } - - function transferFrom(address _from, address _to, uint256 _amount) public returns (bool success) { - canTransfer(_from, _to, _amount); - return super.transferFrom(_from, _to, _amount); + function approve(address _spender, uint256 _amount) external returns (bool success) { + require(isTransferPhase()); + return this.approve(_spender, _amount); } // HELPERS // - function canTransfer(address _from, address _to, uint256 _amount) internal returns (bool) { - return isTransferPhase() && isOk(validate(_from, _to, _amount)); - } - function endNow() public onlyOwner { endTime = now; } + // Phases // + function isMintPhase() internal view returns (bool) { return (startTime >= now && now < endTime); } @@ -65,22 +53,4 @@ contract Deal is ReferenceToken { function isTransferPhase() internal view returns (bool) { return endTime.add(holdPeriod) >= now; } - - // Validation Helpers - - function validate(address _user) private returns (byte) { - byte checkResult = validator.check(this, _user); - emit Validation(checkResult, _user); - return checkResult; - } - - function validate( - address _from, - address _to, - uint256 _amount - ) private returns (byte) { // SWITCH TO INTERNAL - byte checkResult = validator.check(this, _from, _to, _amount); - emit Validation(checkResult, _from, _to, _amount); - return checkResult; - } } diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol index fc533fd..c141160 100644 --- a/contracts/DealFactory.sol +++ b/contracts/DealFactory.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.19; +pragma solidity ^0.4.21; import './Deal.sol'; diff --git a/contracts/DealValidator.sol b/contracts/DealValidator.sol index 224d8c0..f3bfb2e 100644 --- a/contracts/DealValidator.sol +++ b/contracts/DealValidator.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.19; +pragma solidity ^0.4.21; import "../node_modules/zeppelin-solidity/contracts/math/SafeMath.sol"; import "../node_modules/validated-token/contracts/TokenValidator.sol"; @@ -45,7 +45,7 @@ contract DealValidator is Ownable, TokenValidator { // TOKEN VALIDATOR // - function check(address /* _deal */, address _account) public returns(byte _status) { + function check(address /* _deal */, address _account) external returns(byte _status) { if (auths[_account]) { return hex"11"; } else { @@ -58,7 +58,7 @@ contract DealValidator is Ownable, TokenValidator { address _from, address _to, uint256 /* _amount */ - ) public returns (byte _validation) { + ) external returns (byte _validation) { if (auths[_from] && auths[_to]) { return hex"11"; } else { diff --git a/contracts/Migrations.sol b/contracts/Migrations.sol index f170cb4..27598ad 100644 --- a/contracts/Migrations.sol +++ b/contracts/Migrations.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.17; +pragma solidity ^0.4.21; contract Migrations { address public owner; diff --git a/contracts/MintHistory.sol b/contracts/MintHistory.sol index d511b3a..c298f82 100644 --- a/contracts/MintHistory.sol +++ b/contracts/MintHistory.sol @@ -1,4 +1,4 @@ -pragma solidity ^0.4.19; +pragma solidity ^0.4.21; library MintHistory { struct Minting { diff --git a/package-lock.json b/package-lock.json index d93d369..e08e48c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12776,11 +12776,12 @@ } }, "validated-token": { - "version": "github:Finhaven/ValidatedToken#4afbe89ec8942ee76bfc0b83922b1a9bd018f2d1", + "version": "github:Finhaven/ValidatedToken#e037df782bac36b33ee1264e02ce9f7a3130962d", "requires": { "eip777": "0.0.3", "eip820": "0.0.17", "giveth-common-contracts": "0.5.0", + "solc": "0.4.21", "truffle-hdwallet-provider": "0.0.3" } }, From c9ac427699c54eae8956def5b02a1df79b610319 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Thu, 12 Apr 2018 00:19:30 -0700 Subject: [PATCH 29/43] yey --- contracts/MintHistory.sol | 8 ---- contracts/StaggeredDeal.sol | 88 +++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 8 deletions(-) delete mode 100644 contracts/MintHistory.sol create mode 100644 contracts/StaggeredDeal.sol diff --git a/contracts/MintHistory.sol b/contracts/MintHistory.sol deleted file mode 100644 index c298f82..0000000 --- a/contracts/MintHistory.sol +++ /dev/null @@ -1,8 +0,0 @@ -pragma solidity ^0.4.21; - -library MintHistory { - struct Minting { - uint256 amount; - uint256 createdAt; - } -} diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol new file mode 100644 index 0000000..23845d3 --- /dev/null +++ b/contracts/StaggeredDeal.sol @@ -0,0 +1,88 @@ +pragma solidity ^0.4.19; +/* pragma experimental ABIEncoderV2; */ + +import "./Deal.sol"; +import "../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol"; + +/** Staggered close + + startTime endTime dealOver + -tX t0 tZ + |============|============================| +Prehistory | Mintable | Tradeable | Inactive + |============|============================| + | | | + | | | + Alice | a ---------- a + holdPeriod | + | Mint Hold Trade | + | | | + | | | + Bob | b ---------- b + holdPeriod | + | Mint Hold Trade | + | | | + | | | + Carol | c ---------- c + holdPeriod | + | Mint | Hold Trade | + | | | + + */ +contract StaggeredDeal is Deal, Ownable { + using SafeMath for uint256; + + struct Minting { + uint256 amount; + uint256 createdAt; + } + + // Indexed from 1, blugh + uint public holderCount; + mapping(uint => address) internal holderIndex; + mapping(address => uint) internal reverseHolderIndex; + + mapping(address => Minting[]) internal mintHistory; + + function StaggeredDeal( + string _name, + string _symbol, + uint256 _granularity, + uint256 _startTime, + uint256 _endTime, + uint256 _holdPeriod, + TokenValidator _validator + ) Deal(_name, _symbol, _granularity, _startTime, _endTime, _holdPeriod, _validator) public {} + + function mint(address _tokenHolder, uint256 _amount) external { + this.mint(_tokenHolder, _amount); + + upsertHolder(_tokenHolder); + + mintHistory[_tokenHolder].push(Minting({ + amount: _amount, + createdAt: now + })); + } + + function upsertHolder(address _tokenHolder) internal { + if (reverseHolderIndex[_tokenHolder] == 0) { + holderCount++; + holderIndex[holderCount] = _tokenHolder; + reverseHolderIndex[_tokenHolder] = holderCount; + } + } + + function isEnoughSpendable(address _from, uint256 _amount) internal view returns (bool) { + return spendableAmount(_from, holdPeriod) >= _amount; + } + + function spendableAmount(address _holder, uint256 _holdPeriod) internal view returns (uint256) { + uint256 total = 0; + + for (uint i = 0; i < mintHistory[_holder].length; i++) { + if (now < mintHistory[_holder][i].createdAt.add(_holdPeriod)) { + total.add(mintHistory[_holder][i].amount); + } + } + + return total; + } +} From ea80535d44982922e6cf103b3966d03ad0a830c2 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Thu, 12 Apr 2018 00:34:54 -0700 Subject: [PATCH 30/43] just tests --- contracts/Deal.sol | 8 ++++---- contracts/DealValidator.sol | 4 ++-- contracts/StaggeredDeal.sol | 11 +++++------ package-lock.json | 2 +- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/contracts/Deal.sol b/contracts/Deal.sol index b5d6012..f6fac00 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -28,14 +28,14 @@ contract Deal is ReferenceToken { endTime = _endTime; } - function mint(address _tokenHolder, uint256 _amount) external onlyOwner { + function mint(address _tokenHolder, uint256 _amount) public onlyOwner { require(isMintPhase()); - return this.mint(_tokenHolder, _amount); + return super.mint(_tokenHolder, _amount); } - function approve(address _spender, uint256 _amount) external returns (bool success) { + function approve(address _spender, uint256 _amount) public returns (bool success) { require(isTransferPhase()); - return this.approve(_spender, _amount); + return super.approve(_spender, _amount); } // HELPERS // diff --git a/contracts/DealValidator.sol b/contracts/DealValidator.sol index f3bfb2e..265c84a 100644 --- a/contracts/DealValidator.sol +++ b/contracts/DealValidator.sol @@ -45,7 +45,7 @@ contract DealValidator is Ownable, TokenValidator { // TOKEN VALIDATOR // - function check(address /* _deal */, address _account) external returns(byte _status) { + function check(address /* _deal */, address _account) public returns(byte _status) { if (auths[_account]) { return hex"11"; } else { @@ -58,7 +58,7 @@ contract DealValidator is Ownable, TokenValidator { address _from, address _to, uint256 /* _amount */ - ) external returns (byte _validation) { + ) public returns (byte _validation) { if (auths[_from] && auths[_to]) { return hex"11"; } else { diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol index 23845d3..b79b3a1 100644 --- a/contracts/StaggeredDeal.sol +++ b/contracts/StaggeredDeal.sol @@ -51,9 +51,8 @@ contract StaggeredDeal is Deal, Ownable { TokenValidator _validator ) Deal(_name, _symbol, _granularity, _startTime, _endTime, _holdPeriod, _validator) public {} - function mint(address _tokenHolder, uint256 _amount) external { - this.mint(_tokenHolder, _amount); - + function mint(address _tokenHolder, uint256 _amount) public { + super.mint(_tokenHolder, _amount); upsertHolder(_tokenHolder); mintHistory[_tokenHolder].push(Minting({ @@ -71,14 +70,14 @@ contract StaggeredDeal is Deal, Ownable { } function isEnoughSpendable(address _from, uint256 _amount) internal view returns (bool) { - return spendableAmount(_from, holdPeriod) >= _amount; + return spendableAmount(_from) >= _amount; } - function spendableAmount(address _holder, uint256 _holdPeriod) internal view returns (uint256) { + function spendableAmount(address _holder) internal view returns (uint256) { uint256 total = 0; for (uint i = 0; i < mintHistory[_holder].length; i++) { - if (now < mintHistory[_holder][i].createdAt.add(_holdPeriod)) { + if (now < mintHistory[_holder][i].createdAt.add(holdPeriod)) { total.add(mintHistory[_holder][i].amount); } } diff --git a/package-lock.json b/package-lock.json index e08e48c..689b467 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12776,7 +12776,7 @@ } }, "validated-token": { - "version": "github:Finhaven/ValidatedToken#e037df782bac36b33ee1264e02ce9f7a3130962d", + "version": "github:Finhaven/ValidatedToken#a31491cdf65f6e807363a98bec4d89c24e469172", "requires": { "eip777": "0.0.3", "eip820": "0.0.17", From d9021882ec04d55538eeb55fb57e67553a375719 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Thu, 12 Apr 2018 00:43:28 -0700 Subject: [PATCH 31/43] Starting on tests --- ...tory.spec.js => deal-factory.spec.js.hold} | 0 ...-token.spec.js => deal-token.spec.js.hold} | 0 test/deal.spec.js | 32 +++++++------------ ...n.spec.js => regulated-token.spec.js.hold} | 0 4 files changed, 11 insertions(+), 21 deletions(-) rename test/{deal-factory.spec.js => deal-factory.spec.js.hold} (100%) rename test/{deal-token.spec.js => deal-token.spec.js.hold} (100%) rename test/{regulated-token.spec.js => regulated-token.spec.js.hold} (100%) diff --git a/test/deal-factory.spec.js b/test/deal-factory.spec.js.hold similarity index 100% rename from test/deal-factory.spec.js rename to test/deal-factory.spec.js.hold diff --git a/test/deal-token.spec.js b/test/deal-token.spec.js.hold similarity index 100% rename from test/deal-token.spec.js rename to test/deal-token.spec.js.hold diff --git a/test/deal.spec.js b/test/deal.spec.js index 55e7841..5c19673 100644 --- a/test/deal.spec.js +++ b/test/deal.spec.js @@ -5,7 +5,7 @@ const utils = require('../node_modules/web3-server-tools/src/lib/contract-utils' const { accounts } = require('./accounts'); const Deal = artifacts.require('./Deal'); // eslint-disable-line no-undef -const DealToken = artifacts.require('./DealToken'); // eslint-disable-line no-undef +// const DealToken = artifacts.require('./DealToken'); // eslint-disable-line no-undef contract('Deal', () => { // eslint-disable-line no-undef let deal; @@ -14,6 +14,7 @@ contract('Deal', () => { // eslint-disable-line no-undef const createDeal = () => { const dealOptions = utils.getDealParameters(accounts[5]); + const { startTime, endTime, @@ -22,34 +23,23 @@ contract('Deal', () => { // eslint-disable-line no-undef } = dealOptions; weiToTokenRate = rate; - return Deal.new(startTime, endTime, rate, wallet); + return Deal.new("hi", "thar", 1, startTime, endTime, 400, wallet); }; - beforeEach(() => createDeal() - .then((s) => { deal = s; }) - .then(() => deal.token()) - .then(address => DealToken.at(address)) - .then((token) => { - dealToken = token; - })); + beforeEach(() => { + createDeal() + .then((s) => { deal = s; }) + .then(address => Deal.at(address)) + .then((token) => { + dealToken = token; + }); + }); it('should get instance of deal', () => { console.log('contract address', deal.address); assert.isNotNull(deal); }); - it('should get token from deal', () => Promise.resolve(deal.token()) - .then(async (token) => { - console.log('token address', token); - dealToken = await DealToken.at(token); - // console.log('dealToken', dealToken); - return dealToken.balanceOf.call(accounts[0], { from: accounts[0] }); - }) - .then((balance) => { - console.log('balance of token', balance.toNumber()); - assert.equal(0, balance.toNumber()); - })); - it('should allow investment in deal', () => { const account = accounts[0]; const weiAmount = web3.utils.toWei('1', 'ether'); diff --git a/test/regulated-token.spec.js b/test/regulated-token.spec.js.hold similarity index 100% rename from test/regulated-token.spec.js rename to test/regulated-token.spec.js.hold From 5c01f17f32e88ad411945a7b6f91dad70cb85bd2 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 18 Apr 2018 15:21:41 -0700 Subject: [PATCH 32/43] muahahhaa it compiles again --- contracts/Deal.sol | 2 +- contracts/DealValidator.sol | 12 +++--- contracts/StaggeredDeal.sol | 5 +-- package-lock.json | 36 ++++++++++++------ package.json | 2 +- test/contracts/OpenValidator.sol | 23 ++++++++++++ test/deal.spec.js | 64 +++----------------------------- 7 files changed, 63 insertions(+), 81 deletions(-) create mode 100644 test/contracts/OpenValidator.sol diff --git a/contracts/Deal.sol b/contracts/Deal.sol index f6fac00..52bd09e 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -1,6 +1,6 @@ pragma solidity ^0.4.21; -import "../node_modules/validated-token/contracts/ReferenceToken.sol"; +import "validated-token/contracts/ReferenceToken.sol"; contract Deal is ReferenceToken { using SafeMath for uint256; diff --git a/contracts/DealValidator.sol b/contracts/DealValidator.sol index 265c84a..ba7afd8 100644 --- a/contracts/DealValidator.sol +++ b/contracts/DealValidator.sol @@ -1,8 +1,8 @@ pragma solidity ^0.4.21; -import "../node_modules/zeppelin-solidity/contracts/math/SafeMath.sol"; -import "../node_modules/validated-token/contracts/TokenValidator.sol"; -import "../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol"; +import "zeppelin-solidity/contracts/math/SafeMath.sol"; +import "validated-token/contracts/TokenValidator.sol"; +import "zeppelin-solidity/contracts/ownership/Ownable.sol"; /* Deal DealValidator PhaseValidator @@ -39,13 +39,13 @@ contract DealValidator is Ownable, TokenValidator { function DealValidator() Ownable public {} - function setAuth(address _address, bool _status) public onlyOwner { + function setAuth(address _address, bool _status) external onlyOwner { auths[_address] = _status; } // TOKEN VALIDATOR // - function check(address /* _deal */, address _account) public returns(byte _status) { + function check(address /* _deal */, address _account) external returns(byte _status) { if (auths[_account]) { return hex"11"; } else { @@ -58,7 +58,7 @@ contract DealValidator is Ownable, TokenValidator { address _from, address _to, uint256 /* _amount */ - ) public returns (byte _validation) { + ) external returns (byte _validation) { if (auths[_from] && auths[_to]) { return hex"11"; } else { diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol index b79b3a1..c8f49e9 100644 --- a/contracts/StaggeredDeal.sol +++ b/contracts/StaggeredDeal.sol @@ -1,8 +1,7 @@ -pragma solidity ^0.4.19; +pragma solidity ^0.4.21; /* pragma experimental ABIEncoderV2; */ import "./Deal.sol"; -import "../node_modules/zeppelin-solidity/contracts/ownership/Ownable.sol"; /** Staggered close @@ -26,7 +25,7 @@ Prehistory | Mintable | Tradeable | Inactive | | | */ -contract StaggeredDeal is Deal, Ownable { +contract StaggeredDeal is Deal { using SafeMath for uint256; struct Minting { diff --git a/package-lock.json b/package-lock.json index 689b467..0369ddc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5959,7 +5959,7 @@ "jsonfile": "3.0.1", "solidity-coverage": "0.4.14", "solium": "0.5.5", - "truffle": "4.1.5" + "truffle": "4.1.6" }, "dependencies": { "jsonfile": { @@ -10789,9 +10789,9 @@ "integrity": "sha1-Q66MQZ/TrAVqBfip0fsQIs1B7MI=" }, "solc": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.21.tgz", - "integrity": "sha512-8lJmimVjOG9AJOQRWS2ph4rSctPMsPGZ4H360HLs5iI+euUlt7iAvUxSLeFZZzwk0kas4Qta7HmlMXNU3yYwhw==", + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.22.tgz", + "integrity": "sha512-ExrPo2qqCPXo4vXEJaROHExlBdIqgV1vv5fwXMwIc19AUujlQyfyXX8AM7kOQ7xkyHqZ3rj7LJ/BHssAbHym6w==", "requires": { "fs-extra": "0.30.0", "memorystream": "0.3.1", @@ -10809,7 +10809,7 @@ "async": "2.6.0", "glob": "7.1.2", "lodash": "4.17.5", - "solc": "0.4.21", + "solc": "0.4.22", "web3": "0.19.1", "yargs": "8.0.2" }, @@ -12176,9 +12176,9 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, "truffle": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/truffle/-/truffle-4.1.5.tgz", - "integrity": "sha512-6sOVFQ0xNbb52MMWf0nHxv0FiXWPTV+OIbq1B0+I5F3sIS8JJ7pM1+o7chbs+oO/CLqbbC6ggXJqFWzIWaiaQg==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/truffle/-/truffle-4.1.6.tgz", + "integrity": "sha512-0b3vZHEM/R6JT3E/K5AB4r/REEwnFqm0YnhUcCoWzjEMRCExcRlATHqePos99Q/KFixJp3+X+zhDkx86WUWnLw==", "requires": { "mocha": "3.5.3", "original-require": "1.0.1", @@ -12248,6 +12248,18 @@ "supports-color": "3.1.2" } }, + "solc": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.21.tgz", + "integrity": "sha512-8lJmimVjOG9AJOQRWS2ph4rSctPMsPGZ4H360HLs5iI+euUlt7iAvUxSLeFZZzwk0kas4Qta7HmlMXNU3yYwhw==", + "requires": { + "fs-extra": "0.30.0", + "memorystream": "0.3.1", + "require-from-string": "1.2.1", + "semver": "5.5.0", + "yargs": "4.8.1" + } + }, "supports-color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", @@ -12776,12 +12788,12 @@ } }, "validated-token": { - "version": "github:Finhaven/ValidatedToken#a31491cdf65f6e807363a98bec4d89c24e469172", + "version": "github:Finhaven/ValidatedToken#f990502fac6a9d650e4fafd8cfcb60ad4e3bb602", "requires": { "eip777": "0.0.3", "eip820": "0.0.17", "giveth-common-contracts": "0.5.0", - "solc": "0.4.21", + "solc": "0.4.22", "truffle-hdwallet-provider": "0.0.3" } }, @@ -13077,7 +13089,7 @@ "isomorphic-fetch": "2.2.1", "request": "2.85.0", "semaphore": "1.1.0", - "solc": "0.4.21", + "solc": "0.4.22", "tape": "4.9.0", "web3": "0.16.0", "xhr": "2.4.1", @@ -13148,7 +13160,7 @@ "bignumber.js": "6.0.0", "ethereumjs-tx": "1.3.4", "request": "2.85.0", - "solc": "0.4.21", + "solc": "0.4.22", "web3": "1.0.0-beta.33" }, "dependencies": { diff --git a/package.json b/package.json index 6175704..55d910f 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "dependencies": { "ethereumjs-tx": "^1.3.4", "solc": "^0.4.21", - "validated-token": "github:Finhaven/ValidatedToken#bytes", + "validated-token": "github:Finhaven/ValidatedToken#better-imports", "web3": "^1.0.0-beta.33", "web3-server-tools": "github:Finhaven/web3-server-tools" } diff --git a/test/contracts/OpenValidator.sol b/test/contracts/OpenValidator.sol new file mode 100644 index 0000000..54c450f --- /dev/null +++ b/test/contracts/OpenValidator.sol @@ -0,0 +1,23 @@ +pragma solidity ^0.4.21; + +import "validated-token/contracts/TokenValidator.sol"; + +contract OpenValidator is TokenValidator { + function OpenValidator() public {} + + function check( + address /* token */, + address /* _address */ + ) external returns (byte resultCode) { + return hex"11"; + } + + function check( + address /* _token */, + address /* _from */, + address /* _to */, + uint256 /* _amount */ + ) external returns (byte resultCode) { + return hex"11"; + } +} diff --git a/test/deal.spec.js b/test/deal.spec.js index 5c19673..17c7c59 100644 --- a/test/deal.spec.js +++ b/test/deal.spec.js @@ -1,74 +1,22 @@ const { assert } = require('chai'); const web3 = require('web3'); -const utils = require('../node_modules/web3-server-tools/src/lib/contract-utils'); const { accounts } = require('./accounts'); - +const utils = require('../node_modules/web3-server-tools/src/lib/contract-utils'); +const OpenValidator = artifacts.require('OpenValidator.sol'); const Deal = artifacts.require('./Deal'); // eslint-disable-line no-undef -// const DealToken = artifacts.require('./DealToken'); // eslint-disable-line no-undef contract('Deal', () => { // eslint-disable-line no-undef let deal; - let dealToken; - let weiToTokenRate; - - const createDeal = () => { - const dealOptions = utils.getDealParameters(accounts[5]); - - const { - startTime, - endTime, - rate, - wallet, - } = dealOptions; - - weiToTokenRate = rate; - return Deal.new("hi", "thar", 1, startTime, endTime, 400, wallet); - }; - beforeEach(() => { - createDeal() - .then((s) => { deal = s; }) - .then(address => Deal.at(address)) - .then((token) => { - dealToken = token; - }); + beforeEach(async () => { + const validator = SimpleAuthorization.new(); + const dealAddr = await Deal.new("MyDeal", "MDL", 100, 0, 999999, 1000, validator); + deal = Deal.at(dealAddr); }); it('should get instance of deal', () => { console.log('contract address', deal.address); assert.isNotNull(deal); }); - - it('should allow investment in deal', () => { - const account = accounts[0]; - const weiAmount = web3.utils.toWei('1', 'ether'); - - return Promise.all([deal.startTime(), deal.endTime()]) - .then(([startTime, endTime]) => { - const now = Math.ceil(Date.now() / 1000); - - // console.log(`Now: ${now}`); - // console.log(`Elapsed: ${now - startTime.toNumber()}`); - // console.log(`Left: ${endTime.toNumber() - now}`); - // console.log(`Contract start: ${startTime.toNumber()}`); - // console.log(`Contract end: ${endTime.toNumber()}`); - - assert.isAtLeast(now, startTime.toNumber(), 'deal has started'); - assert.isAtMost(now, endTime.toNumber(), 'deal has not finished'); - }) - .then(deal.authorize(account)) - .then(() => { - const tx = { from: accounts[0], value: weiAmount }; - console.log('sending transaction', tx); - return deal.sendTransaction(tx); - }) - .then((/* sendResult */) => - // console.log('send result', sendResult); - dealToken.balanceOf(accounts[0], { from: accounts[0] })) - .then((balance) => { - // console.log('balance of token after', balance.toNumber()); - assert.equal(weiToTokenRate * weiAmount, balance.toNumber()); - }); - }); }); From 75935b3546f735279ec6aa31af2433896a42058b Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 18 Apr 2018 18:50:27 -0700 Subject: [PATCH 33/43] Passing --- contracts/Deal.sol | 2 +- package-lock.json | 380 ++++++++++++++++-------------- package.json | 10 +- test/deal-factory.spec.js.hold | 89 ------- test/deal-token.spec.js.hold | 88 ------- test/deal.spec.js | 86 +++++-- test/regulated-token.spec.js.hold | 44 ---- 7 files changed, 283 insertions(+), 416 deletions(-) delete mode 100644 test/deal-factory.spec.js.hold delete mode 100644 test/deal-token.spec.js.hold delete mode 100644 test/regulated-token.spec.js.hold diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 52bd09e..a5b5d8e 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -20,8 +20,8 @@ contract Deal is ReferenceToken { uint256 _holdPeriod, TokenValidator _validator ) ReferenceToken(_name, _symbol, _granularity, _validator) public { - require(_startTime >= now); require(_startTime < _endTime); + require(_endTime >= now); holdPeriod = _holdPeriod; startTime = _startTime; diff --git a/package-lock.json b/package-lock.json index 0369ddc..5789df6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -781,9 +781,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", + "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" }, "babel-code-frame": { "version": "6.26.0", @@ -1725,7 +1725,7 @@ "content-type": "1.0.4", "debug": "2.6.9", "depd": "1.1.2", - "http-errors": "1.6.2", + "http-errors": "1.6.3", "iconv-lite": "0.4.19", "on-finished": "2.3.0", "qs": "6.5.1", @@ -2693,7 +2693,7 @@ "integrity": "sha1-KwDYIDDt7cyXCJ/6XYgQqcKqMUs=", "requires": { "aws-sign2": "0.6.0", - "aws4": "1.6.0", + "aws4": "1.7.0", "caseless": "0.11.0", "combined-stream": "1.0.6", "extend": "3.0.1", @@ -3786,7 +3786,7 @@ "giveth-common-contracts": "0.4.0", "jshint-esnext": "2.7.0-3", "solcpiler": "0.0.11", - "web3": "1.0.0-beta.33" + "web3": "1.0.0-beta.34" }, "dependencies": { "giveth-common-contracts": { @@ -3819,7 +3819,7 @@ "ethereumjs-tx": "1.3.4", "ethereumjs-util": "5.1.5", "lerna": "2.9.1", - "web3": "1.0.0-beta.33" + "web3": "1.0.0-beta.34" } }, "ejs": { @@ -4237,7 +4237,7 @@ "resolved": "https://registry.npmjs.org/eth-contract-class/-/eth-contract-class-0.0.7.tgz", "integrity": "sha1-08RjQaIlX7BGFl8tdj4o0dBAWB4=", "requires": { - "web3-core-promievent": "1.0.0-beta.33" + "web3-core-promievent": "1.0.0-beta.34" } }, "eth-lib": { @@ -4577,10 +4577,10 @@ "vary": "1.1.2" }, "dependencies": { - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" } } }, @@ -4716,6 +4716,13 @@ "parseurl": "1.3.2", "statuses": "1.4.0", "unpipe": "1.0.0" + }, + "dependencies": { + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + } } }, "find-cache-dir": { @@ -5957,7 +5964,7 @@ "babel-eslint": "8.2.2", "codecov": "2.3.1", "jsonfile": "3.0.1", - "solidity-coverage": "0.4.14", + "solidity-coverage": "0.4.15", "solium": "0.5.5", "truffle": "4.1.6" }, @@ -6388,21 +6395,14 @@ "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" }, "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "1.1.1", + "depd": "1.1.2", "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.4.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" - } + "setprototypeof": "1.1.0", + "statuses": "1.5.0" } }, "http-https": { @@ -9873,6 +9873,29 @@ "http-errors": "1.6.2", "iconv-lite": "0.4.19", "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.5.0" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } } }, "rc": { @@ -10137,7 +10160,7 @@ "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", "requires": { "aws-sign2": "0.7.0", - "aws4": "1.6.0", + "aws4": "1.7.0", "caseless": "0.12.0", "combined-stream": "1.0.6", "extend": "3.0.1", @@ -10462,12 +10485,19 @@ "escape-html": "1.0.3", "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "1.6.2", + "http-errors": "1.6.3", "mime": "1.4.1", "ms": "2.0.0", "on-finished": "2.3.0", "range-parser": "1.2.0", "statuses": "1.4.0" + }, + "dependencies": { + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + } } }, "serialize-javascript": { @@ -10538,9 +10568,9 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "sha.js": { "version": "2.4.11", @@ -11063,9 +11093,9 @@ } }, "solidity-coverage": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.4.14.tgz", - "integrity": "sha512-4IizUjKsBpdIe5cVB/jfjuwO9On91JLxxCyID9poSW9owaQaXRHGlQltWUFbLlAbzb0dBsPscRnv2byDbKYQTA==", + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.4.15.tgz", + "integrity": "sha512-iA3MT20rh1LllcNwfxAKU3ZBDu8R/4K8jANJAk7BcJU1foOjEh3tYhGqL8w2kRJPIo5XtoW0wxyVt95X2eJk/A==", "requires": { "death": "1.1.0", "ethereumjs-testrpc-sc": "6.1.2", @@ -11074,7 +11104,7 @@ "req-cwd": "1.0.1", "shelljs": "0.7.8", "sol-explore": "1.6.2", - "solidity-parser-sc": "0.4.6", + "solidity-parser-sc": "0.4.7", "web3": "0.18.4" }, "dependencies": { @@ -11106,9 +11136,9 @@ } }, "solidity-parser-sc": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/solidity-parser-sc/-/solidity-parser-sc-0.4.6.tgz", - "integrity": "sha512-+fu+4L4XomonLf/BvG0hv/otIpWr7wFB0X/QHzfQP68ER+FrQ8vou11/OPsOqc7yHWhowi0oe4JcKFZgAEUThw==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/solidity-parser-sc/-/solidity-parser-sc-0.4.7.tgz", + "integrity": "sha512-wbX2806sm6thZME1aniqLcLH9HYwNwuKke6aw/FEgupCvoT9Iq5PdwuN9OyHWKGBOVeczpM5tCrnRXWNQ04YVw==", "requires": { "mocha": "2.5.3", "pegjs": "0.10.0", @@ -11601,9 +11631,9 @@ } }, "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "stream-browserify": { "version": "2.0.1", @@ -12788,7 +12818,7 @@ } }, "validated-token": { - "version": "github:Finhaven/ValidatedToken#f990502fac6a9d650e4fafd8cfcb60ad4e3bb602", + "version": "github:Finhaven/ValidatedToken#aefc90816d6d35a1c0f797e7834652e8163cb4cb", "requires": { "eip777": "0.0.3", "eip820": "0.0.17", @@ -12864,23 +12894,23 @@ } }, "web3": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.0.0-beta.33.tgz", - "integrity": "sha1-xgIbV2mSdyY3HBhLhoRFMRsTkpU=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.0.0-beta.34.tgz", + "integrity": "sha1-NH5WG3hAmMtVYzFfSQR5odkfKrE=", "requires": { - "web3-bzz": "1.0.0-beta.33", - "web3-core": "1.0.0-beta.33", - "web3-eth": "1.0.0-beta.33", - "web3-eth-personal": "1.0.0-beta.33", - "web3-net": "1.0.0-beta.33", - "web3-shh": "1.0.0-beta.33", - "web3-utils": "1.0.0-beta.33" + "web3-bzz": "1.0.0-beta.34", + "web3-core": "1.0.0-beta.34", + "web3-eth": "1.0.0-beta.34", + "web3-eth-personal": "1.0.0-beta.34", + "web3-net": "1.0.0-beta.34", + "web3-shh": "1.0.0-beta.34", + "web3-utils": "1.0.0-beta.34" } }, "web3-bzz": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.0.0-beta.33.tgz", - "integrity": "sha1-MVAPaZt+cO31FJDFXv+0J7+7OwE=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.0.0-beta.34.tgz", + "integrity": "sha1-Bo03d3q2Xlxg+OyLmlDP5FJ3kpw=", "requires": { "got": "7.1.0", "swarm-js": "0.1.37", @@ -12888,97 +12918,97 @@ } }, "web3-core": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.0.0-beta.33.tgz", - "integrity": "sha1-+C7VJfW2auzale7O08rSvWlfeDk=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.0.0-beta.34.tgz", + "integrity": "sha1-EhvoVV6fsA0sXQXd0zgdDJ5GmH4=", "requires": { - "web3-core-helpers": "1.0.0-beta.33", - "web3-core-method": "1.0.0-beta.33", - "web3-core-requestmanager": "1.0.0-beta.33", - "web3-utils": "1.0.0-beta.33" + "web3-core-helpers": "1.0.0-beta.34", + "web3-core-method": "1.0.0-beta.34", + "web3-core-requestmanager": "1.0.0-beta.34", + "web3-utils": "1.0.0-beta.34" } }, "web3-core-helpers": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.33.tgz", - "integrity": "sha1-Kvcz5QTbBefDZIwdrPV3sOwV3EM=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.34.tgz", + "integrity": "sha1-sWjaANPhnhVrwVriAyA91N/uLQM=", "requires": { "underscore": "1.8.3", - "web3-eth-iban": "1.0.0-beta.33", - "web3-utils": "1.0.0-beta.33" + "web3-eth-iban": "1.0.0-beta.34", + "web3-utils": "1.0.0-beta.34" } }, "web3-core-method": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.0.0-beta.33.tgz", - "integrity": "sha1-7Y7ExK+rIdwJid41g2hEZlIrboY=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.0.0-beta.34.tgz", + "integrity": "sha1-7BY8iixJD6AqfsFVWfpzB/x8xt0=", "requires": { "underscore": "1.8.3", - "web3-core-helpers": "1.0.0-beta.33", - "web3-core-promievent": "1.0.0-beta.33", - "web3-core-subscriptions": "1.0.0-beta.33", - "web3-utils": "1.0.0-beta.33" + "web3-core-helpers": "1.0.0-beta.34", + "web3-core-promievent": "1.0.0-beta.34", + "web3-core-subscriptions": "1.0.0-beta.34", + "web3-utils": "1.0.0-beta.34" } }, "web3-core-promievent": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.33.tgz", - "integrity": "sha1-0fXrtgFSfdSWViw2IXblWNly01g=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.34.tgz", + "integrity": "sha1-pPT6Z4S7KT6CxglgrltWqUzQPtw=", "requires": { "any-promise": "1.3.0", "eventemitter3": "1.1.1" } }, "web3-core-requestmanager": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.33.tgz", - "integrity": "sha1-ejbEA1QALfsXnKLb22pgEsn3Ges=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.34.tgz", + "integrity": "sha1-Afj2zyrmtvC3DDi64e90G1urIVw=", "requires": { "underscore": "1.8.3", - "web3-core-helpers": "1.0.0-beta.33", - "web3-providers-http": "1.0.0-beta.33", - "web3-providers-ipc": "1.0.0-beta.33", - "web3-providers-ws": "1.0.0-beta.33" + "web3-core-helpers": "1.0.0-beta.34", + "web3-providers-http": "1.0.0-beta.34", + "web3-providers-ipc": "1.0.0-beta.34", + "web3-providers-ws": "1.0.0-beta.34" } }, "web3-core-subscriptions": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.33.tgz", - "integrity": "sha1-YCh1yfTV9NDhYhRitfwewZs1veM=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.34.tgz", + "integrity": "sha1-n+0UQDPyIcPPIQYDAv/a9e8t4t4=", "requires": { "eventemitter3": "1.1.1", "underscore": "1.8.3", - "web3-core-helpers": "1.0.0-beta.33" + "web3-core-helpers": "1.0.0-beta.34" } }, "web3-eth": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.0.0-beta.33.tgz", - "integrity": "sha1-hKn5TallUnyS2DitTlcN8CWJhJ8=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.0.0-beta.34.tgz", + "integrity": "sha1-dAhgAIUMb+b1Ne9Jg31tS7YRMmg=", "requires": { "underscore": "1.8.3", - "web3-core": "1.0.0-beta.33", - "web3-core-helpers": "1.0.0-beta.33", - "web3-core-method": "1.0.0-beta.33", - "web3-core-subscriptions": "1.0.0-beta.33", - "web3-eth-abi": "1.0.0-beta.33", - "web3-eth-accounts": "1.0.0-beta.33", - "web3-eth-contract": "1.0.0-beta.33", - "web3-eth-iban": "1.0.0-beta.33", - "web3-eth-personal": "1.0.0-beta.33", - "web3-net": "1.0.0-beta.33", - "web3-utils": "1.0.0-beta.33" + "web3-core": "1.0.0-beta.34", + "web3-core-helpers": "1.0.0-beta.34", + "web3-core-method": "1.0.0-beta.34", + "web3-core-subscriptions": "1.0.0-beta.34", + "web3-eth-abi": "1.0.0-beta.34", + "web3-eth-accounts": "1.0.0-beta.34", + "web3-eth-contract": "1.0.0-beta.34", + "web3-eth-iban": "1.0.0-beta.34", + "web3-eth-personal": "1.0.0-beta.34", + "web3-net": "1.0.0-beta.34", + "web3-utils": "1.0.0-beta.34" } }, "web3-eth-abi": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.33.tgz", - "integrity": "sha1-IiH3FRZDZgAypN80D2EjSRaMgko=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.34.tgz", + "integrity": "sha1-A0Uz46ovfln/MXk+rqaFwO1a9no=", "requires": { "bn.js": "4.11.6", "underscore": "1.8.3", - "web3-core-helpers": "1.0.0-beta.33", - "web3-utils": "1.0.0-beta.33" + "web3-core-helpers": "1.0.0-beta.34", + "web3-utils": "1.0.0-beta.34" }, "dependencies": { "bn.js": { @@ -12989,9 +13019,9 @@ } }, "web3-eth-accounts": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.33.tgz", - "integrity": "sha1-JajX9OWOHpk7kvBpVILMzckhL5E=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.34.tgz", + "integrity": "sha1-4JFC7uzHl6w0WbdemyOUbTaV8zM=", "requires": { "any-promise": "1.3.0", "crypto-browserify": "3.12.0", @@ -12999,10 +13029,10 @@ "scrypt.js": "0.2.0", "underscore": "1.8.3", "uuid": "2.0.1", - "web3-core": "1.0.0-beta.33", - "web3-core-helpers": "1.0.0-beta.33", - "web3-core-method": "1.0.0-beta.33", - "web3-utils": "1.0.0-beta.33" + "web3-core": "1.0.0-beta.34", + "web3-core-helpers": "1.0.0-beta.34", + "web3-core-method": "1.0.0-beta.34", + "web3-utils": "1.0.0-beta.34" }, "dependencies": { "eth-lib": { @@ -13023,27 +13053,27 @@ } }, "web3-eth-contract": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.33.tgz", - "integrity": "sha1-nlkZ8pF6PGe0+2Vp1JxeMDiSW84=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.34.tgz", + "integrity": "sha1-nbs4+udkOoCEJ6IBgEcOx0FckeY=", "requires": { "underscore": "1.8.3", - "web3-core": "1.0.0-beta.33", - "web3-core-helpers": "1.0.0-beta.33", - "web3-core-method": "1.0.0-beta.33", - "web3-core-promievent": "1.0.0-beta.33", - "web3-core-subscriptions": "1.0.0-beta.33", - "web3-eth-abi": "1.0.0-beta.33", - "web3-utils": "1.0.0-beta.33" + "web3-core": "1.0.0-beta.34", + "web3-core-helpers": "1.0.0-beta.34", + "web3-core-method": "1.0.0-beta.34", + "web3-core-promievent": "1.0.0-beta.34", + "web3-core-subscriptions": "1.0.0-beta.34", + "web3-eth-abi": "1.0.0-beta.34", + "web3-utils": "1.0.0-beta.34" } }, "web3-eth-iban": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.33.tgz", - "integrity": "sha1-HXPQxSiKRWWxdUp1tfs+oLd6Uy8=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.34.tgz", + "integrity": "sha1-mvRYYFhnzPdOqXmq8yazi6alugw=", "requires": { "bn.js": "4.11.6", - "web3-utils": "1.0.0-beta.33" + "web3-utils": "1.0.0-beta.34" }, "dependencies": { "bn.js": { @@ -13054,25 +13084,25 @@ } }, "web3-eth-personal": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.33.tgz", - "integrity": "sha1-tOSFh8xOfrAY2ib947Tzul+bmO8=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.34.tgz", + "integrity": "sha1-mvuhZzQuveVCC81YlcP2w0OI8gU=", "requires": { - "web3-core": "1.0.0-beta.33", - "web3-core-helpers": "1.0.0-beta.33", - "web3-core-method": "1.0.0-beta.33", - "web3-net": "1.0.0-beta.33", - "web3-utils": "1.0.0-beta.33" + "web3-core": "1.0.0-beta.34", + "web3-core-helpers": "1.0.0-beta.34", + "web3-core-method": "1.0.0-beta.34", + "web3-net": "1.0.0-beta.34", + "web3-utils": "1.0.0-beta.34" } }, "web3-net": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.0.0-beta.33.tgz", - "integrity": "sha1-tskNGg4WJuquiz2SKsFTZy/VZEU=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.0.0-beta.34.tgz", + "integrity": "sha1-QnzqL0MYgUScjjjVIykPFz+f9j0=", "requires": { - "web3-core": "1.0.0-beta.33", - "web3-core-method": "1.0.0-beta.33", - "web3-utils": "1.0.0-beta.33" + "web3-core": "1.0.0-beta.34", + "web3-core-method": "1.0.0-beta.34", + "web3-utils": "1.0.0-beta.34" } }, "web3-provider-engine": { @@ -13126,32 +13156,43 @@ } }, "web3-providers-http": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.0.0-beta.33.tgz", - "integrity": "sha1-OzWuAO599blrSTSWKtSobypVmcE=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.0.0-beta.34.tgz", + "integrity": "sha1-5WG1K7tDdmKCAH1AKFv+NVDCfno=", "requires": { - "web3-core-helpers": "1.0.0-beta.33", + "web3-core-helpers": "1.0.0-beta.34", "xhr2": "0.1.4" } }, "web3-providers-ipc": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.33.tgz", - "integrity": "sha1-Twrcmv6dEsBm5L5cPFNvUHPLB8Y=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.34.tgz", + "integrity": "sha1-obd/GjBtc2SanAOQUuQMtxMo0Ao=", "requires": { "oboe": "2.1.3", "underscore": "1.8.3", - "web3-core-helpers": "1.0.0-beta.33" + "web3-core-helpers": "1.0.0-beta.34" } }, "web3-providers-ws": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.33.tgz", - "integrity": "sha1-j93qQuGbvyUh7IeVRkV6Yjqdye8=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.34.tgz", + "integrity": "sha1-fecPG4Py3jZHZ3IVa+z+9uNRbrM=", "requires": { "underscore": "1.8.3", - "web3-core-helpers": "1.0.0-beta.33", + "web3-core-helpers": "1.0.0-beta.34", "websocket": "git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c" + }, + "dependencies": { + "websocket": { + "version": "git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c", + "requires": { + "debug": "2.6.9", + "nan": "2.10.0", + "typedarray-to-buffer": "3.1.5", + "yaeti": "0.0.6" + } + } } }, "web3-server-tools": { @@ -13161,7 +13202,7 @@ "ethereumjs-tx": "1.3.4", "request": "2.85.0", "solc": "0.4.22", - "web3": "1.0.0-beta.33" + "web3": "1.0.0-beta.34" }, "dependencies": { "bignumber.js": { @@ -13172,20 +13213,20 @@ } }, "web3-shh": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.0.0-beta.33.tgz", - "integrity": "sha1-+Z4mVz9uCZMhrw2fK/z+Pe01UKE=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.0.0-beta.34.tgz", + "integrity": "sha1-l1Bh1x6uxCzO5Xb3vY9w8DhEr+A=", "requires": { - "web3-core": "1.0.0-beta.33", - "web3-core-method": "1.0.0-beta.33", - "web3-core-subscriptions": "1.0.0-beta.33", - "web3-net": "1.0.0-beta.33" + "web3-core": "1.0.0-beta.34", + "web3-core-method": "1.0.0-beta.34", + "web3-core-subscriptions": "1.0.0-beta.34", + "web3-net": "1.0.0-beta.34" } }, "web3-utils": { - "version": "1.0.0-beta.33", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.33.tgz", - "integrity": "sha1-4JG3mU8JtxSwGYpAV9OtLrjL4jg=", + "version": "1.0.0-beta.34", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.34.tgz", + "integrity": "sha1-lBH8OarvOcpOBhafdiKX2f8CCXA=", "requires": { "bn.js": "4.11.6", "eth-lib": "0.1.27", @@ -13791,15 +13832,6 @@ "source-map": "0.6.1" } }, - "websocket": { - "version": "git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c", - "requires": { - "debug": "2.6.9", - "nan": "2.10.0", - "typedarray-to-buffer": "3.1.5", - "yaeti": "0.0.6" - } - }, "whatwg-fetch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", diff --git a/package.json b/package.json index 55d910f..a6f3010 100644 --- a/package.json +++ b/package.json @@ -39,8 +39,8 @@ "mocha": "^5.0.5", "npm-watch": "^0.3.0", "solhint": "^1.1.10", - "solidity-coverage": "^0.4.14", - "truffle": "^4.1.5", + "solidity-coverage": "^0.4.15", + "truffle": "^4.1.6", "webpack": "^4.0.0", "zeppelin-solidity": "1.8.0" }, @@ -49,9 +49,9 @@ }, "dependencies": { "ethereumjs-tx": "^1.3.4", - "solc": "^0.4.21", - "validated-token": "github:Finhaven/ValidatedToken#better-imports", - "web3": "^1.0.0-beta.33", + "solc": "^0.4.22", + "validated-token": "github:Finhaven/ValidatedToken", + "web3": "^1.0.0-beta.34", "web3-server-tools": "github:Finhaven/web3-server-tools" } } diff --git a/test/deal-factory.spec.js.hold b/test/deal-factory.spec.js.hold deleted file mode 100644 index 6d3a25b..0000000 --- a/test/deal-factory.spec.js.hold +++ /dev/null @@ -1,89 +0,0 @@ -const { assert } = require('chai'); -const utils = require('../node_modules/web3-server-tools/src/lib/contract-utils'); - -/* eslint-disable no-undef */ -const Deal = artifacts.require('./Deal'); -const DealFactory = artifacts.require('./DealFactory'); -const DealToken = artifacts.require('./DealToken'); -/* eslint-enable no-undef */ - -contract('DealFactory', (accounts) => { // eslint-disable-line no-undef - let deal; - let dealFactory; - let weiToTokenRate; - - const getInstance = () => - DealFactory - .deployed() - .then((instance) => { - dealFactory = instance; - }); - - const createDeal = (options) => { - const { - startTime, - endTime, - rate, - wallet, - } = options; - - weiToTokenRate = rate; - return dealFactory - .createDeal(startTime, endTime, rate, wallet) - .then(tx => utils.getParamFromTxEvent(tx, 'instance', null, 'DealCreated')) - .then(address => Deal.at(address)) - .then((instance) => { - deal = instance; - }); - }; - - - beforeEach(() => getInstance() - .then(() => createDeal(utils.getDealParameters(accounts[5])))); - - const getTokenContract = _deal => - _deal - .token() - .then(address => DealToken.at(address)); - - it('should get instance of deal factory', () => { - assert.ok(dealFactory); - }); - - it('should create deal', () => assert.isNotNull(deal)); - - it('should authorize investor', () => { - const investor = accounts[9]; - return Promise.resolve(deal.authorize(investor)); - }); - - it('should allow authorized investor to buy tokens', () => { - const investor = accounts[9]; - const weiInvested = 3; - return Promise.resolve() - .then(() => deal.authorize(investor)) - .then(() => deal - .sendTransaction({ - value: weiInvested, from: investor, to: deal, - })) - .then(() => getTokenContract(deal)) - .then(token => token.balanceOf(investor)) - .then(balance => assert.equal(weiInvested * weiToTokenRate, balance.toNumber())); - }); - - it('should not allow an unauthorized investor to buy tokens', () => { - const investor = accounts[8]; - const ethAmount = 3; - return deal - .sendTransaction({ - value: ethAmount, from: investor, to: deal, - }) - .then(() => assert.fail('transaction succeeded', 'transfer should have failed')) - .catch((e) => { - console.log('transfer failed, yay', e); - }) - .then(() => getTokenContract(deal)) - .then(token => token.balanceOf(investor)) - .then(balance => assert.equal(0, balance.toNumber())); - }); -}); diff --git a/test/deal-token.spec.js.hold b/test/deal-token.spec.js.hold deleted file mode 100644 index 49dfb2d..0000000 --- a/test/deal-token.spec.js.hold +++ /dev/null @@ -1,88 +0,0 @@ -const { assert } = require('chai'); - -const DealToken = artifacts.require('./DealToken.sol'); // eslint-disable-line no-undef - -let dealToken; - -const checkBalance = function (account, expected) { - return () => - dealToken.balanceOf(account, { from: account }) - .then((balance) => { - console.log('balance of token', balance); - assert.equal(expected, balance.toNumber()); - }); -}; - -const mintTokens = (account, amountToMint) => - () => { - // const tx = { from: account, value: web3.utils.toWei('1', 'ether') }; - console.log('minting tokens '); - return dealToken.mint(account, amountToMint) - .then(() => dealToken.approve(account, amountToMint)); - }; - -const authorize = account => - () => dealToken.authorizeAddress(account, true); - -const transfer = (from, to, amount, shouldFail) => - () => dealToken - .transferFrom(from, to, amount) - .then((result) => { - if (shouldFail) { - console.log('transfer success - should happen now', result); - console.log('transfer logs ', JSON.stringify(result.logs)); - // should not reach this code - assert.fail('transfer succeeded', 'transfer should fail'); - } - }) - .catch(() => { - // if transfer should fail this is ok - if (!shouldFail) { - // console.log('transfer failed', e); - assert.fail('transfer failed', 'transfer should succeed'); - } - }); - -contract('DealToken', (accounts) => { // eslint-disable-line no-undef - const account = accounts[0]; - - beforeEach(async () => { - dealToken = await DealToken.new(); - }); - - it('should get instance of lp token', () => { - assert.isNotNull(dealToken); - }); - - it('should get zero balance of lp token', () => checkBalance(account, 0)); - - it('should mint tokens', () => Promise.resolve() - .then(authorize(account)) - .then(checkBalance(account, 0)) - .then(mintTokens(account, 100)) - .then(checkBalance(account, 100))); - - it('should authorize transfer of tokens', () => Promise.resolve() - .then(checkBalance(account, 0)) - .then(authorize(account)) - .then(mintTokens(account, 100))); - - it('should transfer tokens to authorized address', () => Promise.resolve() - .then(checkBalance(account, 0)) - .then(authorize(account)) - .then(mintTokens(account, 100)) - .then(authorize(accounts[1])) - .then(transfer(accounts[0], accounts[1], 50)) - .then(checkBalance(accounts[1], 50))); - - it('should not transfer tokens to an unauthorized address', () => { - const shouldFail = true; - return Promise.resolve() - .then(checkBalance(account, 0)) - .then(authorize(account)) - .then(mintTokens(account, 100)) - .then(authorize(accounts[1])) - .then(transfer(accounts[0], accounts[2], 50, shouldFail)) - .then(checkBalance(accounts[2], 0)); - }); -}); diff --git a/test/deal.spec.js b/test/deal.spec.js index 17c7c59..aa523dc 100644 --- a/test/deal.spec.js +++ b/test/deal.spec.js @@ -1,22 +1,78 @@ -const { assert } = require('chai'); -const web3 = require('web3'); - +const { expect } = require('chai'); const { accounts } = require('./accounts'); -const utils = require('../node_modules/web3-server-tools/src/lib/contract-utils'); -const OpenValidator = artifacts.require('OpenValidator.sol'); -const Deal = artifacts.require('./Deal'); // eslint-disable-line no-undef +const OpenValidator = artifacts.require('OpenValidator'); +const Deal = artifacts.require('Deal'); // eslint-disable-line no-undef + +const expectRevert = async (func) => { + try { + await func(); + throw new Error('Should have failed'); + } catch ({message}) { + expect(message).to.have.string('revert'); + } +}; + +contract('Deal', async () => { // eslint-disable-line no-undef + const name = 'testDeal'; + const symbol = 'TDL'; + const granularity = 100; + const startTime = 1; + const endTime = 99999999999; + const holdPeriod = 10000; + + let deal = null; + + const createDeal = async (params = {}) => { + const {address: validatorAddress} = await OpenValidator.new(); + + const normalized = + Object.values({ + name, + symbol, + granularity, + startTime, + endTime, + holdPeriod, + validatorAddress, + ...params + }); -contract('Deal', () => { // eslint-disable-line no-undef - let deal; + console.log(JSON.stringify(normalized)); - beforeEach(async () => { - const validator = SimpleAuthorization.new(); - const dealAddr = await Deal.new("MyDeal", "MDL", 100, 0, 999999, 1000, validator); - deal = Deal.at(dealAddr); + return await Deal.new(...normalized); + }; + + before(async () => { + deal = await createDeal(); }); - it('should get instance of deal', () => { - console.log('contract address', deal.address); - assert.isNotNull(deal); + describe('#Deal', async () => { + describe('ends before now', async () => { + it('fails to deploy', async () => { + await expectRevert(async () => await createDeal({endTime: startTime + 1})); + }); + }); + + describe('ends as soon as it begins', async () => { + it('fails to deploy', async () => { + await expectRevert(async () => await createDeal({endTime: startTime})); + }); + }); + + describe('ends before it begins', async () => { + it('fails to deploy', async () => { + await expectRevert(async () => await createDeal({endTime: startTime - 1})); + }); + }); + + describe('zero granularity', async () => { + it('fails to deploy', async () => { + await expectRevert(async () => await createDeal({granularity: 0})); + }); + }); + + describe('valid params', () => { + it('deploys successfully', () => expect(deal).to.not.be.null); + }); }); }); diff --git a/test/regulated-token.spec.js.hold b/test/regulated-token.spec.js.hold deleted file mode 100644 index 92b4655..0000000 --- a/test/regulated-token.spec.js.hold +++ /dev/null @@ -1,44 +0,0 @@ -const { assert } = require('chai'); - -const RegulatedToken = artifacts.require('./RegulatedToken.sol'); // eslint-disable-line no-undef - -contract('RegulatedToken', () => { // eslint-disable-line no-undef - let regulatedToken; - - beforeEach(async () => { - regulatedToken = await RegulatedToken.new(); - }); - - it('should get instance of regulated', () => { - console.log('regulatedToken address', regulatedToken.address); - assert.isNotNull(regulatedToken); - - - // }) - // .then(token => { - // // console.log('token address', token); - // return regulatedToken.balanceOf.call(accounts[0], {from: accounts[0]}); - // }) - // .then(balance => { - // console.log('balance of token', balance.toNumber()); - // assert.equal(0, balance.toNumber()); - // }) - // .then(() => { - // let tx = {from: accounts[0], value: web3.utils.toWei('1', 'ether')}; - // console.log('sending transaction', tx); - // return regulatedToken.mint(accounts[0],1000); - // }) - // .then((sendResult) => { - // console.log('send result', sendResult); - // return regulatedToken.balanceOf.call(accounts[0], {from: accounts[0]}); - // }) - // .then(balance => { - // console.log('balance of token after', balance.toNumber()); - // // assert.equal(web3.utils.toWei(1000, 'ether'), balance.toNumber()); - // }) - // .catch(e => { - // console.error('test fail', e); - // return Promise.reject(e); - // }); - }); -}); From e6f16a3ef781ddaf8c90eb722d7a301ea33514af Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 18 Apr 2018 19:43:41 -0700 Subject: [PATCH 34/43] Compiles again --- contracts/AdvanceableToken.sol | 27 +++++++++++ contracts/Deal.sol | 49 +++++++------------ contracts/PhasedToken.sol | 41 ++++++++++++++++ contracts/Range.sol | 11 +++++ contracts/StaggeredDeal.sol | 86 ---------------------------------- package.json | 1 + test/deal.spec.js | 18 ++++--- 7 files changed, 108 insertions(+), 125 deletions(-) create mode 100644 contracts/AdvanceableToken.sol create mode 100644 contracts/PhasedToken.sol create mode 100644 contracts/Range.sol delete mode 100644 contracts/StaggeredDeal.sol diff --git a/contracts/AdvanceableToken.sol b/contracts/AdvanceableToken.sol new file mode 100644 index 0000000..672c91e --- /dev/null +++ b/contracts/AdvanceableToken.sol @@ -0,0 +1,27 @@ +pragma solidity ^0.4.21; + +import "zeppelin-solidity/contracts/ownership/Ownable.sol"; +import "./PhasedToken.sol"; + +contract AdvancableToken is Ownable, PhasedToken { + function AdvancableToken( + uint256 _mintStartTime, + uint256 _holdStartTime, + uint256 _transferStartTime + ) Ownable() PhasedToken(_mintStartTime, _holdStartTime, _transferStartTime) public {} + + function startMintPhase() external onlyOwner { + require(now < mintStartTime); + mintStartTime = now; + } + + function startHoldPhase() external onlyOwner { + require(isMintPhase()); + holdStartTime = now; + } + + function starTransferPhase() external onlyOwner { + require(isHoldPhase()); + transferStartTime = now; + } +} diff --git a/contracts/Deal.sol b/contracts/Deal.sol index a5b5d8e..550c74b 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -1,13 +1,19 @@ pragma solidity ^0.4.21; import "validated-token/contracts/ReferenceToken.sol"; +import "./PhasedToken.sol"; +import "./Range.sol"; -contract Deal is ReferenceToken { - using SafeMath for uint256; +/* + LIFECYCLE + ========= + + |-----------|--------------------|----------------| + Minting Hold Period Transfer + */ - uint256 public startTime; - uint256 public endTime; - uint256 public holdPeriod; +contract Deal is ReferenceToken, PhasedToken { + using SafeMath for uint256; TokenValidator private validator; @@ -15,18 +21,13 @@ contract Deal is ReferenceToken { string _name, string _symbol, uint256 _granularity, - uint256 _startTime, - uint256 _endTime, - uint256 _holdPeriod, + uint256 _mintStartTime, + uint256 _holdStartTime, + uint256 _transferStartTime, TokenValidator _validator - ) ReferenceToken(_name, _symbol, _granularity, _validator) public { - require(_startTime < _endTime); - require(_endTime >= now); - - holdPeriod = _holdPeriod; - startTime = _startTime; - endTime = _endTime; - } + ) ReferenceToken(_name, _symbol, _granularity, _validator) + PhasedToken(_mintStartTime, _holdStartTime, _transferStartTime) + public {} function mint(address _tokenHolder, uint256 _amount) public onlyOwner { require(isMintPhase()); @@ -37,20 +38,4 @@ contract Deal is ReferenceToken { require(isTransferPhase()); return super.approve(_spender, _amount); } - - // HELPERS // - - function endNow() public onlyOwner { - endTime = now; - } - - // Phases // - - function isMintPhase() internal view returns (bool) { - return (startTime >= now && now < endTime); - } - - function isTransferPhase() internal view returns (bool) { - return endTime.add(holdPeriod) >= now; - } } diff --git a/contracts/PhasedToken.sol b/contracts/PhasedToken.sol new file mode 100644 index 0000000..144d974 --- /dev/null +++ b/contracts/PhasedToken.sol @@ -0,0 +1,41 @@ +pragma solidity ^0.4.21; + +import "./Range.sol"; + +contract PhasedToken { + using Range for uint256; + + uint256 public mintStartTime; + uint256 public holdStartTime; + uint256 public transferStartTime; + + function PhasedToken( + uint256 _mintStartTime, + uint256 _holdStartTime, + uint256 _transferStartTime + ) public { + require(now <= _mintStartTime); + require(_mintStartTime < _holdStartTime); + require(_holdStartTime < _transferStartTime); + + mintStartTime = _mintStartTime; + holdStartTime = _holdStartTime; + transferStartTime = _transferStartTime; + } + + function isBeforeMintPhase() public view returns (bool) { + return now < mintStartTime; + } + + function isMintPhase() public view returns (bool) { + return now.isBetween(mintStartTime, holdStartTime); + } + + function isHoldPhase() public view returns (bool) { + return now.isBetween(holdStartTime, transferStartTime); + } + + function isTransferPhase() public view returns (bool) { + return now >= transferStartTime; + } +} diff --git a/contracts/Range.sol b/contracts/Range.sol new file mode 100644 index 0000000..766c9a3 --- /dev/null +++ b/contracts/Range.sol @@ -0,0 +1,11 @@ +pragma solidity ^0.4.21; + +library Range { + function isBetween( + uint256 _subject, + uint256 _start, + uint256 _end + ) internal pure returns (bool) { + return (_start <= _subject && _subject < _end); + } +} diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol deleted file mode 100644 index c8f49e9..0000000 --- a/contracts/StaggeredDeal.sol +++ /dev/null @@ -1,86 +0,0 @@ -pragma solidity ^0.4.21; -/* pragma experimental ABIEncoderV2; */ - -import "./Deal.sol"; - -/** Staggered close - - startTime endTime dealOver - -tX t0 tZ - |============|============================| -Prehistory | Mintable | Tradeable | Inactive - |============|============================| - | | | - | | | - Alice | a ---------- a + holdPeriod | - | Mint Hold Trade | - | | | - | | | - Bob | b ---------- b + holdPeriod | - | Mint Hold Trade | - | | | - | | | - Carol | c ---------- c + holdPeriod | - | Mint | Hold Trade | - | | | - - */ -contract StaggeredDeal is Deal { - using SafeMath for uint256; - - struct Minting { - uint256 amount; - uint256 createdAt; - } - - // Indexed from 1, blugh - uint public holderCount; - mapping(uint => address) internal holderIndex; - mapping(address => uint) internal reverseHolderIndex; - - mapping(address => Minting[]) internal mintHistory; - - function StaggeredDeal( - string _name, - string _symbol, - uint256 _granularity, - uint256 _startTime, - uint256 _endTime, - uint256 _holdPeriod, - TokenValidator _validator - ) Deal(_name, _symbol, _granularity, _startTime, _endTime, _holdPeriod, _validator) public {} - - function mint(address _tokenHolder, uint256 _amount) public { - super.mint(_tokenHolder, _amount); - upsertHolder(_tokenHolder); - - mintHistory[_tokenHolder].push(Minting({ - amount: _amount, - createdAt: now - })); - } - - function upsertHolder(address _tokenHolder) internal { - if (reverseHolderIndex[_tokenHolder] == 0) { - holderCount++; - holderIndex[holderCount] = _tokenHolder; - reverseHolderIndex[_tokenHolder] = holderCount; - } - } - - function isEnoughSpendable(address _from, uint256 _amount) internal view returns (bool) { - return spendableAmount(_from) >= _amount; - } - - function spendableAmount(address _holder) internal view returns (uint256) { - uint256 total = 0; - - for (uint i = 0; i < mintHistory[_holder].length; i++) { - if (now < mintHistory[_holder][i].createdAt.add(holdPeriod)) { - total.add(mintHistory[_holder][i].amount); - } - } - - return total; - } -} diff --git a/package.json b/package.json index a6f3010..dcb586b 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "test:lint": "eslint -c .eslintrc . --color=true --quiet", "test:lint:fix": "eslint -c .eslintrc . --color=true --quiet --fix", "truffle:compile": "truffle compile", + "truffle:migrate": "truffle migrate", "start:testrpc": "ganache-cli -u 0 -s frontier-seed", "watch": "npm-watch" }, diff --git a/test/deal.spec.js b/test/deal.spec.js index aa523dc..010716b 100644 --- a/test/deal.spec.js +++ b/test/deal.spec.js @@ -16,8 +16,8 @@ contract('Deal', async () => { // eslint-disable-line no-undef const name = 'testDeal'; const symbol = 'TDL'; const granularity = 100; - const startTime = 1; - const endTime = 99999999999; + const mintStartTime = 1; + const mintEndTime = 99999999999; const holdPeriod = 10000; let deal = null; @@ -30,8 +30,8 @@ contract('Deal', async () => { // eslint-disable-line no-undef name, symbol, granularity, - startTime, - endTime, + mintStartTime, + mintEndTime, holdPeriod, validatorAddress, ...params @@ -49,19 +49,19 @@ contract('Deal', async () => { // eslint-disable-line no-undef describe('#Deal', async () => { describe('ends before now', async () => { it('fails to deploy', async () => { - await expectRevert(async () => await createDeal({endTime: startTime + 1})); + await expectRevert(async () => await createDeal({mintEndTime: mintStartTime + 1})); }); }); describe('ends as soon as it begins', async () => { it('fails to deploy', async () => { - await expectRevert(async () => await createDeal({endTime: startTime})); + await expectRevert(async () => await createDeal({mintEndTime: mintStartTime})); }); }); describe('ends before it begins', async () => { it('fails to deploy', async () => { - await expectRevert(async () => await createDeal({endTime: startTime - 1})); + await expectRevert(async () => await createDeal({mintEndTime: mintStartTime - 1})); }); }); @@ -75,4 +75,8 @@ contract('Deal', async () => { // eslint-disable-line no-undef it('deploys successfully', () => expect(deal).to.not.be.null); }); }); + + describe('#mint',async () => { + + }); }); From 80df5e6f9a468db2cbf4b51b4ba47582a56b0911 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 18 Apr 2018 19:50:55 -0700 Subject: [PATCH 35/43] Tests pass agian --- contracts/Deal.sol | 8 -------- contracts/PhasedToken.sol | 8 ++++++++ test/deal.spec.js | 22 +++++++++++----------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 550c74b..d5c4966 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -4,14 +4,6 @@ import "validated-token/contracts/ReferenceToken.sol"; import "./PhasedToken.sol"; import "./Range.sol"; -/* - LIFECYCLE - ========= - - |-----------|--------------------|----------------| - Minting Hold Period Transfer - */ - contract Deal is ReferenceToken, PhasedToken { using SafeMath for uint256; diff --git a/contracts/PhasedToken.sol b/contracts/PhasedToken.sol index 144d974..712231f 100644 --- a/contracts/PhasedToken.sol +++ b/contracts/PhasedToken.sol @@ -2,6 +2,14 @@ pragma solidity ^0.4.21; import "./Range.sol"; +/* + LIFECYCLE + ========= + + |-----------|--------------------|----------------| + Minting Hold Period Transfer +*/ + contract PhasedToken { using Range for uint256; diff --git a/test/deal.spec.js b/test/deal.spec.js index 010716b..ee700e4 100644 --- a/test/deal.spec.js +++ b/test/deal.spec.js @@ -16,29 +16,29 @@ contract('Deal', async () => { // eslint-disable-line no-undef const name = 'testDeal'; const symbol = 'TDL'; const granularity = 100; - const mintStartTime = 1; - const mintEndTime = 99999999999; - const holdPeriod = 10000; + let mintStartTime; + let holdStartTime; + let transferStartTime; let deal = null; const createDeal = async (params = {}) => { const {address: validatorAddress} = await OpenValidator.new(); + const now = Number(new Date()); + const normalized = Object.values({ name, symbol, granularity, - mintStartTime, - mintEndTime, - holdPeriod, + mintStartTime: now, + holdStartTime: now + 10000, + transferStartTime: now + 1000000, validatorAddress, ...params }); - console.log(JSON.stringify(normalized)); - return await Deal.new(...normalized); }; @@ -49,19 +49,19 @@ contract('Deal', async () => { // eslint-disable-line no-undef describe('#Deal', async () => { describe('ends before now', async () => { it('fails to deploy', async () => { - await expectRevert(async () => await createDeal({mintEndTime: mintStartTime + 1})); + await expectRevert(async () => await createDeal({holdStartTime: mintStartTime + 1})); }); }); describe('ends as soon as it begins', async () => { it('fails to deploy', async () => { - await expectRevert(async () => await createDeal({mintEndTime: mintStartTime})); + await expectRevert(async () => await createDeal({holdStartTime: mintStartTime})); }); }); describe('ends before it begins', async () => { it('fails to deploy', async () => { - await expectRevert(async () => await createDeal({mintEndTime: mintStartTime - 1})); + await expectRevert(async () => await createDeal({holdStartTime: mintStartTime - 1})); }); }); From 26109f3e405f2762c763c2a06a8ffca1fccd2ad3 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 18 Apr 2018 22:07:53 -0700 Subject: [PATCH 36/43] Break out portions of functionality --- contracts/Deal.sol | 18 ++--- contracts/{ => Phase}/AdvanceableToken.sol | 4 +- contracts/Phase/Closable.sol | 13 ++++ contracts/{ => Phase}/PhasedToken.sol | 6 +- ...{OpenValidator.sol => AlwaysValidator.sol} | 4 +- test/contracts/NeverValidator.sol | 23 ++++++ test/deal.spec.js | 77 +++++++++++++++---- 7 files changed, 112 insertions(+), 33 deletions(-) rename contracts/{ => Phase}/AdvanceableToken.sol (80%) create mode 100644 contracts/Phase/Closable.sol rename contracts/{ => Phase}/PhasedToken.sol (89%) rename test/contracts/{OpenValidator.sol => AlwaysValidator.sol} (83%) create mode 100644 test/contracts/NeverValidator.sol diff --git a/contracts/Deal.sol b/contracts/Deal.sol index d5c4966..706d812 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -1,14 +1,9 @@ pragma solidity ^0.4.21; import "validated-token/contracts/ReferenceToken.sol"; -import "./PhasedToken.sol"; -import "./Range.sol"; - -contract Deal is ReferenceToken, PhasedToken { - using SafeMath for uint256; - - TokenValidator private validator; +import "./Phase/PhasedToken.sol"; +contract Deal is PhasedToken, ReferenceToken { function Deal( string _name, string _symbol, @@ -26,8 +21,11 @@ contract Deal is ReferenceToken, PhasedToken { return super.mint(_tokenHolder, _amount); } - function approve(address _spender, uint256 _amount) public returns (bool success) { - require(isTransferPhase()); - return super.approve(_spender, _amount); + function canTransfer( + address _from, + address _to, + uint256 _amount + ) internal returns (bool) { + return (isTransferPhase() && super.canTransfer(_from, _to, _amount)); } } diff --git a/contracts/AdvanceableToken.sol b/contracts/Phase/AdvanceableToken.sol similarity index 80% rename from contracts/AdvanceableToken.sol rename to contracts/Phase/AdvanceableToken.sol index 672c91e..3aed1ec 100644 --- a/contracts/AdvanceableToken.sol +++ b/contracts/Phase/AdvanceableToken.sol @@ -8,7 +8,7 @@ contract AdvancableToken is Ownable, PhasedToken { uint256 _mintStartTime, uint256 _holdStartTime, uint256 _transferStartTime - ) Ownable() PhasedToken(_mintStartTime, _holdStartTime, _transferStartTime) public {} + ) PhasedToken(_mintStartTime, _holdStartTime, _transferStartTime) public {} function startMintPhase() external onlyOwner { require(now < mintStartTime); @@ -20,7 +20,7 @@ contract AdvancableToken is Ownable, PhasedToken { holdStartTime = now; } - function starTransferPhase() external onlyOwner { + function startTransferPhase() external onlyOwner { require(isHoldPhase()); transferStartTime = now; } diff --git a/contracts/Phase/Closable.sol b/contracts/Phase/Closable.sol new file mode 100644 index 0000000..e8f7562 --- /dev/null +++ b/contracts/Phase/Closable.sol @@ -0,0 +1,13 @@ +pragma solidity ^0.4.21; + +contract Closable { + uint256 public closingTime; + + function Closable(uint256 _closingTime) public { + closingTime = _closingTime; + } + + function isClosed() public view returns (bool) { + return now >= closingTime; + } +} diff --git a/contracts/PhasedToken.sol b/contracts/Phase/PhasedToken.sol similarity index 89% rename from contracts/PhasedToken.sol rename to contracts/Phase/PhasedToken.sol index 712231f..94f2259 100644 --- a/contracts/PhasedToken.sol +++ b/contracts/Phase/PhasedToken.sol @@ -1,6 +1,6 @@ pragma solidity ^0.4.21; -import "./Range.sol"; +import "../Range.sol"; /* LIFECYCLE @@ -23,8 +23,8 @@ contract PhasedToken { uint256 _transferStartTime ) public { require(now <= _mintStartTime); - require(_mintStartTime < _holdStartTime); - require(_holdStartTime < _transferStartTime); + require(_mintStartTime <= _holdStartTime); + require(_holdStartTime <= _transferStartTime); mintStartTime = _mintStartTime; holdStartTime = _holdStartTime; diff --git a/test/contracts/OpenValidator.sol b/test/contracts/AlwaysValidator.sol similarity index 83% rename from test/contracts/OpenValidator.sol rename to test/contracts/AlwaysValidator.sol index 54c450f..358c6b4 100644 --- a/test/contracts/OpenValidator.sol +++ b/test/contracts/AlwaysValidator.sol @@ -2,8 +2,8 @@ pragma solidity ^0.4.21; import "validated-token/contracts/TokenValidator.sol"; -contract OpenValidator is TokenValidator { - function OpenValidator() public {} +contract AlwaysValidator is TokenValidator { + function AlwaysValidator() public {} function check( address /* token */, diff --git a/test/contracts/NeverValidator.sol b/test/contracts/NeverValidator.sol new file mode 100644 index 0000000..163d7bd --- /dev/null +++ b/test/contracts/NeverValidator.sol @@ -0,0 +1,23 @@ +pragma solidity ^0.4.21; + +import "validated-token/contracts/TokenValidator.sol"; + +contract NeverValidator is TokenValidator { + function NeverValidator() public {} + + function check( + address /* token */, + address /* _address */ + ) external returns (byte resultCode) { + return hex"10"; + } + + function check( + address /* _token */, + address /* _from */, + address /* _to */, + uint256 /* _amount */ + ) external returns (byte resultCode) { + return hex"10"; + } +} diff --git a/test/deal.spec.js b/test/deal.spec.js index ee700e4..e9ca6fb 100644 --- a/test/deal.spec.js +++ b/test/deal.spec.js @@ -1,6 +1,6 @@ const { expect } = require('chai'); -const { accounts } = require('./accounts'); -const OpenValidator = artifacts.require('OpenValidator'); +const AlwaysValidator = artifacts.require('AlwaysValidator'); +const NeverValidator = artifacts.require('NeverValidator'); const Deal = artifacts.require('Deal'); // eslint-disable-line no-undef const expectRevert = async (func) => { @@ -12,7 +12,9 @@ const expectRevert = async (func) => { } }; -contract('Deal', async () => { // eslint-disable-line no-undef +const getNow = () => Math.round((new Date()).getTime() / 1000); + +contract('Deal', (accounts) => { // eslint-disable-line no-undef const name = 'testDeal'; const symbol = 'TDL'; const granularity = 100; @@ -23,9 +25,8 @@ contract('Deal', async () => { // eslint-disable-line no-undef let deal = null; const createDeal = async (params = {}) => { - const {address: validatorAddress} = await OpenValidator.new(); - - const now = Number(new Date()); + const now = getNow(); + const {address: validatorAddress} = await AlwaysValidator.new(); const normalized = Object.values({ @@ -33,8 +34,8 @@ contract('Deal', async () => { // eslint-disable-line no-undef symbol, granularity, mintStartTime: now, - holdStartTime: now + 10000, - transferStartTime: now + 1000000, + holdStartTime: now + 100000, + transferStartTime: now + 999999999, validatorAddress, ...params }); @@ -42,41 +43,85 @@ contract('Deal', async () => { // eslint-disable-line no-undef return await Deal.new(...normalized); }; - before(async () => { + beforeEach(async () => { deal = await createDeal(); }); - describe('#Deal', async () => { - describe('ends before now', async () => { + describe('#Deal', () => { + context('already ended', () => { it('fails to deploy', async () => { await expectRevert(async () => await createDeal({holdStartTime: mintStartTime + 1})); }); }); - describe('ends as soon as it begins', async () => { + context('ends as soon as it begins', () => { it('fails to deploy', async () => { await expectRevert(async () => await createDeal({holdStartTime: mintStartTime})); }); }); - describe('ends before it begins', async () => { + context('ends before it begins', () => { it('fails to deploy', async () => { await expectRevert(async () => await createDeal({holdStartTime: mintStartTime - 1})); }); }); - describe('zero granularity', async () => { + context('zero granularity', () => { it('fails to deploy', async () => { await expectRevert(async () => await createDeal({granularity: 0})); }); }); - describe('valid params', () => { + context('valid params', () => { it('deploys successfully', () => expect(deal).to.not.be.null); }); }); - describe('#mint',async () => { + describe('#mint', () => { + const [account] = accounts; + const amount = 2 * granularity; + + context('during minting period', () => { + beforeEach(async () => { + await deal.mint(account, amount); + }); + + it(`increases the total supply by ${amount}`, async () => { + const newTotal = await deal.totalSupply(); + expect(Number(newTotal)).to.equal(amount); + }); + + it(`increases the target user's balance by ${amount}`, async () => { + const newBalance = await deal.balanceOf(account); + expect(Number(newBalance)).to.equal(amount); + }); + }); + + context('before minting period', () => { + it('prevents minting (revert)', async () => { + const earlyDeal = await createDeal({mintStartTime: getNow() + 10000}); + await expectRevert(async () => await earlyDeal.mint(account, amount)); + }); + }); + context('after minting period', () => { + it('prevents minting (revert)', async () => { + const lateDeal = await createDeal({holdStartTime: getNow()}); + await expectRevert(async () => await lateDeal.mint(account, amount)); + }); + }); + + context('user fails validation', () => { + it('prevents minting (revert)', async () => { + const { address: validatorAddress } = await NeverValidator.new(); + const neverOkDeal = await createDeal({validatorAddress}); + await expectRevert(async () => await neverOkDeal.mint(account, amount)); + }); + }); }); + + // describe('#canTransfer', () => { + // describe('', () => { + // }); + // }); }); From f4bacf057cdccab5b78369a4f85e978fb3f93bd0 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Wed, 18 Apr 2018 23:32:28 -0700 Subject: [PATCH 37/43] Sure why not --- contracts/DealFactory.sol | 20 +++++-- test/contracts/RangeMock.sol | 13 ++++ test/deal.spec.js | 113 ++++++++++++++++++++++++++--------- test/range.spec.js | 42 +++++++++++++ 4 files changed, 154 insertions(+), 34 deletions(-) create mode 100644 test/contracts/RangeMock.sol create mode 100644 test/range.spec.js diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol index c141160..2dc9aa9 100644 --- a/contracts/DealFactory.sol +++ b/contracts/DealFactory.sol @@ -10,13 +10,21 @@ contract DealFactory { string _name, string _symbol, uint256 _granularity, - uint256 _startTime, - uint256 _endTime, - uint256 _holdPeriod, + uint256 _mintStartTime, + uint256 _holdStartTime, + uint256 _transferStartTime, TokenValidator _validator ) public returns (Deal _deal) { Deal deal = - new Deal(_name, _symbol, _granularity, _startTime, _endTime, _holdPeriod, _validator); + new Deal( + _name, + _symbol, + _granularity, + _mintStartTime, + _holdStartTime, + _transferStartTime, + _validator + ); registry[msg.sender].push(deal); emit DealCreated(msg.sender, deal); @@ -24,5 +32,7 @@ contract DealFactory { return deal; } - function mine() public view returns (Deal[]) { return registry[msg.sender]; } + function mine() public view returns (Deal[]) { + return registry[msg.sender]; + } } diff --git a/test/contracts/RangeMock.sol b/test/contracts/RangeMock.sol new file mode 100644 index 0000000..bfbcbe4 --- /dev/null +++ b/test/contracts/RangeMock.sol @@ -0,0 +1,13 @@ +pragma solidity ^0.4.21; + +import "../../contracts/Range.sol"; + +contract RangeMock { + using Range for uint256; + + function RangeMock() public {} + + function test(uint256 a, uint256 b, uint256 c) public pure returns (bool) { + return a.isBetween(b, c); + } +} diff --git a/test/deal.spec.js b/test/deal.spec.js index e9ca6fb..ac1b82d 100644 --- a/test/deal.spec.js +++ b/test/deal.spec.js @@ -19,56 +19,79 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef const symbol = 'TDL'; const granularity = 100; + const [account] = accounts; + const [to, from] = accounts; + const amount = 2 * granularity; + let mintStartTime; let holdStartTime; let transferStartTime; + + let alwaysValidator; + let neverValidator; + let validatorAddress; + let deal = null; + let neverDeal; const createDeal = async (params = {}) => { const now = getNow(); - const {address: validatorAddress} = await AlwaysValidator.new(); + mintStartTime = now; + holdStartTime = now + 100000; + transferStartTime = now + 999999999; const normalized = Object.values({ name, symbol, granularity, - mintStartTime: now, - holdStartTime: now + 100000, - transferStartTime: now + 999999999, - validatorAddress, + mintStartTime, + holdStartTime, + transferStartTime, + validatorAddress: null, ...params }); return await Deal.new(...normalized); }; - beforeEach(async () => { - deal = await createDeal(); + before(async () => { + alwaysValidator = await AlwaysValidator.new(); + validatorAddress = alwaysValidator.address; + deal = await createDeal({validatorAddress}); + + neverValidator = await NeverValidator.new(); + neverDeal = await createDeal({validatorAddress: neverValidator.address}); }); describe('#Deal', () => { context('already ended', () => { - it('fails to deploy', async () => { - await expectRevert(async () => await createDeal({holdStartTime: mintStartTime + 1})); + const holdStartTime = mintStartTime + 1; + + it('fails to create', async () => { + await expectRevert(async () => await createDeal({validatorAddress, holdStartTime})); }); }); context('ends as soon as it begins', () => { - it('fails to deploy', async () => { - await expectRevert(async () => await createDeal({holdStartTime: mintStartTime})); + const holdStartTime = mintStartTime; + + it('fails to create', async () => { + await expectRevert(async () => await createDeal({validatorAddress, holdStartTime})); }); }); context('ends before it begins', () => { - it('fails to deploy', async () => { - await expectRevert(async () => await createDeal({holdStartTime: mintStartTime - 1})); + const holdStartTime = mintStartTime - 1; + + it('fails to create', async () => { + await expectRevert(async () => await createDeal({validatorAddress, holdStartTime})); }); }); context('zero granularity', () => { - it('fails to deploy', async () => { - await expectRevert(async () => await createDeal({granularity: 0})); + it('fails to create', async () => { + await expectRevert(async () => await createDeal({validatorAddress, granularity: 0})); }); }); @@ -78,50 +101,82 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef }); describe('#mint', () => { - const [account] = accounts; - const amount = 2 * granularity; - context('during minting period', () => { + let initialBalance = 0; + let initialSupply = 0; + beforeEach(async () => { + initialBalance = Number(await deal.balanceOf(account)); + initialSupply = Number(await deal.totalSupply()); await deal.mint(account, amount); }); it(`increases the total supply by ${amount}`, async () => { const newTotal = await deal.totalSupply(); - expect(Number(newTotal)).to.equal(amount); + expect(Number(newTotal)).to.equal(initialBalance + amount); }); it(`increases the target user's balance by ${amount}`, async () => { const newBalance = await deal.balanceOf(account); - expect(Number(newBalance)).to.equal(amount); + expect(Number(newBalance)).to.equal(initialBalance + amount); }); }); context('before minting period', () => { it('prevents minting (revert)', async () => { - const earlyDeal = await createDeal({mintStartTime: getNow() + 10000}); + const earlyDeal = await createDeal({validatorAddress, mintStartTime: getNow() + 10000}); await expectRevert(async () => await earlyDeal.mint(account, amount)); }); }); context('after minting period', () => { it('prevents minting (revert)', async () => { - const lateDeal = await createDeal({holdStartTime: getNow()}); + const lateDeal = await createDeal({validatorAddress, holdStartTime: getNow()}); await expectRevert(async () => await lateDeal.mint(account, amount)); }); }); context('user fails validation', () => { it('prevents minting (revert)', async () => { - const { address: validatorAddress } = await NeverValidator.new(); - const neverOkDeal = await createDeal({validatorAddress}); - await expectRevert(async () => await neverOkDeal.mint(account, amount)); + await expectRevert(async () => await neverDeal.mint(account, amount)); }); }); }); - // describe('#canTransfer', () => { - // describe('', () => { - // }); - // }); + describe('#transfer', () => { + // context('during transfer phase', () => { + // let transferDeal; + + // beforeEach(async() => { + // const now = getNow(); + + // transferDeal = await createDeal({ + // validatorAddress: alwaysValidator.address, + // mintStartTime: now - 10000, + // holdStartTime: now - 100, + // transferStartTime: now - 10 + // }); + + // await transferDeal.mint(from, amount); + // await transferDeal.transferFrom(from, to, amount); + // }); + + // it('transfers successfully', async () => { + // const balance = await transferDeal.balanceOf(to); + // expect(Number(balance)).to.equal(amount); + // }); + // }); + + context('not during transfer phase', () => { + it('does not allow transfer', async () => { + await expectRevert(async () => await deal.transferFrom(to, from, amount)); + }); + }); + + context('fails validation', () => { + it('reverts', async () => { + await expectRevert(async () => await neverDeal.transferFrom(to, from, amount)); + }); + }); + }); }); diff --git a/test/range.spec.js b/test/range.spec.js new file mode 100644 index 0000000..8f8c074 --- /dev/null +++ b/test/range.spec.js @@ -0,0 +1,42 @@ +const { expect } = require('chai'); +const RangeMock = artifacts.require('RangeMock'); // eslint-disable-line no-undef + +contract('Range', () => { // eslint-disable-line no-undef + let rangeMock; + + before(async () => { + rangeMock = await RangeMock.new(); + }); + + describe('#isBetween', () => { + it('is true when the first value is between the others', async () => { + const result = await rangeMock.test(2, 1, 3); + expect(Boolean(result)).to.be.true; + }); + + it('is true when the first value is equal to the low value', async () => { + const result = await rangeMock.test(1, 1, 2); + expect(Boolean(result)).to.be.true; + }); + + it('is false when the first value is below both values', async () => { + const result = await rangeMock.test(1, 2, 3); + expect(Boolean(result)).to.be.false; + }); + + it('is false when range values are reversed', async () => { + const result = await rangeMock.test(2, 3, 1); + expect(Boolean(result)).to.be.false; + }); + + it('is false when above the highest value', async () => { + const result = await rangeMock.test(3, 1, 2); + expect(Boolean(result)).to.be.false; + }); + + it('is false when it is equal to the same as highest value', async () => { + const result = await rangeMock.test(2, 1, 2); + expect(Boolean(result)).to.be.false; + }); + }); +}); From 8a2fc8a09fdcee87a18db2de3d68f2a0f691626d Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Thu, 19 Apr 2018 13:01:15 -0700 Subject: [PATCH 38/43] Starting tests for closable --- contracts/Phase/Closable.sol | 1 + test/deal.spec.js | 16 +++------------- test/helpers.js | 15 +++++++++++++++ test/phase/closable.spec.js | 36 ++++++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 13 deletions(-) create mode 100644 test/helpers.js create mode 100644 test/phase/closable.spec.js diff --git a/contracts/Phase/Closable.sol b/contracts/Phase/Closable.sol index e8f7562..98e08d7 100644 --- a/contracts/Phase/Closable.sol +++ b/contracts/Phase/Closable.sol @@ -4,6 +4,7 @@ contract Closable { uint256 public closingTime; function Closable(uint256 _closingTime) public { + require(_closingTime > now); closingTime = _closingTime; } diff --git a/test/deal.spec.js b/test/deal.spec.js index ac1b82d..f39b50f 100644 --- a/test/deal.spec.js +++ b/test/deal.spec.js @@ -1,26 +1,16 @@ const { expect } = require('chai'); +const { expectRevert, getNow } = require('./helpers'); + const AlwaysValidator = artifacts.require('AlwaysValidator'); const NeverValidator = artifacts.require('NeverValidator'); const Deal = artifacts.require('Deal'); // eslint-disable-line no-undef -const expectRevert = async (func) => { - try { - await func(); - throw new Error('Should have failed'); - } catch ({message}) { - expect(message).to.have.string('revert'); - } -}; - -const getNow = () => Math.round((new Date()).getTime() / 1000); - contract('Deal', (accounts) => { // eslint-disable-line no-undef const name = 'testDeal'; const symbol = 'TDL'; const granularity = 100; - const [account] = accounts; - const [to, from] = accounts; + const [account, to, from] = accounts; const amount = 2 * granularity; let mintStartTime; diff --git a/test/helpers.js b/test/helpers.js new file mode 100644 index 0000000..cdb2478 --- /dev/null +++ b/test/helpers.js @@ -0,0 +1,15 @@ +const expectRevert = async (func) => { + try { + await func(); + throw new Error('Should have failed'); + } catch ({message}) { + expect(message).to.have.string('revert'); + } +}; + +const getNow = () => Math.round((new Date()).getTime() / 1000); + +module.exports = { + expectRevert, + getNow +}; diff --git a/test/phase/closable.spec.js b/test/phase/closable.spec.js new file mode 100644 index 0000000..f49715d --- /dev/null +++ b/test/phase/closable.spec.js @@ -0,0 +1,36 @@ +const { expect } = require('chai'); +const { expectRevert, getNow } = require('../helpers'); + +const Closable = artifacts.require('Closable'); // eslint-disable-line no-undef + +contract('Closable', () => { // eslint-disable-line no-undef + let closable; + + before(async () => { + closable = await Closable.new(getNow() + 10000); + }); + + describe('#Closable', () => { + context('closes before created', () => { + it('fails to create', async () => { + await expectRevert(async () => await Closable.new(1)); + }); + }); + + context('closes when created', () => { + it('fails to create', async () => { + await expectRevert(async () => await Closable.new(getNow())); + }); + }); + + context('closes after created', () => { + it('fails to create', async () => { + const closed = await closable.isClosed(); + expect(closed).to.be.false; + }); + }); + }); + + describe('isClosed', () => { + }); +}); From babc37b993401c6de9a451f8352543a2b852546d Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Thu, 19 Apr 2018 13:11:00 -0700 Subject: [PATCH 39/43] test closable --- contracts/Phase/.#Closable.sol | 1 + test/phase/closable.spec.js | 27 ++++++++++++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) create mode 120000 contracts/Phase/.#Closable.sol diff --git a/contracts/Phase/.#Closable.sol b/contracts/Phase/.#Closable.sol new file mode 120000 index 0000000..d9fc33d --- /dev/null +++ b/contracts/Phase/.#Closable.sol @@ -0,0 +1 @@ +expede@Latte.local.17049 \ No newline at end of file diff --git a/test/phase/closable.spec.js b/test/phase/closable.spec.js index f49715d..6ad94b8 100644 --- a/test/phase/closable.spec.js +++ b/test/phase/closable.spec.js @@ -4,10 +4,10 @@ const { expectRevert, getNow } = require('../helpers'); const Closable = artifacts.require('Closable'); // eslint-disable-line no-undef contract('Closable', () => { // eslint-disable-line no-undef - let closable; + let closesInFuture; before(async () => { - closable = await Closable.new(getNow() + 10000); + closesInFuture = await Closable.new(getNow() + 100000); }); describe('#Closable', () => { @@ -24,13 +24,30 @@ contract('Closable', () => { // eslint-disable-line no-undef }); context('closes after created', () => { - it('fails to create', async () => { - const closed = await closable.isClosed(); - expect(closed).to.be.false; + it('creates successfully', async () => { + const closed = await closesInFuture.isClosed(); + return expect(closed).to.be.false; }); }); }); describe('isClosed', () => { + context('already closed', () => { + it('is closed', async () => { + const closable = await Closable.new(getNow() + 1); + + setTimeout(async () => { + const closed = await closable.isClosed(); + return expect(closed).to.be.true; + }, 10); + }); + }); + + context('not yet closed', () => { + it('is closed', async () => { + const closed = await closesInFuture.isClosed(); + return expect(closed).to.be.false; + }); + }); }); }); From 44c979f7ea04ddf9541b0f65269ec9a618a6b609 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Fri, 20 Apr 2018 15:21:58 -0700 Subject: [PATCH 40/43] WIP --- contracts/DealValidator.sol | 2 +- contracts/Phase/.#Closable.sol | 1 - contracts/Phase/Closable.sol | 2 +- contracts/StaggeredDeal.sol | 96 ++++++++++++++++++++++++ test/contracts/ExtendedDealValidator.sol | 20 +++++ test/deal-validator.spec.js | 48 ++++++++++++ test/phase/closable.spec.js | 2 +- 7 files changed, 167 insertions(+), 4 deletions(-) delete mode 120000 contracts/Phase/.#Closable.sol create mode 100644 contracts/StaggeredDeal.sol create mode 100644 test/contracts/ExtendedDealValidator.sol create mode 100644 test/deal-validator.spec.js diff --git a/contracts/DealValidator.sol b/contracts/DealValidator.sol index ba7afd8..327d8e7 100644 --- a/contracts/DealValidator.sol +++ b/contracts/DealValidator.sol @@ -45,7 +45,7 @@ contract DealValidator is Ownable, TokenValidator { // TOKEN VALIDATOR // - function check(address /* _deal */, address _account) external returns(byte _status) { + function check(address /* _deal */, address _account) external returns (byte _status) { if (auths[_account]) { return hex"11"; } else { diff --git a/contracts/Phase/.#Closable.sol b/contracts/Phase/.#Closable.sol deleted file mode 120000 index d9fc33d..0000000 --- a/contracts/Phase/.#Closable.sol +++ /dev/null @@ -1 +0,0 @@ -expede@Latte.local.17049 \ No newline at end of file diff --git a/contracts/Phase/Closable.sol b/contracts/Phase/Closable.sol index 98e08d7..7aebef9 100644 --- a/contracts/Phase/Closable.sol +++ b/contracts/Phase/Closable.sol @@ -4,7 +4,7 @@ contract Closable { uint256 public closingTime; function Closable(uint256 _closingTime) public { - require(_closingTime > now); + require(_closingTime >= now); closingTime = _closingTime; } diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol new file mode 100644 index 0000000..b9ff24a --- /dev/null +++ b/contracts/StaggeredDeal.sol @@ -0,0 +1,96 @@ +pragma solidity ^0.4.21; + +import "./Deal.sol"; + +/** Staggered close + + startTime endTime dealOver + -tX t0 tZ + |============|============================| +Prehistory | Mintable | Tradeable | Inactive + |============|============================| + | | | + | | | + Alice | a ---------- a + holdPeriod | + | Mint Hold Trade | + | | | + | | | + Bob | b ---------- b + holdPeriod | + | Mint Hold Trade | + | | | + | | | + Carol | c ---------- c + holdPeriod | + | Mint | Hold Trade | + | | | + + */ +contract StaggeredDeal is Deal { + using SafeMath for uint256; + + struct Minting { + uint256 amount; + uint256 createdAt; + } + + // Indexed from 1, blugh + uint public holderCount; + mapping(uint => address) internal holderIndex; + mapping(address => uint) internal reverseHolderIndex; + + mapping(address => Minting[]) internal mintHistory; + + function StaggeredDeal( + string _name, + string _symbol, + uint256 _granularity, + uint256 _mintStartTime, + uint256 _holdStartTime, + uint256 _transferStartTime, + uint256 _holdPeriod + TokenValidator _validator + ) public { + Deal( + _name, + _symbol, + _granularity, + _mintStartTime, + _holdStartTime, + _transferStartTime, + _validator + ); + } + + function mint(address _tokenHolder, uint256 _amount) public { + super.mint(_tokenHolder, _amount); + upsertHolder(_tokenHolder); + + mintHistory[_tokenHolder].push(Minting({ + amount: _amount, + createdAt: now + })); + } + + function upsertHolder(address _tokenHolder) internal { + if (reverseHolderIndex[_tokenHolder] == 0) { + holderCount++; + holderIndex[holderCount] = _tokenHolder; + reverseHolderIndex[_tokenHolder] = holderCount; + } + } + + function isEnoughSpendable(address _from, uint256 _amount) internal view returns (bool) { + return spendableAmount(_from) >= _amount; + } + + function spendableAmount(address _holder) internal view returns (uint256) { + uint256 total = 0; + + for (uint i = 0; i < mintHistory[_holder].length; i++) { + if (now < mintHistory[_holder][i].createdAt.add(holdPeriod)) { + total.add(mintHistory[_holder][i].amount); + } + } + + return total; + } +} diff --git a/test/contracts/ExtendedDealValidator.sol b/test/contracts/ExtendedDealValidator.sol new file mode 100644 index 0000000..5142391 --- /dev/null +++ b/test/contracts/ExtendedDealValidator.sol @@ -0,0 +1,20 @@ +pragma solidity ^0.4.21; + +import "../../contracts/DealValidator.sol"; + +contract ExtendedDealValidator is DealValidator { + function ExtendedDealValidator() DealValidator public {} + + function check2(address _deal, address _account) external returns (byte) { + return this.check(_deal, _account); + } + + function check4( + address _token, + address _from, + address _to, + uint256 _amount + ) external returns (byte) { + return this.check(_token, _from, _to, _amount); + } +} diff --git a/test/deal-validator.spec.js b/test/deal-validator.spec.js new file mode 100644 index 0000000..d86dc1f --- /dev/null +++ b/test/deal-validator.spec.js @@ -0,0 +1,48 @@ +const { expect } = require('chai'); +const { expectRevert, getNow } = require('./helpers'); + +const DealValidator = artifacts.require('DealValidator'); // eslint-disable-line no-undef +const ExtendedDealValidator = artifacts.require('ExtendedDealValidator'); // eslint-disable-line no-undef + +contract('DealValidator', (accounts) => { // eslint-disable-line no-undef + const [address, to, from] = accounts; + + let validator; + let extendedValidator; + + before(async () => { + validator = await DealValidator.new(); + extendedValidator = await ExtendedDealValidator.new(); + }); + + describe('#DealValidator', () => { + it('can be instantiated', () => { + expect(async () => await DealValidator.new()).to.not.throw(); + }); + + it('has an owner', async () => { + const owner = await validator.owner(); + expect(owner).to.match(/^0x[a-z0-9]+/); + }); + }); + + describe('#setAuth', () => { + it('sets a user to valid', async () => { + console.log(`>>>>>>>>>>>> ${JSON.stringify(address)}`); + await extendedValidator.setAuth(address, true); + const result = await extendedValidator.check2(address, address); + console.log(`>>>>>>>>>>>> ${JSON.stringify(result)}`); + expect(result).to.equal('0x11'); + }); + + // it('sets a user to invalid', async () => { + // await extendedValidator.setAuth(address, false); + // const result = await extendedValidator.check2(0x0, address); + // expect(String(result)).to.equal('0x10'); + // }); + }); + + describe('token validation', () => { + + }); +}); diff --git a/test/phase/closable.spec.js b/test/phase/closable.spec.js index 6ad94b8..404c41c 100644 --- a/test/phase/closable.spec.js +++ b/test/phase/closable.spec.js @@ -39,7 +39,7 @@ contract('Closable', () => { // eslint-disable-line no-undef setTimeout(async () => { const closed = await closable.isClosed(); return expect(closed).to.be.true; - }, 10); + }, 50); }); }); From 829372b982006443e1ffa1b6a675c924f23a3363 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Fri, 20 Apr 2018 17:51:23 -0700 Subject: [PATCH 41/43] Truffle! YUNO return value --- .eslintrc | 4 + contracts/Deal.sol | 2 +- contracts/DealFactory.sol | 38 - contracts/DealValidator.sol | 2 +- contracts/Phase/AdvanceableToken.sol | 2 +- contracts/Phase/Closable.sol | 2 +- contracts/Phase/PhasedToken.sol | 2 +- contracts/StaggeredDeal.sol | 96 - migrations/2_deploy_contracts.js | 7 - package-lock.json | 3803 ++++++++++++---------- package.json | 2 +- test/accounts.js | 4 +- test/contracts/AlwaysValidator.sol | 30 +- test/contracts/ExtendedDealValidator.sol | 2 +- test/contracts/NeverValidator.sol | 2 +- test/contracts/RangeMock.sol | 2 +- test/deal-validator.spec.js | 7 +- test/deal.spec.js | 16 +- test/helpers.js | 4 +- test/phase/closable.spec.js | 5 +- test/range.spec.js | 1 + truffle.js | 8 +- 22 files changed, 2144 insertions(+), 1897 deletions(-) delete mode 100644 contracts/DealFactory.sol delete mode 100644 contracts/StaggeredDeal.sol delete mode 100644 migrations/2_deploy_contracts.js diff --git a/.eslintrc b/.eslintrc index 568dd2d..4994d87 100644 --- a/.eslintrc +++ b/.eslintrc @@ -8,5 +8,9 @@ ], "parserOptions": { "ecmaVersion": 8 + }, + "rules": { + "arrow-parens": ["error", "always"], + "comma-dangle": ["error", "never"] } } diff --git a/contracts/Deal.sol b/contracts/Deal.sol index 706d812..11e89cd 100644 --- a/contracts/Deal.sol +++ b/contracts/Deal.sol @@ -4,7 +4,7 @@ import "validated-token/contracts/ReferenceToken.sol"; import "./Phase/PhasedToken.sol"; contract Deal is PhasedToken, ReferenceToken { - function Deal( + constructor( string _name, string _symbol, uint256 _granularity, diff --git a/contracts/DealFactory.sol b/contracts/DealFactory.sol deleted file mode 100644 index 2dc9aa9..0000000 --- a/contracts/DealFactory.sol +++ /dev/null @@ -1,38 +0,0 @@ -pragma solidity ^0.4.21; - -import './Deal.sol'; - -contract DealFactory { - event DealCreated(address sender, Deal deal); - mapping(address => Deal[]) private registry; - - function create( - string _name, - string _symbol, - uint256 _granularity, - uint256 _mintStartTime, - uint256 _holdStartTime, - uint256 _transferStartTime, - TokenValidator _validator - ) public returns (Deal _deal) { - Deal deal = - new Deal( - _name, - _symbol, - _granularity, - _mintStartTime, - _holdStartTime, - _transferStartTime, - _validator - ); - - registry[msg.sender].push(deal); - emit DealCreated(msg.sender, deal); - - return deal; - } - - function mine() public view returns (Deal[]) { - return registry[msg.sender]; - } -} diff --git a/contracts/DealValidator.sol b/contracts/DealValidator.sol index 327d8e7..d56d457 100644 --- a/contracts/DealValidator.sol +++ b/contracts/DealValidator.sol @@ -37,7 +37,7 @@ contract DealValidator is Ownable, TokenValidator { mapping(address => bool) private auths; - function DealValidator() Ownable public {} + constructor() Ownable() public {} function setAuth(address _address, bool _status) external onlyOwner { auths[_address] = _status; diff --git a/contracts/Phase/AdvanceableToken.sol b/contracts/Phase/AdvanceableToken.sol index 3aed1ec..795c3ff 100644 --- a/contracts/Phase/AdvanceableToken.sol +++ b/contracts/Phase/AdvanceableToken.sol @@ -4,7 +4,7 @@ import "zeppelin-solidity/contracts/ownership/Ownable.sol"; import "./PhasedToken.sol"; contract AdvancableToken is Ownable, PhasedToken { - function AdvancableToken( + constructor( uint256 _mintStartTime, uint256 _holdStartTime, uint256 _transferStartTime diff --git a/contracts/Phase/Closable.sol b/contracts/Phase/Closable.sol index 7aebef9..b625fd6 100644 --- a/contracts/Phase/Closable.sol +++ b/contracts/Phase/Closable.sol @@ -3,7 +3,7 @@ pragma solidity ^0.4.21; contract Closable { uint256 public closingTime; - function Closable(uint256 _closingTime) public { + constructor(uint256 _closingTime) public { require(_closingTime >= now); closingTime = _closingTime; } diff --git a/contracts/Phase/PhasedToken.sol b/contracts/Phase/PhasedToken.sol index 94f2259..2249216 100644 --- a/contracts/Phase/PhasedToken.sol +++ b/contracts/Phase/PhasedToken.sol @@ -17,7 +17,7 @@ contract PhasedToken { uint256 public holdStartTime; uint256 public transferStartTime; - function PhasedToken( + constructor( uint256 _mintStartTime, uint256 _holdStartTime, uint256 _transferStartTime diff --git a/contracts/StaggeredDeal.sol b/contracts/StaggeredDeal.sol deleted file mode 100644 index b9ff24a..0000000 --- a/contracts/StaggeredDeal.sol +++ /dev/null @@ -1,96 +0,0 @@ -pragma solidity ^0.4.21; - -import "./Deal.sol"; - -/** Staggered close - - startTime endTime dealOver - -tX t0 tZ - |============|============================| -Prehistory | Mintable | Tradeable | Inactive - |============|============================| - | | | - | | | - Alice | a ---------- a + holdPeriod | - | Mint Hold Trade | - | | | - | | | - Bob | b ---------- b + holdPeriod | - | Mint Hold Trade | - | | | - | | | - Carol | c ---------- c + holdPeriod | - | Mint | Hold Trade | - | | | - - */ -contract StaggeredDeal is Deal { - using SafeMath for uint256; - - struct Minting { - uint256 amount; - uint256 createdAt; - } - - // Indexed from 1, blugh - uint public holderCount; - mapping(uint => address) internal holderIndex; - mapping(address => uint) internal reverseHolderIndex; - - mapping(address => Minting[]) internal mintHistory; - - function StaggeredDeal( - string _name, - string _symbol, - uint256 _granularity, - uint256 _mintStartTime, - uint256 _holdStartTime, - uint256 _transferStartTime, - uint256 _holdPeriod - TokenValidator _validator - ) public { - Deal( - _name, - _symbol, - _granularity, - _mintStartTime, - _holdStartTime, - _transferStartTime, - _validator - ); - } - - function mint(address _tokenHolder, uint256 _amount) public { - super.mint(_tokenHolder, _amount); - upsertHolder(_tokenHolder); - - mintHistory[_tokenHolder].push(Minting({ - amount: _amount, - createdAt: now - })); - } - - function upsertHolder(address _tokenHolder) internal { - if (reverseHolderIndex[_tokenHolder] == 0) { - holderCount++; - holderIndex[holderCount] = _tokenHolder; - reverseHolderIndex[_tokenHolder] = holderCount; - } - } - - function isEnoughSpendable(address _from, uint256 _amount) internal view returns (bool) { - return spendableAmount(_from) >= _amount; - } - - function spendableAmount(address _holder) internal view returns (uint256) { - uint256 total = 0; - - for (uint i = 0; i < mintHistory[_holder].length; i++) { - if (now < mintHistory[_holder][i].createdAt.add(holdPeriod)) { - total.add(mintHistory[_holder][i].amount); - } - } - - return total; - } -} diff --git a/migrations/2_deploy_contracts.js b/migrations/2_deploy_contracts.js deleted file mode 100644 index 57f2d75..0000000 --- a/migrations/2_deploy_contracts.js +++ /dev/null @@ -1,7 +0,0 @@ -const DealFactory = artifacts.require('./DealFactory.sol'); // eslint-disable-line no-undef - -module.exports = (deployer) => { - // let gasLimit = web3.eth.getBlock('pending').gasLimit; - // console.log('block gasLimit',gasLimit); - deployer.deploy(DealFactory); -}; diff --git a/package-lock.json b/package-lock.json index 5789df6..6f2e770 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,11 +24,6 @@ "trim-right": "1.0.1" }, "dependencies": { - "jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=" - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -67,7 +62,7 @@ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", "requires": { - "chalk": "2.3.2", + "chalk": "2.4.0", "esutils": "2.0.2", "js-tokens": "3.0.2" } @@ -81,13 +76,6 @@ "@babel/types": "7.0.0-beta.44", "babylon": "7.0.0-beta.44", "lodash": "4.17.5" - }, - "dependencies": { - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==" - } } }, "@babel/traverse": { @@ -102,16 +90,11 @@ "@babel/types": "7.0.0-beta.44", "babylon": "7.0.0-beta.44", "debug": "3.1.0", - "globals": "11.3.0", + "globals": "11.4.0", "invariant": "2.2.4", "lodash": "4.17.5" }, "dependencies": { - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==" - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -130,13 +113,6 @@ "esutils": "2.0.2", "lodash": "4.17.5", "to-fast-properties": "2.0.0" - }, - "dependencies": { - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - } } }, "@sindresorhus/is": { @@ -154,10 +130,9 @@ } }, "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=" }, "abstract-leveldown": { "version": "2.6.3", @@ -293,9 +268,9 @@ } }, "ansi-escapes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" }, "ansi-regex": { "version": "2.1.1", @@ -303,9 +278,12 @@ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "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.1" + } }, "antlr4": { "version": "4.7.0", @@ -324,271 +302,12 @@ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "requires": { - "micromatch": "3.1.9", + "micromatch": "2.3.11", "normalize-path": "2.1.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - } - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.9.tgz", - "integrity": "sha512-SlIz6sv5UPaAVVFRKodKjCg48EbNoIhgetzfK/Cy0v5U52Z6zB136M8tp0UC9jM53LYbmIRihJszvvqpKkfm9g==", - "dev": true, - "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.1", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" - } - } } }, "app-root-path": { @@ -607,7 +326,7 @@ "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "argparse": { @@ -697,7 +416,7 @@ "requires": { "bn.js": "4.11.8", "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "minimalistic-assert": "1.0.1" } }, "assert": { @@ -770,9 +489,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", + "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", "dev": true }, "aws-sign2": { @@ -795,6 +514,11 @@ "js-tokens": "3.0.2" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -806,6 +530,11 @@ "strip-ansi": "3.0.1", "supports-color": "2.0.0" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -848,14 +577,14 @@ } }, "babel-eslint": { - "version": "8.2.2", - "resolved": "http://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.2.tgz", - "integrity": "sha512-Qt2lz2egBxNYWqN9JIO2z4NOOf8i4b5JS6CFoYrOZZTDssueiV1jH/jsefyg+86SeNY3rB361/mi3kE1WK2WYQ==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.3.tgz", + "integrity": "sha512-0HeSTtaXg/Em7FCUWxwOT+KeFSO1O7LuRuzhk7g+1BjwdlQGlHq4OyMi3GqGxrNfEq8jEi6Hmt5ylEQUhurgiQ==", "requires": { "@babel/code-frame": "7.0.0-beta.44", "@babel/traverse": "7.0.0-beta.44", "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.42", + "babylon": "7.0.0-beta.44", "eslint-scope": "3.7.1", "eslint-visitor-keys": "1.0.0" } @@ -875,6 +604,14 @@ "trim-right": "1.0.1" }, "dependencies": { + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "2.0.1" + } + }, "jsesc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", @@ -1494,7 +1231,7 @@ "requires": { "babel-core": "6.26.0", "babel-runtime": "6.26.0", - "core-js": "2.5.3", + "core-js": "2.5.5", "home-or-tmp": "2.0.0", "lodash": "4.17.5", "mkdirp": "0.5.1", @@ -1521,7 +1258,7 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "requires": { - "core-js": "2.5.3", + "core-js": "2.5.5", "regenerator-runtime": "0.11.1" } }, @@ -1581,12 +1318,19 @@ "esutils": "2.0.2", "lodash": "4.17.5", "to-fast-properties": "1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + } } }, "babylon": { - "version": "7.0.0-beta.42", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.42.tgz", - "integrity": "sha512-h6E/OkkvcBw/JimbL0p8dIaxrcuQn3QmIYGC/GtJlRYif5LTKBYPHXYwqluJpfS/kOXoz0go+9mkmOVC0M+zWw==" + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==" }, "balanced-match": { "version": "1.0.0", @@ -1617,11 +1361,46 @@ "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -1631,9 +1410,9 @@ "integrity": "sha1-QtPXF0dPnqAiB/bRqh9CaRPut6w=" }, "base64-js": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", - "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, "bcrypt-pbkdf": { "version": "1.0.1", @@ -1674,8 +1453,8 @@ "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.5.0.tgz", "integrity": "sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA==", "requires": { - "create-hash": "1.1.3", - "pbkdf2": "3.0.14", + "create-hash": "1.2.0", + "pbkdf2": "3.0.16", "randombytes": "2.0.6", "safe-buffer": "5.1.1", "unorm": "1.4.1" @@ -1694,7 +1473,7 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "requires": { - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "safe-buffer": "5.1.1" } }, @@ -1731,6 +1510,13 @@ "qs": "6.5.1", "raw-body": "2.3.2", "type-is": "1.6.16" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + } } }, "boom": { @@ -1749,7 +1535,7 @@ "requires": { "ansi-align": "2.0.0", "camelcase": "4.1.0", - "chalk": "2.3.2", + "chalk": "2.4.0", "cli-boxes": "1.0.0", "string-width": "2.1.1", "term-size": "1.2.0", @@ -1825,32 +1611,32 @@ "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=" }, "browserify-aes": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", - "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { "buffer-xor": "1.0.3", "cipher-base": "1.0.4", - "create-hash": "1.1.3", + "create-hash": "1.2.0", "evp_bytestokey": "1.0.3", "inherits": "2.0.3", "safe-buffer": "5.1.1" } }, "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "requires": { - "browserify-aes": "1.1.1", - "browserify-des": "1.0.0", + "browserify-aes": "1.2.0", + "browserify-des": "1.0.1", "evp_bytestokey": "1.0.3" } }, "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", + "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", "requires": { "cipher-base": "1.0.4", "des.js": "1.0.0", @@ -1881,11 +1667,11 @@ "requires": { "bn.js": "4.11.8", "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", "elliptic": "6.4.0", "inherits": "2.0.3", - "parse-asn1": "5.1.0" + "parse-asn1": "5.1.1" } }, "browserify-zlib": { @@ -1911,7 +1697,7 @@ "integrity": "sha1-xSVABzdJEXcU+gQsMEfrj5FRy/g=", "requires": { "bs58": "3.1.0", - "create-hash": "1.1.3" + "create-hash": "1.2.0" } }, "buffer": { @@ -1919,8 +1705,8 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.1.0.tgz", "integrity": "sha512-YkIRgwsZwJWTnyQrsBTWefizHh+8GYj3kbL1BTiAQ/9pwpino0G7B2gp5tx/FUBqUlvtxV85KNR3mwfAtv15Yw==", "requires": { - "base64-js": "1.2.3", - "ieee754": "1.1.10" + "base64-js": "1.3.0", + "ieee754": "1.1.11" } }, "buffer-crc32": { @@ -2030,6 +1816,13 @@ "lowercase-keys": "1.0.0", "normalize-url": "2.0.1", "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + } } }, "caller-path": { @@ -2112,31 +1905,13 @@ } }, "chalk": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz", - "integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", + "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", "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.1" - } - }, - "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "requires": { - "has-flag": "3.0.0" - } - } + "supports-color": "5.4.0" } }, "chardet": { @@ -2158,161 +1933,53 @@ } }, "chokidar": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", - "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", - "dev": true, + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "requires": { - "anymatch": "2.0.0", + "anymatch": "1.3.2", "async-each": "1.0.1", - "braces": "2.3.1", - "fsevents": "1.1.3", - "glob-parent": "3.1.0", + "fsevents": "1.2.0", + "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", - "is-glob": "4.0.0", - "normalize-path": "2.1.1", + "is-glob": "2.0.1", "path-is-absolute": "1.0.1", - "readdirp": "2.1.0", - "upath": "1.0.4" + "readdirp": "2.1.0" }, "dependencies": { - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", - "dev": true, - "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "define-property": "1.0.0", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "kind-of": "6.0.2", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" - } - }, - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" - } - }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } + "is-glob": "2.0.1" } }, "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "is-extglob": "1.0.0" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, "chownr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "dev": true + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" }, "chrome-trace-event": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.2.tgz", - "integrity": "sha1-kPNohdU0WlBiEzLwcXtZWIPV2YI=", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", + "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", "dev": true }, "ci-info": { @@ -2355,68 +2022,11 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true } } @@ -2496,13 +2106,6 @@ "requires": { "slice-ansi": "0.0.4", "string-width": "1.0.2" - }, - "dependencies": { - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" - } } }, "cli-width": { @@ -2550,7 +2153,7 @@ "requires": { "inherits": "2.0.3", "process-nextick-args": "2.0.0", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "cmd-shim": { @@ -2582,6 +2185,11 @@ "urlgrey": "0.4.4" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, "assert-plus": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", @@ -2677,11 +2285,6 @@ "sshpk": "1.14.1" } }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" - }, "qs": { "version": "6.3.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", @@ -2722,6 +2325,11 @@ "hoek": "2.16.3" } }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, "tunnel-agent": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", @@ -2735,7 +2343,7 @@ "integrity": "sha1-zbYzY6lhUCQEolr7gsLibV/2J6Q=", "requires": { "bs58": "2.0.1", - "create-hash": "1.1.3" + "create-hash": "1.2.0" }, "dependencies": { "bs58": { @@ -2815,16 +2423,6 @@ "requires": { "array-ify": "1.0.0", "dot-prop": "3.0.0" - }, - "dependencies": { - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", - "requires": { - "is-obj": "1.0.1" - } - } } }, "component-emitter": { @@ -2845,14 +2443,14 @@ "requires": { "buffer-from": "1.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "typedarray": "0.0.6" } }, "configstore": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", - "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "dev": true, "requires": { "dot-prop": "4.2.0", @@ -2863,15 +2461,13 @@ "xdg-basedir": "3.0.0" }, "dependencies": { - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "is-obj": "1.0.1" } } } @@ -2912,15 +2508,15 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "conventional-changelog": { - "version": "1.1.23", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.23.tgz", - "integrity": "sha512-yCPXU/OXJmxgbvTQfIKXKwKa4KQTvlO0a4T/371Raz3bdxcHIGhQtHtdrNee4Z8nGLNfe54njHDblVG2JNFyjg==", + "version": "1.1.24", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-1.1.24.tgz", + "integrity": "sha512-2WcSUst4Y3Z4hHvoMTWXMJr/DmgVdLiMOVY1Kak2LfFz+GIz2KDp5naqbFesYbfXPmaZ5p491dO0FWZIJoJw1Q==", "requires": { "conventional-changelog-angular": "1.6.6", "conventional-changelog-atom": "0.2.8", "conventional-changelog-codemirror": "0.3.8", - "conventional-changelog-core": "2.0.10", - "conventional-changelog-ember": "0.3.11", + "conventional-changelog-core": "2.0.11", + "conventional-changelog-ember": "0.3.12", "conventional-changelog-eslint": "1.0.9", "conventional-changelog-express": "0.3.6", "conventional-changelog-jquery": "0.1.0", @@ -2947,12 +2543,12 @@ } }, "conventional-changelog-cli": { - "version": "1.3.21", - "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-1.3.21.tgz", - "integrity": "sha512-K9VBljxzuATZCLTVnI83PN7WdeRJRPPB5FumuLk4ES3E+m2YJvX07DRbdJlINk6C2DeAjj4ioS5JvsvJaaCRbA==", + "version": "1.3.22", + "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz", + "integrity": "sha512-pnjdIJbxjkZ5VdAX/H1wndr1G10CY8MuZgnXuJhIHglOXfIrXygb7KZC836GW9uo1u8PjEIvIw/bKX0lOmOzZg==", "requires": { "add-stream": "1.0.0", - "conventional-changelog": "1.1.23", + "conventional-changelog": "1.1.24", "lodash": "4.17.5", "meow": "4.0.0", "tempfile": "1.1.1" @@ -2967,9 +2563,9 @@ } }, "conventional-changelog-core": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-2.0.10.tgz", - "integrity": "sha512-FP0NHXIbpvU+f5jk/qZdnodhFmlzKW8ENRHQIWT69oe7ffur9nFRVJZlnXnFBOzwHM9WIRbC15ZWh9HZN6t9Uw==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz", + "integrity": "sha512-HvTE6RlqeEZ/NFPtQeFLsIDOLrGP3bXYr7lFLMhCVsbduF1MXIe8OODkwMFyo1i9ku9NWBwVnVn0jDmIFXjDRg==", "requires": { "conventional-changelog-writer": "3.0.9", "conventional-commits-parser": "2.1.7", @@ -2987,9 +2583,9 @@ } }, "conventional-changelog-ember": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.3.11.tgz", - "integrity": "sha512-ErjPPiDmTd/WPgj2bSp+CGsLtJiv7FbdPKjZXH2Cd5P7j44Rqf0V9SIAAYFTQNoPqmvcp+sIcr/vH52WzPJUbw==", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz", + "integrity": "sha512-mmJzA7uzbrOqeF89dMMi6z17O07ORTXlTMArnLG9ZTX4oLaKNolUlxFUFlFm9JUoVWajVpaHQWjxH1EOQ+ARoQ==", "requires": { "q": "1.5.1" } @@ -3055,16 +2651,6 @@ "semver": "5.5.0", "split": "1.0.1", "through2": "2.0.3" - }, - "dependencies": { - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "requires": { - "through": "2.3.8" - } - } } }, "conventional-commits-filter": { @@ -3118,6 +2704,14 @@ "map-obj": "1.0.1" } }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "2.0.1" + } + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -3205,9 +2799,9 @@ "dev": true }, "core-js": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", - "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", + "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" }, "core-util-is": { "version": "1.0.2", @@ -3224,9 +2818,9 @@ } }, "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.1.tgz", + "integrity": "sha512-iZvCCg8XqHQZ1ioNBTzXS/cQSkqkqcPs8xSX4upNB+DAk9Ht3uzQf2J32uAHNCne8LDmKr29AgZrEs4oIrwLuQ==", "requires": { "bn.js": "4.11.8", "elliptic": "6.4.0" @@ -3241,25 +2835,26 @@ } }, "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { "cipher-base": "1.0.4", "inherits": "2.0.3", - "ripemd160": "2.0.1", + "md5.js": "1.3.4", + "ripemd160": "2.0.2", "sha.js": "2.4.11" } }, "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "requires": { "cipher-base": "1.0.4", - "create-hash": "1.1.3", + "create-hash": "1.2.0", "inherits": "2.0.3", - "ripemd160": "2.0.1", + "ripemd160": "2.0.2", "safe-buffer": "5.1.1", "sha.js": "2.4.11" } @@ -3297,15 +2892,15 @@ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "requires": { - "browserify-cipher": "1.0.0", + "browserify-cipher": "1.0.1", "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", + "create-ecdh": "4.0.1", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "diffie-hellman": "5.0.3", "inherits": "2.0.3", - "pbkdf2": "3.0.14", - "public-encrypt": "4.0.0", + "pbkdf2": "3.0.16", + "public-encrypt": "4.0.2", "randombytes": "2.0.6", "randomfill": "1.0.4" } @@ -3336,9 +2931,12 @@ "dev": true }, "dargs": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", - "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "requires": { + "number-is-nan": "1.0.1" + } }, "dashdash": { "version": "1.14.1", @@ -3562,11 +3160,46 @@ "isobject": "3.0.1" }, "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -3583,11 +3216,27 @@ "requires": { "globby": "5.0.0", "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", + "is-path-in-cwd": "1.0.1", "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1", "rimraf": "2.6.2" + }, + "dependencies": { + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + } } }, "delayed-stream": { @@ -3611,7 +3260,7 @@ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "requires": { "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "minimalistic-assert": "1.0.1" } }, "destroy": { @@ -3625,22 +3274,19 @@ "integrity": "sha1-CIZXpmqWHAUBnbfEIwiDsca0F24=" }, "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "requires": { - "repeating": "2.0.1" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" }, "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", + "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==" }, "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "requires": { "bn.js": "4.11.8", "miller-rabin": "4.0.1", @@ -3711,10 +3357,9 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", "requires": { "is-obj": "1.0.1" } @@ -3730,9 +3375,9 @@ "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", "requires": { - "browserify-aes": "1.1.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6" + "browserify-aes": "1.2.0", + "create-hash": "1.2.0", + "create-hmac": "1.1.7" } }, "duplexer": { @@ -3753,7 +3398,7 @@ "requires": { "end-of-stream": "1.4.1", "inherits": "2.0.3", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "stream-shift": "1.0.0" } }, @@ -3794,7 +3439,7 @@ "resolved": "https://registry.npmjs.org/giveth-common-contracts/-/giveth-common-contracts-0.4.0.tgz", "integrity": "sha512-zFRXh6MQyroTr2NSKwtYOX2pY78+S/SJoqwTScqJqqhFIfVxgWtqj1pOn7lEcZ44GTNdbaCh5MS7/rZiX9pasg==", "requires": { - "babel-eslint": "8.2.2", + "babel-eslint": "8.2.3", "codecov": "2.3.1", "jsonfile": "3.0.1", "solium": "0.5.5" @@ -3818,14 +3463,14 @@ "eth-contract-class": "0.0.7", "ethereumjs-tx": "1.3.4", "ethereumjs-util": "5.1.5", - "lerna": "2.9.1", + "lerna": "2.10.2", "web3": "1.0.0-beta.34" } }, "ejs": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.7.tgz", - "integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=" + "version": "2.5.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz", + "integrity": "sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ==" }, "elegant-spinner": { "version": "1.0.1", @@ -3842,7 +3487,7 @@ "hash.js": "1.1.3", "hmac-drbg": "1.0.1", "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", + "minimalistic-assert": "1.0.1", "minimalistic-crypto-utils": "1.0.1" } }, @@ -3861,7 +3506,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "0.4.21" } }, "end-of-stream": { @@ -3887,6 +3532,11 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" }, + "envinfo": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-4.4.2.tgz", + "integrity": "sha512-5rfRs+m+6pwoKRCFqpsA5+qsLngFms1aWPrxfKbrObCzQaPc3M3yPloZx+BL9UE3dK58cxw36XVQbFRSCCfGSQ==" + }, "errno": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", @@ -3985,7 +3635,7 @@ "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", - "chalk": "2.3.2", + "chalk": "2.4.0", "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "3.1.0", @@ -3993,12 +3643,12 @@ "eslint-scope": "3.7.1", "eslint-visitor-keys": "1.0.0", "espree": "3.5.4", - "esquery": "1.0.0", + "esquery": "1.0.1", "esutils": "2.0.2", "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "11.3.0", + "globals": "11.4.0", "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "3.3.0", @@ -4014,7 +3664,7 @@ "path-is-inside": "1.0.2", "pluralize": "7.0.0", "progress": "2.0.0", - "regexpp": "1.0.1", + "regexpp": "1.1.0", "require-uncached": "1.0.3", "semver": "5.5.0", "strip-ansi": "4.0.0", @@ -4065,35 +3715,46 @@ "dev": true, "requires": { "debug": "2.6.9", - "resolve": "1.6.0" + "resolve": "1.7.1" } }, "eslint-module-utils": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", - "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", "dev": true, "requires": { "debug": "2.6.9", "pkg-dir": "1.0.0" + }, + "dependencies": { + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + } } }, "eslint-plugin-import": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz", - "integrity": "sha1-JgAu+/ylmJtyiKwEdQi9JPIXsWk=", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.11.0.tgz", + "integrity": "sha1-Fa7qN6Z0mdhI6OmBgG1GJ7VQOBY=", "dev": true, "requires": { - "builtin-modules": "1.1.1", "contains-path": "0.1.0", "debug": "2.6.9", "doctrine": "1.5.0", "eslint-import-resolver-node": "0.3.2", - "eslint-module-utils": "2.1.1", + "eslint-module-utils": "2.2.0", "has": "1.0.1", "lodash": "4.17.5", "minimatch": "3.0.4", - "read-pkg-up": "2.0.0" + "read-pkg-up": "2.0.0", + "resolve": "1.7.1" }, "dependencies": { "doctrine": { @@ -4201,9 +3862,9 @@ "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" }, "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { "estraverse": "4.2.0" @@ -4274,7 +3935,7 @@ "integrity": "sha1-PpQosxfuvaPXJg2FT93alUsfG8Y=", "requires": { "bn.js": "4.11.8", - "create-hash": "1.1.3", + "create-hash": "1.2.0", "keccakjs": "0.2.1", "rlp": "2.0.0", "secp256k1": "3.5.0" @@ -4315,7 +3976,7 @@ "integrity": "sha512-dBTav4AZQ7zuajmICv1k7bEesqS+8f0u0wciXNUJZb842RTBi0lgKEDF8WgZshzv4ThI+XVQSRNV/A+seiK4aA==", "requires": { "source-map-support": "0.5.4", - "webpack-cli": "2.0.12" + "webpack-cli": "2.0.14" } }, "ethereumjs-tx": { @@ -4333,7 +3994,7 @@ "integrity": "sha512-xPaSEATYJpMTCGowIt0oMZwFP4R1bxd6QsWgkcDvFL0JtXsr39p32WEcD14RscCjfP41YXZPCVWA4yAg0nrJmw==", "requires": { "bn.js": "4.11.8", - "create-hash": "1.1.3", + "create-hash": "1.2.0", "ethjs-util": "0.1.4", "keccak": "1.4.0", "rlp": "2.0.0", @@ -4342,9 +4003,9 @@ } }, "ethereumjs-vm": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.3.3.tgz", - "integrity": "sha512-yIWJqTEcrF9vJTCvNMxacRkAx6zIZTOW0SmSA+hSFiU1x8JyVZDi9o5udwsRVECT5RkPgQzm62kpL6Pf4qemsw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.3.4.tgz", + "integrity": "sha512-Y4SlzNDqxrCO58jhp98HdnZVdjOqB+HC0hoU+N/DEp1aU+hFkRX/nru5F7/HkQRPIlA6aJlQp/xIA6xZs1kspw==", "requires": { "async": "2.6.0", "async-eventemitter": "0.2.4", @@ -4394,16 +4055,11 @@ "integrity": "sha1-PpQosxfuvaPXJg2FT93alUsfG8Y=", "requires": { "bn.js": "4.11.8", - "create-hash": "1.1.3", + "create-hash": "1.2.0", "keccakjs": "0.2.1", "rlp": "2.0.0", "secp256k1": "3.5.0" } - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" } } }, @@ -4470,6 +4126,17 @@ "split": "0.3.3", "stream-combiner": "0.0.4", "through": "2.3.8" + }, + "dependencies": { + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "dev": true, + "requires": { + "through": "2.3.8" + } + } } }, "eventemitter3": { @@ -4493,9 +4160,9 @@ } }, "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", "requires": { "cross-spawn": "5.1.0", "get-stream": "3.0.0", @@ -4611,12 +4278,12 @@ } }, "external-editor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", - "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "requires": { "chardet": "0.4.2", - "iconv-lite": "0.4.19", + "iconv-lite": "0.4.21", "tmp": "0.0.33" } }, @@ -4626,6 +4293,13 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { "is-extglob": "1.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + } } }, "extsprintf": { @@ -4734,26 +4408,6 @@ "commondir": "1.0.1", "make-dir": "1.2.0", "pkg-dir": "2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "2.1.0" - } - } } }, "find-up": { @@ -4770,7 +4424,7 @@ "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", "requires": { - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "flat-cache": { @@ -4786,9 +4440,9 @@ } }, "flow-parser": { - "version": "0.68.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.68.0.tgz", - "integrity": "sha1-nMlmIKEC4xajFLa81WIFzqzoYtg=" + "version": "0.70.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.70.0.tgz", + "integrity": "sha512-gGdyVUZWswG5jcINrVDHd3RY4nJptBTAx9mR9thGsrGGmAUR7omgJXQSpR+fXrLtxSTAea3HpAZNU/yzRJc2Cg==" }, "flush-write-stream": { "version": "1.0.3", @@ -4797,7 +4451,7 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "for-each": { @@ -4872,7 +4526,7 @@ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "fs-extra": { @@ -4887,6 +4541,15 @@ "rimraf": "2.6.2" } }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, "fs-promise": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/fs-promise/-/fs-promise-2.0.3.tgz", @@ -4918,7 +4581,7 @@ "graceful-fs": "4.1.11", "iferr": "0.1.5", "imurmurhash": "0.1.4", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "fs.realpath": { @@ -4927,13 +4590,13 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.0.tgz", + "integrity": "sha512-ROrBIbmw4ulxmQTwYAAGyN/0xgIOAFd6gX/K3F1aGLP/K5KxkubrlGISMV5EEWEB7qtiEdE0HpaqvMMHR+Ib6w==", "optional": true, "requires": { "nan": "2.10.0", - "node-pre-gyp": "0.6.39" + "node-pre-gyp": "0.9.1" }, "dependencies": { "abbrev": { @@ -4944,7 +4607,6 @@ "ajv": { "version": "4.11.8", "bundled": true, - "optional": true, "requires": { "co": "4.6.0", "json-stable-stringify": "1.0.1" @@ -4970,28 +4632,23 @@ }, "asn1": { "version": "0.2.3", - "bundled": true, - "optional": true + "bundled": true }, "assert-plus": { "version": "0.2.0", - "bundled": true, - "optional": true + "bundled": true }, "asynckit": { "version": "0.4.0", - "bundled": true, - "optional": true + "bundled": true }, "aws-sign2": { "version": "0.6.0", - "bundled": true, - "optional": true + "bundled": true }, "aws4": { "version": "1.6.0", - "bundled": true, - "optional": true + "bundled": true }, "balanced-match": { "version": "0.4.2", @@ -5033,13 +4690,11 @@ }, "caseless": { "version": "0.12.0", - "bundled": true, - "optional": true + "bundled": true }, "co": { "version": "4.6.0", - "bundled": true, - "optional": true + "bundled": true }, "code-point-at": { "version": "1.1.0", @@ -5074,22 +4729,19 @@ "dashdash": { "version": "1.14.1", "bundled": true, - "optional": true, "requires": { "assert-plus": "1.0.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true } } }, "debug": { "version": "2.6.8", "bundled": true, - "optional": true, "requires": { "ms": "2.0.0" } @@ -5123,8 +4775,7 @@ }, "extend": { "version": "3.0.1", - "bundled": true, - "optional": true + "bundled": true }, "extsprintf": { "version": "1.0.2", @@ -5132,13 +4783,11 @@ }, "forever-agent": { "version": "0.6.1", - "bundled": true, - "optional": true + "bundled": true }, "form-data": { "version": "2.1.4", "bundled": true, - "optional": true, "requires": { "asynckit": "0.4.0", "combined-stream": "1.0.5", @@ -5162,7 +4811,6 @@ "fstream-ignore": { "version": "1.0.5", "bundled": true, - "optional": true, "requires": { "fstream": "1.0.11", "inherits": "2.0.3", @@ -5187,15 +4835,13 @@ "getpass": { "version": "0.1.7", "bundled": true, - "optional": true, "requires": { "assert-plus": "1.0.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true } } }, @@ -5217,13 +4863,11 @@ }, "har-schema": { "version": "1.0.5", - "bundled": true, - "optional": true + "bundled": true }, "har-validator": { "version": "4.2.1", "bundled": true, - "optional": true, "requires": { "ajv": "4.11.8", "har-schema": "1.0.5" @@ -5251,7 +4895,6 @@ "http-signature": { "version": "1.1.1", "bundled": true, - "optional": true, "requires": { "assert-plus": "0.2.0", "jsprim": "1.4.0", @@ -5284,8 +4927,7 @@ }, "is-typedarray": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "isarray": { "version": "1.0.0", @@ -5293,8 +4935,7 @@ }, "isstream": { "version": "0.1.2", - "bundled": true, - "optional": true + "bundled": true }, "jodid25519": { "version": "1.0.2", @@ -5311,31 +4952,26 @@ }, "json-schema": { "version": "0.2.3", - "bundled": true, - "optional": true + "bundled": true }, "json-stable-stringify": { "version": "1.0.1", "bundled": true, - "optional": true, "requires": { "jsonify": "0.0.0" } }, "json-stringify-safe": { "version": "5.0.1", - "bundled": true, - "optional": true + "bundled": true }, "jsonify": { "version": "0.0.0", - "bundled": true, - "optional": true + "bundled": true }, "jsprim": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.0.2", @@ -5345,8 +4981,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true } } }, @@ -5381,25 +5016,47 @@ }, "ms": { "version": "2.0.0", - "bundled": true, - "optional": true + "bundled": true }, "node-pre-gyp": { - "version": "0.6.39", - "bundled": true, + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz", + "integrity": "sha1-8RwHUW3ZL4cZnbx+GDjqt81WyeA=", "optional": true, "requires": { "detect-libc": "1.0.2", - "hawk": "3.1.3", "mkdirp": "0.5.1", + "needle": "2.2.0", "nopt": "4.0.1", + "npm-packlist": "1.1.10", "npmlog": "4.1.0", "rc": "1.2.1", - "request": "2.81.0", "rimraf": "2.6.1", "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "tar": "4.4.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "optional": true + }, + "tar": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", + "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", + "optional": true, + "requires": { + "chownr": "1.0.1", + "fs-minipass": "1.2.5", + "minipass": "2.2.4", + "minizlib": "1.1.0", + "mkdirp": "0.5.1", + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + } + } } }, "nopt": { @@ -5428,8 +5085,7 @@ }, "oauth-sign": { "version": "0.8.2", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -5468,8 +5124,7 @@ }, "performance-now": { "version": "0.2.0", - "bundled": true, - "optional": true + "bundled": true }, "process-nextick-args": { "version": "1.0.7", @@ -5477,13 +5132,11 @@ }, "punycode": { "version": "1.4.1", - "bundled": true, - "optional": true + "bundled": true }, "qs": { "version": "6.4.0", - "bundled": true, - "optional": true + "bundled": true }, "rc": { "version": "1.2.1", @@ -5519,7 +5172,6 @@ "request": { "version": "2.81.0", "bundled": true, - "optional": true, "requires": { "aws-sign2": "0.6.0", "aws4": "1.6.0", @@ -5581,7 +5233,6 @@ "sshpk": { "version": "1.13.0", "bundled": true, - "optional": true, "requires": { "asn1": "0.2.3", "assert-plus": "1.0.0", @@ -5596,8 +5247,7 @@ "dependencies": { "assert-plus": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true } } }, @@ -5619,8 +5269,7 @@ }, "stringstream": { "version": "0.0.5", - "bundled": true, - "optional": true + "bundled": true }, "strip-ansi": { "version": "3.0.1", @@ -5646,7 +5295,6 @@ "tar-pack": { "version": "3.4.0", "bundled": true, - "optional": true, "requires": { "debug": "2.6.8", "fstream": "1.0.11", @@ -5661,7 +5309,6 @@ "tough-cookie": { "version": "2.3.2", "bundled": true, - "optional": true, "requires": { "punycode": "1.4.1" } @@ -5669,7 +5316,6 @@ "tunnel-agent": { "version": "0.6.0", "bundled": true, - "optional": true, "requires": { "safe-buffer": "5.0.1" } @@ -5681,8 +5327,7 @@ }, "uid-number": { "version": "0.0.6", - "bundled": true, - "optional": true + "bundled": true }, "util-deprecate": { "version": "1.0.2", @@ -5690,13 +5335,11 @@ }, "uuid": { "version": "3.0.1", - "bundled": true, - "optional": true + "bundled": true }, "verror": { "version": "1.3.6", "bundled": true, - "optional": true, "requires": { "extsprintf": "1.0.2" } @@ -5712,6 +5355,12 @@ "wrappy": { "version": "1.0.2", "bundled": true + }, + "yallist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", + "optional": true } } }, @@ -5743,7 +5392,7 @@ "dev": true, "requires": { "source-map-support": "0.5.4", - "webpack-cli": "2.0.12" + "webpack-cli": "2.0.14" } }, "gauge": { @@ -5811,6 +5460,14 @@ "map-obj": "1.0.1" } }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "2.0.1" + } + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -5898,6 +5555,29 @@ "requires": { "got": "7.1.0", "is-plain-obj": "1.1.0" + }, + "dependencies": { + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "requires": { + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.1", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.1", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" + } + } } }, "git-raw-commits": { @@ -5910,16 +5590,6 @@ "meow": "4.0.0", "split2": "2.2.0", "through2": "2.0.3" - }, - "dependencies": { - "dargs": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", - "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", - "requires": { - "number-is-nan": "1.0.1" - } - } } }, "git-remote-origin-url": { @@ -5961,12 +5631,12 @@ "resolved": "https://registry.npmjs.org/giveth-common-contracts/-/giveth-common-contracts-0.5.0.tgz", "integrity": "sha512-lUZFgyVQHS73imrg2LQ7OmhCnjqnpPfoNRVwobT/tZKOZP7nTPqYW5mffJPvl8SJX4WNMmNum45xFgVnl/jU3w==", "requires": { - "babel-eslint": "8.2.2", + "babel-eslint": "8.2.3", "codecov": "2.3.1", "jsonfile": "3.0.1", "solidity-coverage": "0.4.15", "solium": "0.5.5", - "truffle": "4.1.6" + "truffle": "4.1.7" }, "dependencies": { "jsonfile": { @@ -6023,14 +5693,38 @@ "requires": { "glob-parent": "2.0.0", "is-glob": "2.0.1" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + } } }, "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "is-glob": "2.0.1" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" } }, "global": { @@ -6074,18 +5768,16 @@ } }, "globals": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", - "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==" + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz", + "integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==" }, "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "requires": { "array-union": "1.0.2", - "arrify": "1.0.1", "glob": "7.1.2", "object-assign": "4.1.1", "pify": "2.3.0", @@ -6093,24 +5785,21 @@ } }, "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "requires": { - "decompress-response": "3.3.0", + "create-error-class": "3.0.2", "duplexer3": "0.1.4", "get-stream": "3.0.0", - "is-plain-obj": "1.1.0", + "is-redirect": "1.0.0", "is-retry-allowed": "1.1.0", "is-stream": "1.1.0", - "isurl": "1.0.0", - "lowercase-keys": "1.0.0", - "p-cancelable": "0.3.0", - "p-timeout": "1.2.1", + "lowercase-keys": "1.0.1", "safe-buffer": "5.1.1", "timed-out": "4.0.1", - "url-parse-lax": "1.0.0", - "url-to-options": "1.0.1" + "unzip-response": "2.0.1", + "url-parse-lax": "1.0.0" } }, "graceful-fs": { @@ -6145,16 +5834,6 @@ "optimist": "0.6.1", "source-map": "0.4.4", "uglify-js": "2.8.29" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": "1.0.1" - } - } } }, "har-schema": { @@ -6276,11 +5955,12 @@ } }, "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "requires": { - "inherits": "2.0.3" + "inherits": "2.0.3", + "safe-buffer": "5.1.1" } }, "hash.js": { @@ -6289,7 +5969,7 @@ "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", "requires": { "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" + "minimalistic-assert": "1.0.1" } }, "hawk": { @@ -6323,7 +6003,7 @@ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "requires": { "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", + "minimalistic-assert": "1.0.1", "minimalistic-crypto-utils": "1.0.1" } }, @@ -6427,14 +6107,17 @@ "dev": true }, "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", + "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "requires": { + "safer-buffer": "2.1.2" + } }, "ieee754": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.10.tgz", - "integrity": "sha512-byWFX8OyW/qeVxcY21r6Ncxl0ZYHgnf0cPup2h34eHXrCJbOp7IuqnJ4Q0omfyWl6Z++BTI6bByf31pZt7iRLg==" + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", + "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==" }, "iferr": { "version": "0.1.5", @@ -6454,6 +6137,15 @@ "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "optional": true, + "requires": { + "minimatch": "3.0.4" + } + }, "immediate": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", @@ -6465,18 +6157,24 @@ "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "2.0.1" - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" }, "indexof": { "version": "0.0.1", @@ -6508,11 +6206,11 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.2", + "ansi-escapes": "3.1.0", + "chalk": "2.4.0", "cli-cursor": "2.1.0", "cli-width": "2.2.0", - "external-editor": "2.1.0", + "external-editor": "2.2.0", "figures": "2.0.0", "lodash": "4.17.5", "mute-stream": "0.0.7", @@ -6586,20 +6284,12 @@ "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" }, "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-arrayish": { @@ -6642,20 +6332,12 @@ } }, "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "kind-of": "3.2.2" } }, "is-date-object": { @@ -6664,20 +6346,20 @@ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" }, "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } @@ -6701,9 +6383,9 @@ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-finite": { "version": "1.0.2", @@ -6727,11 +6409,11 @@ "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" }, "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "2.1.1" } }, "is-hex-prefixed": { @@ -6834,9 +6516,9 @@ "dev": true }, "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", "dev": true, "requires": { "is-path-inside": "1.0.1" @@ -7016,11 +6698,6 @@ "wordwrap": "1.0.0" }, "dependencies": { - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=" - }, "esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", @@ -7043,14 +6720,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "requires": { - "abbrev": "1.0.9" - } - }, "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", @@ -7063,6 +6732,11 @@ "requires": { "has-flag": "1.0.0" } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" } } }, @@ -7140,23 +6814,35 @@ "babel-preset-es2015": "6.24.1", "babel-preset-stage-1": "6.24.1", "babel-register": "6.26.0", - "babylon": "7.0.0-beta.42", + "babylon": "7.0.0-beta.44", "colors": "1.2.1", - "flow-parser": "0.68.0", + "flow-parser": "0.70.0", "lodash": "4.17.5", "micromatch": "2.3.11", - "neo-async": "2.5.0", + "neo-async": "2.5.1", "node-dir": "0.1.8", "nomnom": "1.8.1", - "recast": "0.14.5", + "recast": "0.14.7", "temp": "0.8.3", "write-file-atomic": "1.3.4" + }, + "dependencies": { + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + } } }, "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=" }, "jshint-esnext": { "version": "2.7.0-3", @@ -7187,11 +6873,6 @@ "brace-expansion": "1.1.11" } }, - "shelljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", - "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" - }, "strip-json-comments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", @@ -7210,9 +6891,9 @@ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, "json-parse-better-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz", - "integrity": "sha512-xyQpxeWWMKyJps9CuGJYeng6ssI5bpqS9ltQpdVQ90t4ql6NdnxFKh95JcRt2cun/DjMVNrdjniLPuMA69xmCw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "json-schema": { "version": "0.2.3", @@ -7357,16 +7038,16 @@ } }, "lerna": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/lerna/-/lerna-2.9.1.tgz", - "integrity": "sha512-jwfX9kljxv4Y4oqbCbNNXfKNH9uHB7jp+pcS6chIbGeTs+5mhKYL61gYIfm9yYDEsTgyrojPhrIeZkuzijr2iA==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-2.10.2.tgz", + "integrity": "sha512-JijbAQoVQggw31xOOBXQ9Lvh7W8Obb5dl/4OH2Vv3+VIKFgqOwcxkzCWfNV9pbdiMA1OHAXo55aHe2WBqS2oNw==", "requires": { "async": "1.5.2", - "chalk": "2.3.2", + "chalk": "2.4.0", "cmd-shim": "2.0.2", "columnify": "1.5.4", "command-join": "2.0.0", - "conventional-changelog-cli": "1.3.21", + "conventional-changelog-cli": "1.3.22", "conventional-recommended-bump": "1.2.1", "dedent": "0.7.0", "execa": "0.8.0", @@ -7412,20 +7093,6 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - } - }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -7444,45 +7111,11 @@ "universalify": "0.1.1" } }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, "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-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "2.1.1" - } - }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -7500,13 +7133,6 @@ "parse-json": "4.0.0", "pify": "3.0.0", "strip-bom": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } } }, "os-locale": { @@ -7541,7 +7167,7 @@ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.1" + "json-parse-better-errors": "1.0.2" } }, "path-exists": { @@ -7555,15 +7181,13 @@ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "requires": { "pify": "3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } } }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -7610,6 +7234,11 @@ "pify": "2.3.0" } }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -7649,16 +7278,6 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" - } - }, "yargs": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", @@ -7825,11 +7444,16 @@ "log-update": "1.0.2", "ora": "0.2.3", "p-map": "1.2.0", - "rxjs": "5.5.7", + "rxjs": "5.5.10", "stream-to-observable": "0.2.0", "strip-ansi": "3.0.1" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -7851,6 +7475,14 @@ "object-assign": "4.1.1" } }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "2.0.1" + } + }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", @@ -7858,6 +7490,11 @@ "requires": { "chalk": "1.1.3" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -7881,6 +7518,11 @@ "strip-ansi": "3.0.1" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -7902,11 +7544,6 @@ "object-assign": "4.1.1" } }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" - }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", @@ -7914,6 +7551,11 @@ "requires": { "chalk": "1.1.3" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -7928,6 +7570,11 @@ "figures": "1.7.0" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -7970,6 +7617,11 @@ "exit-hook": "1.1.1", "onetime": "1.1.0" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -8113,7 +7765,7 @@ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "requires": { - "chalk": "2.3.2" + "chalk": "2.4.0" } }, "log-update": { @@ -8177,9 +7829,9 @@ } }, "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, "lru-cache": { "version": "4.1.2", @@ -8241,19 +7893,8 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", "requires": { - "hash-base": "3.0.4", - "inherits": "2.0.3" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - } + "hash-base": "3.0.4", + "inherits": "2.0.3" } }, "media-typer": { @@ -8286,7 +7927,7 @@ "requires": { "commondir": "1.0.1", "deep-extend": "0.4.2", - "ejs": "2.5.7", + "ejs": "2.5.9", "glob": "7.1.2", "globby": "6.1.0", "mkdirp": "0.5.1", @@ -8306,18 +7947,6 @@ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, "replace-ext": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", @@ -8367,7 +7996,7 @@ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "requires": { "errno": "0.1.7", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "memorystream": { @@ -8421,7 +8050,7 @@ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.1" + "json-parse-better-errors": "1.0.2" } }, "path-type": { @@ -8478,7 +8107,7 @@ "level-ws": "0.0.0", "levelup": "1.3.9", "memdown": "1.4.1", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "rlp": "2.0.0", "semaphore": "1.1.0" } @@ -8506,6 +8135,21 @@ "object.omit": "2.0.1", "parse-glob": "3.0.4", "regex-cache": "0.4.4" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + } } }, "miller-rabin": { @@ -8554,9 +8198,9 @@ } }, "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "minimalistic-crypto-utils": { "version": "1.0.1", @@ -8585,6 +8229,31 @@ "is-plain-obj": "1.1.0" } }, + "minipass": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", + "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", + "requires": { + "safe-buffer": "5.1.1", + "yallist": "3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" + } + } + }, + "minizlib": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", + "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "optional": true, + "requires": { + "minipass": "2.2.4" + } + }, "mississippi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", @@ -8641,9 +8310,9 @@ } }, "mocha": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.0.5.tgz", - "integrity": "sha512-3MM3UjZ5p8EJrYpG7s+29HAI9G7sTzKEe4+w37Dg0QP7qL4XGsV+Q2xet2cE37AqdgN1OtYQB6Vl98YiPV3PgA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.1.1.tgz", + "integrity": "sha512-kKKs/H1KrMMQIEsWNxGmb4/BGsmj0dkeyotEvbrAuQ01FcWRLssUNXCEUZk6SZtyJBi6EE7SL0zDDtItw1rGhw==", "dev": true, "requires": { "browser-stdout": "1.3.1", @@ -8654,6 +8323,7 @@ "glob": "7.1.2", "growl": "1.10.3", "he": "1.1.1", + "minimatch": "3.0.4", "mkdirp": "0.5.1", "supports-color": "4.4.0" }, @@ -8679,6 +8349,12 @@ "ms": "2.0.0" } }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", @@ -8707,9 +8383,9 @@ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==" }, "moment": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.0.tgz", - "integrity": "sha512-1muXCh8jb1N/gHRbn9VDUBr0GYb8A/aVcHlII9QSB68a50spqEVLIGN6KVmCOnSvJrUhC0edGgKU5ofnGXdYdg==" + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", + "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" }, "mout": { "version": "0.11.1", @@ -8817,15 +8493,26 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "needle": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", + "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", + "optional": true, + "requires": { + "debug": "2.6.9", + "iconv-lite": "0.4.21", + "sax": "1.2.4" + } + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, "neo-async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.0.tgz", - "integrity": "sha512-nJmSswG4As/MkRq7QZFuH/sf/yuv8ODdMZrY4Bedjp77a5MK4A6s7YbBB64c9u79EBUOfXUXBvArmvzTD0X+6g==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", + "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==" }, "nice-try": { "version": "1.0.4", @@ -8866,11 +8553,11 @@ "process": "0.11.10", "punycode": "1.4.1", "querystring-es3": "0.2.1", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "stream-browserify": "2.0.1", "stream-http": "2.8.1", - "string_decoder": "1.0.3", - "timers-browserify": "2.0.6", + "string_decoder": "1.1.1", + "timers-browserify": "2.0.10", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", @@ -8883,8 +8570,8 @@ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "base64-js": "1.2.3", - "ieee754": "1.1.10", + "base64-js": "1.3.0", + "ieee754": "1.1.11", "isarray": "1.0.0" } }, @@ -8896,40 +8583,358 @@ } } }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" + }, "nodemon": { - "version": "1.17.2", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.17.2.tgz", - "integrity": "sha512-v1fVfgaZanBHP/ZOc9V72uKKIF4dcRfZV7GISNVi/w/g5pwB7nIvOK+RGULjrzhs97cwUX41cM4+dlw+bg2igw==", + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.17.3.tgz", + "integrity": "sha512-8AtS+wA5u6qoE12LONjqOzUzxAI5ObzSw6U5LgqpaO/0y6wwId4l5dN0ZulYyYdpLZD1MbkBp7GjG1hqaoRqYg==", "dev": true, "requires": { - "chokidar": "2.0.2", + "chokidar": "2.0.3", "debug": "3.1.0", "ignore-by-default": "1.0.1", "minimatch": "3.0.4", "pstree.remy": "1.1.0", "semver": "5.5.0", - "supports-color": "5.3.0", + "supports-color": "5.4.0", "touch": "3.1.0", "undefsafe": "2.0.2", - "update-notifier": "2.3.0" + "update-notifier": "2.5.0" }, "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "chokidar": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "fsevents": "1.2.0", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" + } + }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" } }, - "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "has-flag": "3.0.0" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } } } @@ -8971,12 +8976,11 @@ } }, "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1.0.9" } }, "normalize-package-data": { @@ -9015,6 +9019,22 @@ } } }, + "npm-bundled": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", + "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", + "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", + "optional": true, + "requires": { + "ignore-walk": "3.0.1", + "npm-bundled": "1.0.3" + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -9029,7 +9049,7 @@ "integrity": "sha512-w/czxbmI2B/L7eotpo8wfE5u92X6Oguy+L3ECgfUUaERNSAtIHR0djYqzGVD7BakCH+HE3hHoDxV798rug/A6g==", "dev": true, "requires": { - "nodemon": "1.17.2", + "nodemon": "1.17.3", "through2": "2.0.3" } }, @@ -9094,43 +9114,6 @@ "requires": { "is-descriptor": "0.1.6" } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } } } }, @@ -9226,13 +9209,6 @@ "requires": { "minimist": "0.0.8", "wordwrap": "0.0.3" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } } }, "optionator": { @@ -9246,6 +9222,13 @@ "prelude-ls": "1.1.2", "type-check": "0.3.2", "wordwrap": "1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + } } }, "ora": { @@ -9259,6 +9242,11 @@ "object-assign": "4.1.1" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -9292,6 +9280,11 @@ "exit-hook": "1.1.1", "onetime": "1.1.0" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -9400,26 +9393,6 @@ "registry-auth-token": "3.3.2", "registry-url": "3.1.0", "semver": "5.5.0" - }, - "dependencies": { - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", - "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" - } - } } }, "pako": { @@ -9436,19 +9409,19 @@ "requires": { "cyclist": "0.2.2", "inherits": "2.0.3", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "requires": { "asn1.js": "4.10.1", - "browserify-aes": "1.1.1", - "create-hash": "1.1.3", + "browserify-aes": "1.2.0", + "create-hash": "1.2.0", "evp_bytestokey": "1.0.3", - "pbkdf2": "3.0.14" + "pbkdf2": "3.0.16" } }, "parse-github-repo-url": { @@ -9465,6 +9438,21 @@ "is-dotfile": "1.0.3", "is-extglob": "1.0.0", "is-glob": "2.0.1" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + } } }, "parse-headers": { @@ -9571,13 +9559,13 @@ } }, "pbkdf2": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", - "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", + "create-hash": "1.2.0", + "create-hmac": "1.1.7", + "ripemd160": "2.0.2", "safe-buffer": "5.1.1", "sha.js": "2.4.11" } @@ -9616,12 +9604,21 @@ } }, "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "requires": { - "find-up": "1.1.2" + "find-up": "2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + } } }, "pluralize": { @@ -9652,9 +9649,9 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "prettier": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz", - "integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==" + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", + "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=" }, "pretty-bytes": { "version": "4.0.2", @@ -9726,14 +9723,14 @@ } }, "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", "requires": { "bn.js": "4.11.8", "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", + "create-hash": "1.2.0", + "parse-asn1": "5.1.1", "randombytes": "2.0.6" } }, @@ -9891,6 +9888,11 @@ "statuses": "1.5.0" } }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, "setprototypeof": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", @@ -9960,16 +9962,16 @@ } }, "readable-stream": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", - "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "2.0.0", "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", + "string_decoder": "1.1.1", "util-deprecate": "1.0.2" } }, @@ -9980,19 +9982,26 @@ "requires": { "graceful-fs": "4.1.11", "minimatch": "3.0.4", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "set-immediate-shim": "1.0.1" } }, "recast": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.5.tgz", - "integrity": "sha512-GNFQGQrqW1R8w9XhhgYIN8H7ePPp088D+svHlb7DdP5DCqNDqTwH7lt378EouM+L18kCwkmqpAz1unLqpPhHmw==", + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.14.7.tgz", + "integrity": "sha512-/nwm9pkrcWagN40JeJhkPaRxiHXBRkXyRh/hgU088Z/v+qCy+zIHHY6bC6o7NaKAxPqtE6nD8zBH1LfU0/Wx6A==", "requires": { "ast-types": "0.11.3", "esprima": "4.0.0", "private": "0.1.8", "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, "rechoir": { @@ -10000,7 +10009,7 @@ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "requires": { - "resolve": "1.6.0" + "resolve": "1.7.1" } }, "redent": { @@ -10010,13 +10019,6 @@ "requires": { "indent-string": "3.2.0", "strip-indent": "2.0.0" - }, - "dependencies": { - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" - } } }, "regenerate": { @@ -10058,9 +10060,9 @@ } }, "regexpp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.0.1.tgz", - "integrity": "sha512-8Ph721maXiOYSLtaDGKVmDn5wdsNaF6Px85qFNeMPQq0r8K5Y10tgP6YuR65Ws35n4DvzFcCxEnRNBIXQunzLw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", "dev": true }, "regexpu-core": { @@ -10101,6 +10103,13 @@ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "requires": { "jsesc": "0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } } }, "remove-trailing-separator": { @@ -10181,6 +10190,13 @@ "tough-cookie": "2.3.4", "tunnel-agent": "0.6.0", "uuid": "3.2.1" + }, + "dependencies": { + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + } } }, "require-directory": { @@ -10206,12 +10222,20 @@ "requires": { "caller-path": "0.1.0", "resolve-from": "1.0.1" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } } }, "resolve": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.6.0.tgz", - "integrity": "sha512-mw7JQNu5ExIkcw4LPih0owX/TZXjD/ZUF/ZQ/pDnkw3ZKhDcZZw5klmBlj6gVMwjQ3Pz5Jgu7F3d0jcDVuEWdw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "requires": { "path-parse": "1.0.5" } @@ -10222,13 +10246,6 @@ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "requires": { "resolve-from": "3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - } } }, "resolve-dir": { @@ -10241,10 +10258,9 @@ } }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, "resolve-url": { "version": "0.2.1", @@ -10257,7 +10273,7 @@ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "requires": { - "lowercase-keys": "1.0.0" + "lowercase-keys": "1.0.1" } }, "restore-cursor": { @@ -10301,11 +10317,11 @@ } }, "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "requires": { - "hash-base": "2.0.2", + "hash-base": "3.0.4", "inherits": "2.0.3" } }, @@ -10350,9 +10366,9 @@ } }, "rxjs": { - "version": "5.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.7.tgz", - "integrity": "sha512-Hxo2ac8gRQjwjtKgukMIwBRbq5+KAeEV5hXM4obYBOAghev41bDQWgFH4svYiU9UnQ5kNww2LgfyBdevCd2HXA==", + "version": "5.5.10", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz", + "integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==", "requires": { "symbol-observable": "1.0.1" } @@ -10371,6 +10387,17 @@ "ret": "0.1.15" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "optional": true + }, "schema-utils": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz", @@ -10428,7 +10455,7 @@ "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz", "integrity": "sha1-oyJfpLJST4AnAHYeKFW987LZIWM=", "requires": { - "pbkdf2": "3.0.14" + "pbkdf2": "3.0.16" } }, "secp256k1": { @@ -10439,7 +10466,7 @@ "bindings": "1.3.0", "bip66": "1.1.5", "bn.js": "4.11.8", - "create-hash": "1.1.3", + "create-hash": "1.2.0", "drbg.js": "1.0.1", "elliptic": "6.4.0", "nan": "2.10.0", @@ -10501,9 +10528,9 @@ } }, "serialize-javascript": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.4.0.tgz", - "integrity": "sha1-fJWFFNtqwkQ6irwGLcn3iGp/YAU=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", "dev": true }, "serve-static": { @@ -10603,14 +10630,9 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shelljs": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.1.tgz", - "integrity": "sha512-YA/iYtZpzFe5HyWVGrb02FjPxc4EMCfpoU/Phg9fQoyMC72u9598OUBrsU8IrtwAKG0tO8IYaqbaLIw+k3IRGA==", - "requires": { - "glob": "7.1.2", - "interpret": "1.1.0", - "rechoir": "0.6.2" - } + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, "sigmund": { "version": "1.0.1", @@ -10643,21 +10665,9 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" }, "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - } - } + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" }, "slide": { "version": "1.1.6", @@ -10671,90 +10681,33 @@ "dev": true, "requires": { "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "is-descriptor": "0.1.6" } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-extendable": "0.1.1" } }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -10783,11 +10736,46 @@ "is-descriptor": "1.0.2" } }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -10819,9 +10807,9 @@ "integrity": "sha1-Q66MQZ/TrAVqBfip0fsQIs1B7MI=" }, "solc": { - "version": "0.4.22", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.22.tgz", - "integrity": "sha512-ExrPo2qqCPXo4vXEJaROHExlBdIqgV1vv5fwXMwIc19AUujlQyfyXX8AM7kOQ7xkyHqZ3rj7LJ/BHssAbHym6w==", + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.23.tgz", + "integrity": "sha512-AT7anLHY6uIRg2It6N0UlCHeZ7YeecIkUhnlirrCgCPCUevtnoN48BxvgigN/4jJTRljv5oFhAJtI6gvHzT5DQ==", "requires": { "fs-extra": "0.30.0", "memorystream": "0.3.1", @@ -10839,7 +10827,7 @@ "async": "2.6.0", "glob": "7.1.2", "lodash": "4.17.5", - "solc": "0.4.22", + "solc": "0.4.23", "web3": "0.19.1", "yargs": "8.0.2" }, @@ -10862,6 +10850,20 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -11026,14 +11028,14 @@ "requires": { "ajv": "5.5.2", "babel-code-frame": "6.26.0", - "chalk": "2.3.2", + "chalk": "2.4.0", "concat-stream": "1.6.2", "cross-spawn": "5.1.0", "debug": "2.6.9", "doctrine": "2.1.0", "eslint-scope": "3.7.1", "espree": "3.5.4", - "esquery": "1.0.0", + "esquery": "1.0.1", "estraverse": "4.2.0", "esutils": "2.0.2", "file-entry-cache": "2.0.0", @@ -11111,40 +11113,6 @@ "bignumber.js": { "version": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "requires": { - "glob": "7.1.2", - "interpret": "1.1.0", - "rechoir": "0.6.2" - } - }, - "web3": { - "version": "0.18.4", - "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", - "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", - "requires": { - "bignumber.js": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", - "crypto-js": "3.1.8", - "utf8": "2.1.1", - "xhr2": "0.1.4", - "xmlhttprequest": "1.8.0" - } - } - } - }, - "solidity-parser-sc": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/solidity-parser-sc/-/solidity-parser-sc-0.4.7.tgz", - "integrity": "sha512-wbX2806sm6thZME1aniqLcLH9HYwNwuKke6aw/FEgupCvoT9Iq5PdwuN9OyHWKGBOVeczpM5tCrnRXWNQ04YVw==", - "requires": { - "mocha": "2.5.3", - "pegjs": "0.10.0", - "yargs": "4.8.1" - }, - "dependencies": { "commander": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", @@ -11168,15 +11136,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz", "integrity": "sha1-Tbwv5nTnGUnK8/smlc5/LcHZqNE=" }, - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "requires": { - "inherits": "2.0.3", - "minimatch": "0.3.0" - } - }, "growl": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", @@ -11211,6 +11170,17 @@ "mkdirp": "0.5.1", "supports-color": "1.2.0", "to-iso-string": "0.0.2" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "requires": { + "inherits": "2.0.3", + "minimatch": "0.3.0" + } + } } }, "ms": { @@ -11218,10 +11188,42 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "requires": { + "glob": "7.1.2", + "interpret": "1.1.0", + "rechoir": "0.6.2" + } + }, + "solidity-parser-sc": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/solidity-parser-sc/-/solidity-parser-sc-0.4.7.tgz", + "integrity": "sha512-wbX2806sm6thZME1aniqLcLH9HYwNwuKke6aw/FEgupCvoT9Iq5PdwuN9OyHWKGBOVeczpM5tCrnRXWNQ04YVw==", + "requires": { + "mocha": "2.5.3", + "pegjs": "0.10.0", + "yargs": "4.8.1" + } + }, "supports-color": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz", "integrity": "sha1-/x7R5hFp0Gs88tWI4YixjYhH4X4=" + }, + "web3": { + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-0.18.4.tgz", + "integrity": "sha1-gewXhBRUkfLqqJVbMcBgSeB8Xn0=", + "requires": { + "bignumber.js": "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2", + "crypto-js": "3.1.8", + "utf8": "2.1.1", + "xhr2": "0.1.4", + "xmlhttprequest": "1.8.0" + } } } }, @@ -11238,42 +11240,34 @@ "sol-explore": "1.6.2", "solparse": "1.4.2" }, + "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + } + } + }, + "solparse": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/solparse/-/solparse-1.4.2.tgz", + "integrity": "sha512-TX7KhhJYpPDIjkS3kOfXn7u1yUD0AFk2mbrImsnPH2xPxLQ6fqppdIDjuJcU4Io1TuKbUg+Ar5n7tRB+5iJZww==", + "requires": { + "mocha": "4.1.0", + "pegjs": "0.10.0", + "yargs": "10.1.2" + }, "dependencies": { "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" - } - }, "camelcase": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "requires": { - "anymatch": "1.3.2", - "async-each": "1.0.1", - "fsevents": "1.1.3", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, "cliui": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.0.0.tgz", @@ -11285,9 +11279,9 @@ } }, "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" }, "debug": { "version": "3.1.0", @@ -11297,10 +11291,19 @@ "ms": "2.0.0" } }, - "diff": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", - "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==" + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } }, "find-up": { "version": "2.1.0", @@ -11335,13 +11338,6 @@ "he": "1.1.1", "mkdirp": "0.5.1", "supports-color": "4.4.0" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" - } } }, "os-locale": { @@ -11354,16 +11350,6 @@ "mem": "1.1.0" } }, - "solparse": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/solparse/-/solparse-1.4.2.tgz", - "integrity": "sha512-TX7KhhJYpPDIjkS3kOfXn7u1yUD0AFk2mbrImsnPH2xPxLQ6fqppdIDjuJcU4Io1TuKbUg+Ar5n7tRB+5iJZww==", - "requires": { - "mocha": "4.1.0", - "pegjs": "0.10.0", - "yargs": "10.1.2" - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -11438,9 +11424,12 @@ "dev": true }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } }, "source-map-resolve": { "version": "0.5.1", @@ -11448,7 +11437,7 @@ "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", "dev": true, "requires": { - "atob": "2.0.3", + "atob": "2.1.0", "decode-uri-component": "0.2.0", "resolve-url": "0.2.1", "source-map-url": "0.4.0", @@ -11461,6 +11450,13 @@ "integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", "requires": { "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, "source-map-url": { @@ -11498,10 +11494,9 @@ "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==" }, "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", "requires": { "through": "2.3.8" } @@ -11557,76 +11552,19 @@ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, - "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "0.1.6" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-descriptor": "0.1.6" } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, @@ -11642,7 +11580,7 @@ "dev": true, "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.5" + "readable-stream": "2.3.6" } }, "stream-combiner": { @@ -11672,7 +11610,7 @@ "requires": { "builtin-status-codes": "3.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "to-arraybuffer": "1.0.1", "xtend": "4.0.1" } @@ -11722,9 +11660,9 @@ } }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "5.1.1" } @@ -11798,7 +11736,7 @@ "byline": "5.0.0", "duplexer": "0.1.1", "minimist": "0.1.0", - "moment": "2.22.0", + "moment": "2.22.1", "through": "2.3.8" }, "dependencies": { @@ -11810,9 +11748,12 @@ } }, "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "requires": { + "has-flag": "3.0.0" + } }, "swarm-js": { "version": "0.1.37", @@ -11842,6 +11783,27 @@ "graceful-fs": "4.1.11", "jsonfile": "2.4.0" } + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "requires": { + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.1", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.1", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" + } } } }, @@ -11858,7 +11820,7 @@ "requires": { "ajv": "5.5.2", "ajv-keywords": "2.1.1", - "chalk": "2.3.2", + "chalk": "2.4.0", "lodash": "4.17.5", "slice-ansi": "1.0.0", "string-width": "2.1.1" @@ -11876,6 +11838,15 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -11954,7 +11925,7 @@ "requires": { "bl": "1.2.2", "end-of-stream": "1.4.1", - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "xtend": "4.0.1" } }, @@ -12015,6 +11986,11 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" } } }, @@ -12025,13 +12001,6 @@ "requires": { "os-tmpdir": "1.0.2", "uuid": "2.0.3" - }, - "dependencies": { - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" - } } }, "term-size": { @@ -12041,6 +12010,23 @@ "dev": true, "requires": { "execa": "0.7.0" + }, + "dependencies": { + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + } } }, "text-extensions": { @@ -12084,7 +12070,7 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "requires": { - "readable-stream": "2.3.5", + "readable-stream": "2.3.6", "xtend": "4.0.1" } }, @@ -12094,9 +12080,9 @@ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "timers-browserify": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", - "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", "dev": true, "requires": { "setimmediate": "1.0.5" @@ -12117,9 +12103,9 @@ "dev": true }, "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-iso-string": { "version": "0.0.2", @@ -12175,6 +12161,17 @@ "dev": true, "requires": { "nopt": "1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1.0.9" + } + } } }, "tough-cookie": { @@ -12206,13 +12203,13 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, "truffle": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/truffle/-/truffle-4.1.6.tgz", - "integrity": "sha512-0b3vZHEM/R6JT3E/K5AB4r/REEwnFqm0YnhUcCoWzjEMRCExcRlATHqePos99Q/KFixJp3+X+zhDkx86WUWnLw==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/truffle/-/truffle-4.1.7.tgz", + "integrity": "sha512-fe6BIcD9xo6iIJvV1m6ZhOk56kmB8k38kdoWOKYnPPw7ZUUSupgojeTb2K5e+4qIpIHvEvmET4yLUjSGR+hvwA==", "requires": { "mocha": "3.5.3", "original-require": "1.0.1", - "solc": "0.4.21" + "solc": "0.4.23" }, "dependencies": { "commander": { @@ -12278,18 +12275,6 @@ "supports-color": "3.1.2" } }, - "solc": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.21.tgz", - "integrity": "sha512-8lJmimVjOG9AJOQRWS2ph4rSctPMsPGZ4H360HLs5iI+euUlt7iAvUxSLeFZZzwk0kas4Qta7HmlMXNU3yYwhw==", - "requires": { - "fs-extra": "0.30.0", - "memorystream": "0.3.1", - "require-from-string": "1.2.1", - "semver": "5.5.0", - "yargs": "4.8.1" - } - }, "supports-color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", @@ -12451,15 +12436,15 @@ "optional": true }, "uglifyjs-webpack-plugin": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz", - "integrity": "sha512-z0IbjpW8b3O/OVn+TTZN4pI29RN1zktFBXLIzzfZ+++cUtZ1ERSlLWgpE/5OERuEUs1ijVQnpYAkSlpoVmQmSQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz", + "integrity": "sha512-hIQJ1yxAPhEA2yW/i7Fr+SXZVMp+VEI3d42RTHBgQd2yhp/1UdBcR3QEWPV5ahBxlqQDMEMTuTEvDHSFINfwSw==", "dev": true, "requires": { "cacache": "10.0.4", "find-cache-dir": "1.0.0", "schema-utils": "0.4.5", - "serialize-javascript": "1.4.0", + "serialize-javascript": "1.5.0", "source-map": "0.6.1", "uglify-es": "3.3.9", "webpack-sources": "1.1.0", @@ -12472,6 +12457,12 @@ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "dev": true }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "uglify-es": { "version": "3.3.9", "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", @@ -12509,7 +12500,7 @@ "integrity": "sha1-pyyTb3e5a/UvX357RnGAYoVR3vs=", "requires": { "base64-js": "0.0.8", - "ieee754": "1.1.10", + "ieee754": "1.1.11", "isarray": "1.0.0" } } @@ -12669,15 +12660,16 @@ "dev": true }, "update-notifier": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", - "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", "dev": true, "requires": { "boxen": "1.3.0", - "chalk": "2.3.2", - "configstore": "3.1.1", + "chalk": "2.4.0", + "configstore": "3.1.2", "import-lazy": "2.1.0", + "is-ci": "1.1.0", "is-installed-globally": "0.1.0", "is-npm": "1.0.0", "latest-version": "3.1.0", @@ -12799,9 +12791,9 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" }, "v8-compile-cache": { "version": "1.1.2", @@ -12823,7 +12815,7 @@ "eip777": "0.0.3", "eip820": "0.0.17", "giveth-common-contracts": "0.5.0", - "solc": "0.4.22", + "solc": "0.4.23", "truffle-hdwallet-provider": "0.0.3" } }, @@ -12880,9 +12872,324 @@ "integrity": "sha512-RSlipNQB1u48cq0wH/BNfCu1tD/cJ8ydFIkNYhp9o+3d+8unClkIovpW5qpFPgmL9OE48wfAnlZydXByWP82AA==", "dev": true, "requires": { - "chokidar": "2.0.2", + "chokidar": "2.0.3", "graceful-fs": "4.1.11", - "neo-async": "2.5.0" + "neo-async": "2.5.1" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.10", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "chokidar": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.2", + "fsevents": "1.2.0", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.4" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.9", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" + } + } } }, "wcwidth": { @@ -12915,6 +13222,29 @@ "got": "7.1.0", "swarm-js": "0.1.37", "underscore": "1.8.3" + }, + "dependencies": { + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "requires": { + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "3.0.0", + "is-plain-obj": "1.1.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "isurl": "1.0.0", + "lowercase-keys": "1.0.1", + "p-cancelable": "0.3.0", + "p-timeout": "1.2.1", + "safe-buffer": "5.1.1", + "timed-out": "4.0.1", + "url-parse-lax": "1.0.0", + "url-to-options": "1.0.1" + } + } } }, "web3-core": { @@ -13115,11 +13445,11 @@ "ethereumjs-block": "1.7.1", "ethereumjs-tx": "1.3.4", "ethereumjs-util": "5.1.5", - "ethereumjs-vm": "2.3.3", + "ethereumjs-vm": "2.3.4", "isomorphic-fetch": "2.2.1", "request": "2.85.0", "semaphore": "1.1.0", - "solc": "0.4.22", + "solc": "0.4.23", "tape": "4.9.0", "web3": "0.16.0", "xhr": "2.4.1", @@ -13182,17 +13512,6 @@ "underscore": "1.8.3", "web3-core-helpers": "1.0.0-beta.34", "websocket": "git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c" - }, - "dependencies": { - "websocket": { - "version": "git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c", - "requires": { - "debug": "2.6.9", - "nan": "2.10.0", - "typedarray-to-buffer": "3.1.5", - "yaeti": "0.0.6" - } - } } }, "web3-server-tools": { @@ -13201,7 +13520,7 @@ "bignumber.js": "6.0.0", "ethereumjs-tx": "1.3.4", "request": "2.85.0", - "solc": "0.4.22", + "solc": "0.4.23", "web3": "1.0.0-beta.34" }, "dependencies": { @@ -13245,16 +13564,16 @@ } }, "webpack": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.4.1.tgz", - "integrity": "sha512-iLUJcsEAjaPKWbB32ADr29Pg9fPUVfFEMPK4VXyZGftzhSEFg2BLjHLoBYZ14wdTEA8xqG/hjpuX8qOmabRYvw==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.6.0.tgz", + "integrity": "sha512-Fu/k/3fZeGtIhuFkiYpIy1UDHhMiGKjG4FFPVuvG+5Os2lWA1ttWpmi9Qnn6AgfZqj9MvhZW/rmj/ip+nHr06g==", "dev": true, "requires": { "acorn": "5.5.3", "acorn-dynamic-import": "3.0.0", "ajv": "6.4.0", "ajv-keywords": "3.1.0", - "chrome-trace-event": "0.1.2", + "chrome-trace-event": "0.1.3", "enhanced-resolve": "4.0.0", "eslint-scope": "3.7.1", "loader-runner": "2.3.0", @@ -13262,11 +13581,11 @@ "memory-fs": "0.4.1", "micromatch": "3.1.10", "mkdirp": "0.5.1", - "neo-async": "2.5.0", + "neo-async": "2.5.1", "node-libs-browser": "2.1.0", "schema-utils": "0.4.5", "tapable": "1.0.0", - "uglifyjs-webpack-plugin": "1.2.4", + "uglifyjs-webpack-plugin": "1.2.5", "watchpack": "1.5.0", "webpack-sources": "1.1.0" }, @@ -13302,18 +13621,16 @@ "dev": true }, "braces": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.1.tgz", - "integrity": "sha512-SO5lYHA3vO6gz66erVvedSCkp7AKWdv6VcQ2N4ysXfPxdAlxAMMAdwegGGcv1Bqwm7naF1hNdk5d6AAIEHV2nQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { "arr-flatten": "1.1.0", "array-unique": "0.3.2", - "define-property": "1.0.0", "extend-shallow": "2.0.1", "fill-range": "4.0.0", "isobject": "3.0.1", - "kind-of": "6.0.2", "repeat-element": "1.1.2", "snapdragon": "0.8.2", "snapdragon-node": "2.1.1", @@ -13321,15 +13638,6 @@ "to-regex": "3.0.2" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "1.0.2" - } - }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", @@ -13374,6 +13682,46 @@ "is-extendable": "0.1.1" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -13453,43 +13801,32 @@ } }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.6" - } - } + "kind-of": "6.0.2" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" } }, "is-number": { @@ -13532,7 +13869,7 @@ "requires": { "arr-diff": "4.0.0", "array-unique": "0.3.2", - "braces": "2.3.1", + "braces": "2.3.2", "define-property": "2.0.2", "extend-shallow": "3.0.2", "extglob": "2.0.4", @@ -13577,7 +13914,7 @@ "babel-register": "6.26.0", "babylon": "6.18.0", "colors": "1.2.1", - "flow-parser": "0.68.0", + "flow-parser": "0.70.0", "lodash": "4.17.5", "micromatch": "2.3.11", "node-dir": "0.1.8", @@ -13593,27 +13930,44 @@ "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==", "requires": { "ast-types": "0.10.1", - "core-js": "2.5.3", + "core-js": "2.5.5", "esprima": "4.0.0", "private": "0.1.8", "source-map": "0.6.1" } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } } } }, "webpack-cli": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.0.12.tgz", - "integrity": "sha512-kMi6NquWwUhmQok2IFrtAEIbaVvujzYvtDGb5WElkwylbLboDsCgizv8IjSi/Q6SQRJ8Crayl1JCBnIJ3rU4Rg==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-2.0.14.tgz", + "integrity": "sha512-gRoWaxSi2JWiYsn1QgOTb6ENwIeSvN1YExZ+kJ0STsTZK7bWPElW+BBBv1UnTbvcPC3v7E17mK8hlFX8DOYSGw==", "requires": { - "chalk": "2.3.2", + "chalk": "2.4.0", "cross-spawn": "6.0.5", "diff": "3.5.0", "enhanced-resolve": "4.0.0", + "envinfo": "4.4.2", "glob-all": "3.1.0", "global-modules": "1.0.0", "got": "8.3.0", - "inquirer": "5.1.0", + "import-local": "1.0.0", + "inquirer": "5.2.0", "interpret": "1.1.0", "jscodeshift": "0.5.0", "listr": "0.13.0", @@ -13623,14 +13977,13 @@ "mkdirp": "0.5.1", "p-each-series": "1.0.0", "p-lazy": "1.0.0", - "prettier": "1.11.1", - "resolve-cwd": "2.0.0", - "supports-color": "5.3.0", + "prettier": "1.12.1", + "supports-color": "5.4.0", "v8-compile-cache": "1.1.2", "webpack-addons": "1.1.5", - "yargs": "11.0.0", - "yeoman-environment": "2.0.5", - "yeoman-generator": "2.0.3" + "yargs": "11.1.0", + "yeoman-environment": "2.0.6", + "yeoman-generator": "2.0.4" }, "dependencies": { "ansi-regex": { @@ -13665,6 +14018,37 @@ "which": "1.3.0" } }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.2", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + } + } + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -13686,9 +14070,9 @@ "into-stream": "3.1.0", "is-retry-allowed": "1.1.0", "isurl": "1.0.0", - "lowercase-keys": "1.0.0", + "lowercase-keys": "1.0.1", "mimic-response": "1.0.0", - "p-cancelable": "0.4.0", + "p-cancelable": "0.4.1", "p-timeout": "2.0.1", "pify": "3.0.0", "safe-buffer": "5.1.1", @@ -13698,20 +14082,20 @@ } }, "inquirer": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.1.0.tgz", - "integrity": "sha512-kn7N70US1MSZHZHSGJLiZ7iCwwncc7b0gc68YtlX29OjI3Mp0tSVV+snVXpZ1G+ONS3Ac9zd1m6hve2ibLDYfA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "requires": { - "ansi-escapes": "3.0.0", - "chalk": "2.3.2", + "ansi-escapes": "3.1.0", + "chalk": "2.4.0", "cli-cursor": "2.1.0", "cli-width": "2.2.0", - "external-editor": "2.1.0", + "external-editor": "2.2.0", "figures": "2.0.0", "lodash": "4.17.5", "mute-stream": "0.0.7", "run-async": "2.3.0", - "rxjs": "5.5.7", + "rxjs": "5.5.10", "string-width": "2.1.1", "strip-ansi": "4.0.0", "through": "2.3.8" @@ -13733,9 +14117,9 @@ } }, "p-cancelable": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.0.tgz", - "integrity": "sha512-/AodqPe1y/GYbhSlnMjxukLGQfQIgsmjSy2CXCNB96kg4ozKvmlovuHEKICToOO/yS3LLWgrWI1dFtFfrePS1g==" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" }, "p-timeout": { "version": "2.0.1", @@ -13772,14 +14156,6 @@ "ansi-regex": "3.0.0" } }, - "supports-color": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz", - "integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==", - "requires": { - "has-flag": "3.0.0" - } - }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -13794,9 +14170,9 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "yargs": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz", - "integrity": "sha512-Rjp+lMYQOWtgqojx1dEWorjCofi1YN7AoFvYV7b1gx/7dAAeuI4kN5SZiEvr0ZmsZTOpDRcCqrpI10L31tFkBw==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "requires": { "cliui": "4.0.0", "decamelize": "1.2.0", @@ -13830,6 +14206,23 @@ "requires": { "source-list-map": "2.0.0", "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket": { + "version": "git://github.com/frozeman/WebSocket-Node.git#7004c39c42ac98875ab61126e5b4a925430f592c", + "requires": { + "debug": "2.6.9", + "nan": "2.10.0", + "typedarray-to-buffer": "3.1.5", + "yaeti": "0.0.6" } }, "whatwg-fetch": { @@ -13906,9 +14299,9 @@ "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" }, "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" }, "worker-farm": { "version": "1.6.0", @@ -13943,13 +14336,13 @@ } }, "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "requires": { "graceful-fs": "4.1.11", "imurmurhash": "0.1.4", - "slide": "1.1.6" + "signal-exit": "3.0.2" } }, "write-json-file": { @@ -13965,25 +14358,10 @@ "write-file-atomic": "2.3.0" }, "dependencies": { - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=" - }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" - } } } }, @@ -14115,13 +14493,13 @@ } }, "yeoman-environment": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.5.tgz", - "integrity": "sha512-6/W7/B54OPHJXob0n0+pmkwFsirC8cokuQkPSmT/D0lCcSxkKtg/BA6ZnjUBIwjuGqmw3DTrT4en++htaUju5g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.6.tgz", + "integrity": "sha512-jzHBTTy8EPI4ImV8dpUMt+Q5zELkSU5xvGpndHcHudQ4tqN6YgIWaCGmRFl+HDchwRUkcgyjQ+n6/w5zlJBCPg==", "requires": { - "chalk": "2.3.2", + "chalk": "2.4.0", "debug": "3.1.0", - "diff": "3.5.0", + "diff": "3.3.1", "escape-string-regexp": "1.0.5", "globby": "6.1.0", "grouped-queue": "0.3.3", @@ -14141,28 +14519,16 @@ "requires": { "ms": "2.0.0" } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } } } }, "yeoman-generator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.3.tgz", - "integrity": "sha512-mODmrZ26a94djmGZZuIiomSGlN4wULdou29ZwcySupb2e9FdvoCl7Ps2FqHFjEHio3kOl/iBeaNqrnx3C3NwWg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-2.0.4.tgz", + "integrity": "sha512-Sgvz3MAkOpEIobcpW3rjEl6bOTNnl8SkibP9z7hYKfIGIlw0QDC2k0MAeXvyE2pLqc2M0Duql+6R7/W9GrJojg==", "requires": { "async": "2.6.0", - "chalk": "2.3.2", + "chalk": "2.4.0", "cli-table": "0.3.1", "cross-spawn": "5.1.0", "dargs": "5.1.0", @@ -14185,7 +14551,7 @@ "shelljs": "0.8.1", "text-table": "0.2.0", "through2": "2.0.3", - "yeoman-environment": "2.0.5" + "yeoman-environment": "2.0.6" }, "dependencies": { "async": { @@ -14196,6 +14562,11 @@ "lodash": "4.17.5" } }, + "dargs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-5.1.0.tgz", + "integrity": "sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=" + }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -14234,7 +14605,7 @@ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { "error-ex": "1.3.1", - "json-parse-better-errors": "1.0.1" + "json-parse-better-errors": "1.0.2" } }, "path-type": { @@ -14269,6 +14640,16 @@ "read-pkg": "3.0.0" } }, + "shelljs": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.1.tgz", + "integrity": "sha512-YA/iYtZpzFe5HyWVGrb02FjPxc4EMCfpoU/Phg9fQoyMC72u9598OUBrsU8IrtwAKG0tO8IYaqbaLIw+k3IRGA==", + "requires": { + "glob": "7.1.2", + "interpret": "1.1.0", + "rechoir": "0.6.2" + } + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", diff --git a/package.json b/package.json index dcb586b..63062ea 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "test:lint:fix": "eslint -c .eslintrc . --color=true --quiet --fix", "truffle:compile": "truffle compile", "truffle:migrate": "truffle migrate", - "start:testrpc": "ganache-cli -u 0 -s frontier-seed", + "start:testrpc": "ganache-cli -u 0 -s finhaven-seed", "watch": "npm-watch" }, "watch": { diff --git a/test/accounts.js b/test/accounts.js index 3a26fce..261cca6 100644 --- a/test/accounts.js +++ b/test/accounts.js @@ -34,8 +34,8 @@ keys.push('(8) f6839e55e842fa6893f4d07219ae1886a751262063b01fd7b24595e8c2ea5034' keys.push('(9) 03f9560e3745f2036b6db24a9df3ec8544d729ef754bcdba6b1a08ebf6e5d022'.split(' ')[1]); // tack on the 0x -keys = keys.map(k => `0x${k}`); +keys = keys.map((k) => `0x${k}`); module.exports = { - accounts, keys, + accounts, keys }; diff --git a/test/contracts/AlwaysValidator.sol b/test/contracts/AlwaysValidator.sol index 358c6b4..2980e68 100644 --- a/test/contracts/AlwaysValidator.sol +++ b/test/contracts/AlwaysValidator.sol @@ -3,21 +3,21 @@ pragma solidity ^0.4.21; import "validated-token/contracts/TokenValidator.sol"; contract AlwaysValidator is TokenValidator { - function AlwaysValidator() public {} + constructor() public {} - function check( - address /* token */, - address /* _address */ - ) external returns (byte resultCode) { - return hex"11"; - } + function check( + address /* token */, + address /* _address */ + ) external returns (byte resultCode) { + return hex"11"; + } - function check( - address /* _token */, - address /* _from */, - address /* _to */, - uint256 /* _amount */ - ) external returns (byte resultCode) { - return hex"11"; - } + function check( + address /* _token */, + address /* _from */, + address /* _to */, + uint256 /* _amount */ + ) external returns (byte resultCode) { + return hex"11"; + } } diff --git a/test/contracts/ExtendedDealValidator.sol b/test/contracts/ExtendedDealValidator.sol index 5142391..72ddb20 100644 --- a/test/contracts/ExtendedDealValidator.sol +++ b/test/contracts/ExtendedDealValidator.sol @@ -3,7 +3,7 @@ pragma solidity ^0.4.21; import "../../contracts/DealValidator.sol"; contract ExtendedDealValidator is DealValidator { - function ExtendedDealValidator() DealValidator public {} + constructor() DealValidator() public {} function check2(address _deal, address _account) external returns (byte) { return this.check(_deal, _account); diff --git a/test/contracts/NeverValidator.sol b/test/contracts/NeverValidator.sol index 163d7bd..7d6b189 100644 --- a/test/contracts/NeverValidator.sol +++ b/test/contracts/NeverValidator.sol @@ -3,7 +3,7 @@ pragma solidity ^0.4.21; import "validated-token/contracts/TokenValidator.sol"; contract NeverValidator is TokenValidator { - function NeverValidator() public {} + constructor() public {} function check( address /* token */, diff --git a/test/contracts/RangeMock.sol b/test/contracts/RangeMock.sol index bfbcbe4..85e676e 100644 --- a/test/contracts/RangeMock.sol +++ b/test/contracts/RangeMock.sol @@ -5,7 +5,7 @@ import "../../contracts/Range.sol"; contract RangeMock { using Range for uint256; - function RangeMock() public {} + constructor() public {} function test(uint256 a, uint256 b, uint256 c) public pure returns (bool) { return a.isBetween(b, c); diff --git a/test/deal-validator.spec.js b/test/deal-validator.spec.js index d86dc1f..a4ecbe2 100644 --- a/test/deal-validator.spec.js +++ b/test/deal-validator.spec.js @@ -28,10 +28,9 @@ contract('DealValidator', (accounts) => { // eslint-disable-line no-undef describe('#setAuth', () => { it('sets a user to valid', async () => { - console.log(`>>>>>>>>>>>> ${JSON.stringify(address)}`); - await extendedValidator.setAuth(address, true); - const result = await extendedValidator.check2(address, address); - console.log(`>>>>>>>>>>>> ${JSON.stringify(result)}`); + // const result = await extendedValidator.setAuth(to, true); + const result = await extendedValidator.check2(to, from); + console.log(`>>>>>>>>>>>> ${result}`); expect(result).to.equal('0x11'); }); diff --git a/test/deal.spec.js b/test/deal.spec.js index f39b50f..f6612d2 100644 --- a/test/deal.spec.js +++ b/test/deal.spec.js @@ -48,10 +48,10 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef before(async () => { alwaysValidator = await AlwaysValidator.new(); validatorAddress = alwaysValidator.address; - deal = await createDeal({validatorAddress}); + deal = await createDeal({ validatorAddress }); neverValidator = await NeverValidator.new(); - neverDeal = await createDeal({validatorAddress: neverValidator.address}); + neverDeal = await createDeal({ validatorAddress: neverValidator.address }); }); describe('#Deal', () => { @@ -59,7 +59,7 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef const holdStartTime = mintStartTime + 1; it('fails to create', async () => { - await expectRevert(async () => await createDeal({validatorAddress, holdStartTime})); + await expectRevert(async () => await createDeal({ validatorAddress, holdStartTime })); }); }); @@ -67,7 +67,7 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef const holdStartTime = mintStartTime; it('fails to create', async () => { - await expectRevert(async () => await createDeal({validatorAddress, holdStartTime})); + await expectRevert(async () => await createDeal({ validatorAddress, holdStartTime })); }); }); @@ -75,13 +75,13 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef const holdStartTime = mintStartTime - 1; it('fails to create', async () => { - await expectRevert(async () => await createDeal({validatorAddress, holdStartTime})); + await expectRevert(async () => await createDeal({ validatorAddress, holdStartTime })); }); }); context('zero granularity', () => { it('fails to create', async () => { - await expectRevert(async () => await createDeal({validatorAddress, granularity: 0})); + await expectRevert(async () => await createDeal({ validatorAddress, granularity: 0 })); }); }); @@ -114,14 +114,14 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef context('before minting period', () => { it('prevents minting (revert)', async () => { - const earlyDeal = await createDeal({validatorAddress, mintStartTime: getNow() + 10000}); + const earlyDeal = await createDeal({ validatorAddress, mintStartTime: getNow() + 10000 }); await expectRevert(async () => await earlyDeal.mint(account, amount)); }); }); context('after minting period', () => { it('prevents minting (revert)', async () => { - const lateDeal = await createDeal({validatorAddress, holdStartTime: getNow()}); + const lateDeal = await createDeal({ validatorAddress, holdStartTime: getNow() }); await expectRevert(async () => await lateDeal.mint(account, amount)); }); }); diff --git a/test/helpers.js b/test/helpers.js index cdb2478..a35d809 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -1,8 +1,10 @@ +const { expect } = require('chai'); + const expectRevert = async (func) => { try { await func(); throw new Error('Should have failed'); - } catch ({message}) { + } catch ({ message }) { expect(message).to.have.string('revert'); } }; diff --git a/test/phase/closable.spec.js b/test/phase/closable.spec.js index 404c41c..0961a0f 100644 --- a/test/phase/closable.spec.js +++ b/test/phase/closable.spec.js @@ -18,8 +18,9 @@ contract('Closable', () => { // eslint-disable-line no-undef }); context('closes when created', () => { - it('fails to create', async () => { - await expectRevert(async () => await Closable.new(getNow())); + it('create normally', async () => { + const closesNow = await Closable.new(getNow()); + return expect(closesNow.address).to.be.a('string'); }); }); diff --git a/test/range.spec.js b/test/range.spec.js index 8f8c074..4db3807 100644 --- a/test/range.spec.js +++ b/test/range.spec.js @@ -1,4 +1,5 @@ const { expect } = require('chai'); + const RangeMock = artifacts.require('RangeMock'); // eslint-disable-line no-undef contract('Range', () => { // eslint-disable-line no-undef diff --git a/truffle.js b/truffle.js index 1552e24..9ef3c41 100644 --- a/truffle.js +++ b/truffle.js @@ -5,11 +5,11 @@ module.exports = { port: 8545, network_id: '*', // Match any network id // gas: Number(4712388 * 1.1).toFixed(0) // increase the default limit of 4712388 - gas: 6712388, - }, + gas: 6712388 + } }, mocha: { // reporter: 'eth-gas-reporter', - growl: true, - }, + growl: true + } }; From 34d51e9157bd2dba36cea574f0ece64c400eefe6 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Fri, 20 Apr 2018 20:42:54 -0700 Subject: [PATCH 42/43] ESLint --- contracts/DealValidator.sol | 2 +- test/contracts/ExtendedDealValidator.sol | 2 +- test/deal-validator.spec.js | 25 ++++------ test/deal.spec.js | 58 +++++++++++++----------- test/phase/closable.spec.js | 6 ++- test/range.spec.js | 12 ++--- 6 files changed, 53 insertions(+), 52 deletions(-) diff --git a/contracts/DealValidator.sol b/contracts/DealValidator.sol index d56d457..491798c 100644 --- a/contracts/DealValidator.sol +++ b/contracts/DealValidator.sol @@ -35,7 +35,7 @@ import "zeppelin-solidity/contracts/ownership/Ownable.sol"; contract DealValidator is Ownable, TokenValidator { using SafeMath for uint256; - mapping(address => bool) private auths; + mapping(address => bool) internal auths; constructor() Ownable() public {} diff --git a/test/contracts/ExtendedDealValidator.sol b/test/contracts/ExtendedDealValidator.sol index 72ddb20..c2f7265 100644 --- a/test/contracts/ExtendedDealValidator.sol +++ b/test/contracts/ExtendedDealValidator.sol @@ -5,7 +5,7 @@ import "../../contracts/DealValidator.sol"; contract ExtendedDealValidator is DealValidator { constructor() DealValidator() public {} - function check2(address _deal, address _account) external returns (byte) { + function check2(address _deal, address _account) external returns (byte _result) { return this.check(_deal, _account); } diff --git a/test/deal-validator.spec.js b/test/deal-validator.spec.js index a4ecbe2..b7ab405 100644 --- a/test/deal-validator.spec.js +++ b/test/deal-validator.spec.js @@ -1,11 +1,10 @@ const { expect } = require('chai'); -const { expectRevert, getNow } = require('./helpers'); const DealValidator = artifacts.require('DealValidator'); // eslint-disable-line no-undef const ExtendedDealValidator = artifacts.require('ExtendedDealValidator'); // eslint-disable-line no-undef contract('DealValidator', (accounts) => { // eslint-disable-line no-undef - const [address, to, from] = accounts; + const [address, to] = accounts; let validator; let extendedValidator; @@ -13,13 +12,10 @@ contract('DealValidator', (accounts) => { // eslint-disable-line no-undef before(async () => { validator = await DealValidator.new(); extendedValidator = await ExtendedDealValidator.new(); + await extendedValidator.setAuth(address, true); }); describe('#DealValidator', () => { - it('can be instantiated', () => { - expect(async () => await DealValidator.new()).to.not.throw(); - }); - it('has an owner', async () => { const owner = await validator.owner(); expect(owner).to.match(/^0x[a-z0-9]+/); @@ -28,20 +24,17 @@ contract('DealValidator', (accounts) => { // eslint-disable-line no-undef describe('#setAuth', () => { it('sets a user to valid', async () => { - // const result = await extendedValidator.setAuth(to, true); - const result = await extendedValidator.check2(to, from); - console.log(`>>>>>>>>>>>> ${result}`); + const result = await extendedValidator.check2.call('0x0', address); expect(result).to.equal('0x11'); }); - // it('sets a user to invalid', async () => { - // await extendedValidator.setAuth(address, false); - // const result = await extendedValidator.check2(0x0, address); - // expect(String(result)).to.equal('0x10'); - // }); + it('sets a user to invalid', async () => { + const result = await extendedValidator.check2.call('0x0', to); + expect(String(result)).to.equal('0x10'); + }); }); - describe('token validation', () => { + // describe('token validation', () => { - }); + // }); }); diff --git a/test/deal.spec.js b/test/deal.spec.js index f6612d2..2268c0b 100644 --- a/test/deal.spec.js +++ b/test/deal.spec.js @@ -1,8 +1,8 @@ const { expect } = require('chai'); const { expectRevert, getNow } = require('./helpers'); -const AlwaysValidator = artifacts.require('AlwaysValidator'); -const NeverValidator = artifacts.require('NeverValidator'); +const AlwaysValidator = artifacts.require('AlwaysValidator'); // eslint-disable-line no-undef +const NeverValidator = artifacts.require('NeverValidator'); // eslint-disable-line no-undef const Deal = artifacts.require('Deal'); // eslint-disable-line no-undef contract('Deal', (accounts) => { // eslint-disable-line no-undef @@ -38,11 +38,11 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef mintStartTime, holdStartTime, transferStartTime, - validatorAddress: null, + validatorAddress: account, ...params }); - return await Deal.new(...normalized); + return Deal.new(...normalized); }; before(async () => { @@ -56,32 +56,38 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef describe('#Deal', () => { context('already ended', () => { - const holdStartTime = mintStartTime + 1; + holdStartTime = mintStartTime + 1; - it('fails to create', async () => { - await expectRevert(async () => await createDeal({ validatorAddress, holdStartTime })); + it('fails to create', () => { + expectRevert(() => { + createDeal({ validatorAddress, holdStartTime }); + }); }); }); context('ends as soon as it begins', () => { - const holdStartTime = mintStartTime; + holdStartTime = mintStartTime; - it('fails to create', async () => { - await expectRevert(async () => await createDeal({ validatorAddress, holdStartTime })); + it('fails to create', () => { + expectRevert(() => { + createDeal({ validatorAddress, holdStartTime }); + }); }); }); context('ends before it begins', () => { - const holdStartTime = mintStartTime - 1; - - it('fails to create', async () => { - await expectRevert(async () => await createDeal({ validatorAddress, holdStartTime })); + it('fails to create', () => { + expectRevert(() => { + createDeal({ validatorAddress, holdStartTime: mintStartTime - 1 }); + }); }); }); context('zero granularity', () => { - it('fails to create', async () => { - await expectRevert(async () => await createDeal({ validatorAddress, granularity: 0 })); + it('fails to create', () => { + expectRevert(() => { + createDeal({ validatorAddress, granularity: 0 }); + }); }); }); @@ -93,11 +99,11 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef describe('#mint', () => { context('during minting period', () => { let initialBalance = 0; - let initialSupply = 0; + // let initialSupply = 0; beforeEach(async () => { initialBalance = Number(await deal.balanceOf(account)); - initialSupply = Number(await deal.totalSupply()); + // initialSupply = Number(await deal.totalSupply()); await deal.mint(account, amount); }); @@ -115,20 +121,20 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef context('before minting period', () => { it('prevents minting (revert)', async () => { const earlyDeal = await createDeal({ validatorAddress, mintStartTime: getNow() + 10000 }); - await expectRevert(async () => await earlyDeal.mint(account, amount)); + expectRevert(() => earlyDeal.mint(account, amount)); }); }); context('after minting period', () => { it('prevents minting (revert)', async () => { const lateDeal = await createDeal({ validatorAddress, holdStartTime: getNow() }); - await expectRevert(async () => await lateDeal.mint(account, amount)); + expectRevert(() => lateDeal.mint(account, amount)); }); }); context('user fails validation', () => { - it('prevents minting (revert)', async () => { - await expectRevert(async () => await neverDeal.mint(account, amount)); + it('prevents minting (revert)', () => { + expectRevert(() => neverDeal.mint(account, amount)); }); }); }); @@ -158,14 +164,14 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef // }); context('not during transfer phase', () => { - it('does not allow transfer', async () => { - await expectRevert(async () => await deal.transferFrom(to, from, amount)); + it('does not allow transfer', () => { + expectRevert(() => deal.transferFrom(to, from, amount)); }); }); context('fails validation', () => { - it('reverts', async () => { - await expectRevert(async () => await neverDeal.transferFrom(to, from, amount)); + it('reverts', () => { + expectRevert(() => neverDeal.transferFrom(to, from, amount)); }); }); }); diff --git a/test/phase/closable.spec.js b/test/phase/closable.spec.js index 0961a0f..f248366 100644 --- a/test/phase/closable.spec.js +++ b/test/phase/closable.spec.js @@ -12,8 +12,10 @@ contract('Closable', () => { // eslint-disable-line no-undef describe('#Closable', () => { context('closes before created', () => { - it('fails to create', async () => { - await expectRevert(async () => await Closable.new(1)); + it('fails to create', () => { + expectRevert(async () => { + await Closable.new(1); + }); }); }); diff --git a/test/range.spec.js b/test/range.spec.js index 4db3807..22cb22d 100644 --- a/test/range.spec.js +++ b/test/range.spec.js @@ -12,32 +12,32 @@ contract('Range', () => { // eslint-disable-line no-undef describe('#isBetween', () => { it('is true when the first value is between the others', async () => { const result = await rangeMock.test(2, 1, 3); - expect(Boolean(result)).to.be.true; + return expect(Boolean(result)).to.be.true; }); it('is true when the first value is equal to the low value', async () => { const result = await rangeMock.test(1, 1, 2); - expect(Boolean(result)).to.be.true; + return expect(Boolean(result)).to.be.true; }); it('is false when the first value is below both values', async () => { const result = await rangeMock.test(1, 2, 3); - expect(Boolean(result)).to.be.false; + return expect(Boolean(result)).to.be.false; }); it('is false when range values are reversed', async () => { const result = await rangeMock.test(2, 3, 1); - expect(Boolean(result)).to.be.false; + return expect(Boolean(result)).to.be.false; }); it('is false when above the highest value', async () => { const result = await rangeMock.test(3, 1, 2); - expect(Boolean(result)).to.be.false; + return expect(Boolean(result)).to.be.false; }); it('is false when it is equal to the same as highest value', async () => { const result = await rangeMock.test(2, 1, 2); - expect(Boolean(result)).to.be.false; + return expect(Boolean(result)).to.be.false; }); }); }); From e87bbe4fca6b0cc3203bc7fb4f7c2829240c24b1 Mon Sep 17 00:00:00 2001 From: Brooklyn Zelenka Date: Sun, 22 Apr 2018 17:37:43 -0700 Subject: [PATCH 43/43] Troubleshooting Could not find artifacts for truffle/Assert.sol --- contracts/Phase/PhasedToken.sol | 15 +++ test/deal-validator.spec.js | 32 +++---- test/deal.spec.js | 160 ++++++++++++++++---------------- test/phase/closable.spec.js | 86 ++++++++--------- test/phase/phased-token.spec.js | 38 ++++++++ test/range.spec.js | 62 ++++++------- 6 files changed, 225 insertions(+), 168 deletions(-) create mode 100644 test/phase/phased-token.spec.js diff --git a/contracts/Phase/PhasedToken.sol b/contracts/Phase/PhasedToken.sol index 2249216..072c585 100644 --- a/contracts/Phase/PhasedToken.sol +++ b/contracts/Phase/PhasedToken.sol @@ -17,6 +17,13 @@ contract PhasedToken { uint256 public holdStartTime; uint256 public transferStartTime; + enum Phase { + Before, + Mint, + Hold, + Transfer + } + constructor( uint256 _mintStartTime, uint256 _holdStartTime, @@ -46,4 +53,12 @@ contract PhasedToken { function isTransferPhase() public view returns (bool) { return now >= transferStartTime; } + + function phase() public view returns (Phase) { + if (isBeforeMintPhase()) { return Phase.Before; } + if (isMintPhase()) { return Phase.Mint; } + if (isHoldPhase()) { return Phase.Hold; } + if (isTransferPhase()) { return Phase.Transfer; } + revert("Token is in unknown phase"); + } } diff --git a/test/deal-validator.spec.js b/test/deal-validator.spec.js index b7ab405..b5ec90f 100644 --- a/test/deal-validator.spec.js +++ b/test/deal-validator.spec.js @@ -15,24 +15,24 @@ contract('DealValidator', (accounts) => { // eslint-disable-line no-undef await extendedValidator.setAuth(address, true); }); - describe('#DealValidator', () => { - it('has an owner', async () => { - const owner = await validator.owner(); - expect(owner).to.match(/^0x[a-z0-9]+/); - }); - }); + // describe('#DealValidator', () => { + // it('has an owner', async () => { + // const owner = await validator.owner(); + // expect(owner).to.match(/^0x[a-z0-9]+/); + // }); + // }); - describe('#setAuth', () => { - it('sets a user to valid', async () => { - const result = await extendedValidator.check2.call('0x0', address); - expect(result).to.equal('0x11'); - }); + // describe('#setAuth', () => { + // it('sets a user to valid', async () => { + // const result = await extendedValidator.check2.call('0x0', address); + // expect(result).to.equal('0x11'); + // }); - it('sets a user to invalid', async () => { - const result = await extendedValidator.check2.call('0x0', to); - expect(String(result)).to.equal('0x10'); - }); - }); + // it('sets a user to invalid', async () => { + // const result = await extendedValidator.check2.call('0x0', to); + // expect(String(result)).to.equal('0x10'); + // }); + // }); // describe('token validation', () => { diff --git a/test/deal.spec.js b/test/deal.spec.js index 2268c0b..71f3781 100644 --- a/test/deal.spec.js +++ b/test/deal.spec.js @@ -55,88 +55,88 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef }); describe('#Deal', () => { - context('already ended', () => { - holdStartTime = mintStartTime + 1; + // context('already ended', () => { + // holdStartTime = mintStartTime + 1; - it('fails to create', () => { - expectRevert(() => { - createDeal({ validatorAddress, holdStartTime }); - }); - }); - }); + // it('fails to create', () => { + // expectRevert(() => { + // createDeal({ validatorAddress, holdStartTime }); + // }); + // }); + // }); - context('ends as soon as it begins', () => { - holdStartTime = mintStartTime; + // context('ends as soon as it begins', () => { + // holdStartTime = mintStartTime; - it('fails to create', () => { - expectRevert(() => { - createDeal({ validatorAddress, holdStartTime }); - }); - }); - }); + // it('fails to create', () => { + // expectRevert(() => { + // createDeal({ validatorAddress, holdStartTime }); + // }); + // }); + // }); - context('ends before it begins', () => { - it('fails to create', () => { - expectRevert(() => { - createDeal({ validatorAddress, holdStartTime: mintStartTime - 1 }); - }); - }); - }); + // context('ends before it begins', () => { + // it('fails to create', () => { + // expectRevert(() => { + // createDeal({ validatorAddress, holdStartTime: mintStartTime - 1 }); + // }); + // }); + // }); - context('zero granularity', () => { - it('fails to create', () => { - expectRevert(() => { - createDeal({ validatorAddress, granularity: 0 }); - }); - }); - }); + // context('zero granularity', () => { + // it('fails to create', () => { + // expectRevert(() => { + // createDeal({ validatorAddress, granularity: 0 }); + // }); + // }); + // }); - context('valid params', () => { - it('deploys successfully', () => expect(deal).to.not.be.null); - }); + // context('valid params', () => { + // it('deploys successfully', () => expect(deal).to.not.be.null); + // }); }); describe('#mint', () => { - context('during minting period', () => { - let initialBalance = 0; - // let initialSupply = 0; - - beforeEach(async () => { - initialBalance = Number(await deal.balanceOf(account)); - // initialSupply = Number(await deal.totalSupply()); - await deal.mint(account, amount); - }); + // context('during minting period', () => { + // let initialBalance = 0; + // // let initialSupply = 0; + + // beforeEach(async () => { + // initialBalance = Number(await deal.balanceOf(account)); + // // initialSupply = Number(await deal.totalSupply()); + // await deal.mint(account, amount); + // }); - it(`increases the total supply by ${amount}`, async () => { - const newTotal = await deal.totalSupply(); - expect(Number(newTotal)).to.equal(initialBalance + amount); - }); + // it(`increases the total supply by ${amount}`, async () => { + // const newTotal = await deal.totalSupply(); + // expect(Number(newTotal)).to.equal(initialBalance + amount); + // }); - it(`increases the target user's balance by ${amount}`, async () => { - const newBalance = await deal.balanceOf(account); - expect(Number(newBalance)).to.equal(initialBalance + amount); - }); - }); + // it(`increases the target user's balance by ${amount}`, async () => { + // const newBalance = await deal.balanceOf(account); + // expect(Number(newBalance)).to.equal(initialBalance + amount); + // }); + // }); - context('before minting period', () => { - it('prevents minting (revert)', async () => { - const earlyDeal = await createDeal({ validatorAddress, mintStartTime: getNow() + 10000 }); - expectRevert(() => earlyDeal.mint(account, amount)); - }); - }); + // context('before minting period', () => { + // it('prevents minting (revert)', async () => { + // const earlyDeal = await createDeal({ validatorAddress, mintStartTime: getNow() + 10000 }); + // expectRevert(() => earlyDeal.mint(account, amount)); + // }); + // }); - context('after minting period', () => { - it('prevents minting (revert)', async () => { - const lateDeal = await createDeal({ validatorAddress, holdStartTime: getNow() }); - expectRevert(() => lateDeal.mint(account, amount)); - }); - }); + // context('after minting period', () => { + // it('prevents minting (revert)', async () => { + // const lateDeal = await createDeal({ validatorAddress, holdStartTime: getNow() }); + // expectRevert(() => lateDeal.mint(account, amount)); + // }); + // }); - context('user fails validation', () => { - it('prevents minting (revert)', () => { - expectRevert(() => neverDeal.mint(account, amount)); - }); - }); + // context('user fails validation', () => { + // it('prevents minting (revert)', () => { + // expectRevert(() => neverDeal.mint(account, amount)); + // }); + // }); }); describe('#transfer', () => { @@ -163,16 +163,20 @@ contract('Deal', (accounts) => { // eslint-disable-line no-undef // }); // }); - context('not during transfer phase', () => { - it('does not allow transfer', () => { - expectRevert(() => deal.transferFrom(to, from, amount)); - }); - }); + // context('not during transfer phase', () => { + // it('does not allow transfer', () => { + // expectRevert(async () => { + // await deal.transferFrom(to, from, amount); + // }); + // }); + // }); - context('fails validation', () => { - it('reverts', () => { - expectRevert(() => neverDeal.transferFrom(to, from, amount)); - }); - }); + // context('fails validation', () => { + // it('reverts', () => { + // expectRevert(async () => { + // await neverDeal.transferFrom(to, from, amount); + // }); + // }); + // }); }); }); diff --git a/test/phase/closable.spec.js b/test/phase/closable.spec.js index f248366..9ba6d9d 100644 --- a/test/phase/closable.spec.js +++ b/test/phase/closable.spec.js @@ -10,47 +10,47 @@ contract('Closable', () => { // eslint-disable-line no-undef closesInFuture = await Closable.new(getNow() + 100000); }); - describe('#Closable', () => { - context('closes before created', () => { - it('fails to create', () => { - expectRevert(async () => { - await Closable.new(1); - }); - }); - }); - - context('closes when created', () => { - it('create normally', async () => { - const closesNow = await Closable.new(getNow()); - return expect(closesNow.address).to.be.a('string'); - }); - }); - - context('closes after created', () => { - it('creates successfully', async () => { - const closed = await closesInFuture.isClosed(); - return expect(closed).to.be.false; - }); - }); - }); - - describe('isClosed', () => { - context('already closed', () => { - it('is closed', async () => { - const closable = await Closable.new(getNow() + 1); - - setTimeout(async () => { - const closed = await closable.isClosed(); - return expect(closed).to.be.true; - }, 50); - }); - }); - - context('not yet closed', () => { - it('is closed', async () => { - const closed = await closesInFuture.isClosed(); - return expect(closed).to.be.false; - }); - }); - }); + // describe('#Closable', () => { + // context('closes before created', () => { + // it('fails to create', () => { + // expectRevert(async () => { + // await Closable.new(1); + // }); + // }); + // }); + + // context('closes when created', () => { + // it('create normally', async () => { + // const closesNow = await Closable.new(getNow()); + // return expect(closesNow.address).to.be.a('string'); + // }); + // }); + + // context('closes after created', () => { + // it('creates successfully', async () => { + // const closed = await closesInFuture.isClosed(); + // return expect(closed).to.be.false; + // }); + // }); + // }); + + // describe('#isClosed', () => { + // context('already closed', () => { + // it('is closed', async () => { + // const closable = await Closable.new(getNow() + 1); + + // setTimeout(async () => { + // const closed = await closable.isClosed(); + // return expect(closed).to.be.true; + // }, 50); + // }); + // }); + + // context('not yet closed', () => { + // it('is closed', async () => { + // const closed = await closesInFuture.isClosed(); + // return expect(closed).to.be.false; + // }); + // }); + // }); }); diff --git a/test/phase/phased-token.spec.js b/test/phase/phased-token.spec.js new file mode 100644 index 0000000..1c0bfe6 --- /dev/null +++ b/test/phase/phased-token.spec.js @@ -0,0 +1,38 @@ +const { expect } = require('chai'); +const { expectRevert, getNow } = require('../helpers'); + +const Phased = artifacts.require('PhasedToken'); // eslint-disable-line no-undef + +contract('PhasedToken', () => { // eslint-disable-line no-undef + let phased; + + let now = getNow(); + let mintStart = now; + let holdStart = now + 10000; + let transferStart = now + 999999; + + beforeEach(async () => { + phased = await Phased.new(mintStart, holdStart, transferStart); + }); + + // describe('#constructor', () => { + // context('mint starts in the future', () => { + // context('hold after mint', () => { + // context('transfer after hold', () => { + // beforeEach(() => { + // now = getNow(); + // mintStart = now + 1000; + // holdStart = now + 100000; + // transferStart = now + 9999999; + // }); + + // it('instantiates successfully', async () => { + // const phase = await phased.phase(); + // console.log(">>>>>>>>>>>>>>>>"); + // expect(phased).to.equal(9); + // }); + // }); + // }); + // }); + // }); +}); diff --git a/test/range.spec.js b/test/range.spec.js index 22cb22d..3291721 100644 --- a/test/range.spec.js +++ b/test/range.spec.js @@ -9,35 +9,35 @@ contract('Range', () => { // eslint-disable-line no-undef rangeMock = await RangeMock.new(); }); - describe('#isBetween', () => { - it('is true when the first value is between the others', async () => { - const result = await rangeMock.test(2, 1, 3); - return expect(Boolean(result)).to.be.true; - }); - - it('is true when the first value is equal to the low value', async () => { - const result = await rangeMock.test(1, 1, 2); - return expect(Boolean(result)).to.be.true; - }); - - it('is false when the first value is below both values', async () => { - const result = await rangeMock.test(1, 2, 3); - return expect(Boolean(result)).to.be.false; - }); - - it('is false when range values are reversed', async () => { - const result = await rangeMock.test(2, 3, 1); - return expect(Boolean(result)).to.be.false; - }); - - it('is false when above the highest value', async () => { - const result = await rangeMock.test(3, 1, 2); - return expect(Boolean(result)).to.be.false; - }); - - it('is false when it is equal to the same as highest value', async () => { - const result = await rangeMock.test(2, 1, 2); - return expect(Boolean(result)).to.be.false; - }); - }); + // describe('#isBetween', () => { + // it('is true when the first value is between the others', async () => { + // const result = await rangeMock.test(2, 1, 3); + // return expect(Boolean(result)).to.be.true; + // }); + + // it('is true when the first value is equal to the low value', async () => { + // const result = await rangeMock.test(1, 1, 2); + // return expect(Boolean(result)).to.be.true; + // }); + + // it('is false when the first value is below both values', async () => { + // const result = await rangeMock.test(1, 2, 3); + // return expect(Boolean(result)).to.be.false; + // }); + + // it('is false when range values are reversed', async () => { + // const result = await rangeMock.test(2, 3, 1); + // return expect(Boolean(result)).to.be.false; + // }); + + // it('is false when above the highest value', async () => { + // const result = await rangeMock.test(3, 1, 2); + // return expect(Boolean(result)).to.be.false; + // }); + + // it('is false when it is equal to the same as highest value', async () => { + // const result = await rangeMock.test(2, 1, 2); + // return expect(Boolean(result)).to.be.false; + // }); + // }); });