diff --git a/.eslintignore b/.eslintignore index 63fab7657..8fcb34f2b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1 +1,2 @@ **/build/* +**/node_modules/* diff --git a/.flowconfig b/.flowconfig index 787120ee6..55835ff53 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,5 +1,6 @@ [ignore] /build +/packages/.*/build [include] @@ -11,3 +12,5 @@ all=warn [options] include_warnings=true +module.name_mapper='^@polkadot/util-\(crypto\)\(.*\)$' -> '/packages/util-\1/src\2' +module.name_mapper='^@polkadot/util\(.*\)$' -> '/packages/util/src\1' diff --git a/.travis.yml b/.travis.yml index 18ff03a7a..0eab5b0f9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,8 +6,9 @@ cache: directories: - node_modules before_install: - - npm install --global yarn --cache-min 999999999 + - npm install --global lerna yarn --cache-min 999999999 install: - yarn install + - lerna bootstrap script: - yarn polkadot-dev-build-travis diff --git a/README.md b/README.md index 591e80b1c..87758066f 100644 --- a/README.md +++ b/README.md @@ -6,33 +6,20 @@ [![maintainability](https://img.shields.io/codeclimate/maintainability/polkadot-js/util.svg?style=flat-square)](https://codeclimate.com/github/polkadot-js/util/maintainability) [![coverage](https://img.shields.io/coveralls/polkadot-js/util.svg?style=flat-square)](https://coveralls.io/github/polkadot-js/util?branch=master) [![greenkeeper](https://img.shields.io/badge/greenkeeper-enabled-brightgreen.svg?style=flat-square)](https://greenkeeper.io/) -[![dependency](https://img.shields.io/david/polkadot-js/util.svg?style=flat-square)](https://david-dm.org/polkadot-js/util) -[![devDependency](https://img.shields.io/david/dev/polkadot-js/util.svg?style=flat-square)](https://david-dm.org/polkadot-js/util#info=devDependencies) +[![dependency](https://david-dm.org/polkadot-js/util.svg?style=flat-square)](https://david-dm.org/polkadot-js/util) +[![devDependency](https://david-dm.org/polkadot-js/util/dev-status.svg?style=flat-square)](https://david-dm.org/polkadot-js/util#info=devDependencies) # @polkadot/util Various useful utility functions that are used across all projects in the [@polkadot](https://polkadot.js.org) namespace. It provides utility functions with additional safety checks, allowing not only for consistent coding, but also reducing the general boilerplate. -## Usage +It is split up into a number of internal packages - -Installation - +- [packages/util](packages/util/) General utilities +- [packages/util-crypto](packages/util-crypto/) Crypto and hashing utilities -``` -npm install --save @polkadot/util -``` +## Contributing -Functions can be imported directly from the package, e.g. - -```js -import { isHex } from '@polkadot/util'; -``` - -Alternatively the function can be accessed directly, - -```js -import isHex from '@polkadot/util/is/hex'; -``` - -## Available Utilities - -For a list of currently exposed methods, see the [library documentation](docs/README.md). +- Make sure you have [Lerna](https://lernajs.io/) installed, `yarn install -g lerna` +- Bootstrap the dependencies, `yarn` +- Make any changes in the relevant package, on master merges new versions will be published automatically diff --git a/flow-typed/tweetnacl.js b/flow-typed/tweetnacl.js new file mode 100644 index 000000000..09ea9563a --- /dev/null +++ b/flow-typed/tweetnacl.js @@ -0,0 +1,8 @@ +// @flow + +declare module 'tweetnacl' { + declare module.exports: { + hash: (data: Uint8Array) => Uint8Array, + randomBytes: (length: number) => Uint8Array + } +} diff --git a/jest.config.js b/jest.config.js index d3bc456ae..cc71e2e26 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1 +1,8 @@ -module.exports = require('@polkadot/dev/config/jest'); +const config = require('@polkadot/dev/config/jest'); + +module.exports = Object.assign({}, config, { + moduleNameMapper: { + '@polkadot/util-(crypto)(.*)$': '/packages/util-$1/src/$2', + '@polkadot/util(.*)$': '/packages/util/src/$1' + } +}); diff --git a/lerna.json b/lerna.json new file mode 100644 index 000000000..f3bf5f185 --- /dev/null +++ b/lerna.json @@ -0,0 +1,14 @@ +{ + "lerna": "2.5.1", + "npmClient": "yarn", + "useWorkspaces": true, + "command": { + "publish": { + "allowBranch": "master" + } + }, + "packages": [ + "packages/*" + ], + "version": "0.13.0" +} diff --git a/package.json b/package.json index 979b5d5dd..296e03365 100644 --- a/package.json +++ b/package.json @@ -1,42 +1,16 @@ { - "name": "@polkadot/util", - "version": "0.12.3", - "description": "A collection of useful utilities for @polkadot", - "main": "index.js", - "keywords": [ - "Polkadot" + "version": "0.13.0", + "private": true, + "workspaces": [ + "packages/*" ], - "author": "Jaco Greeff ", - "license": "ISC", - "engines": { - "node": ">=6.4" - }, - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/polkadot-js/util.git" - }, - "bugs": { - "url": "https://github.com/polkadot-js/util/issues" - }, - "homepage": "https://github.com/polkadot-js/util#readme", "scripts": { "build": "polkadot-dev-build-babel && polkadot-dev-build-docs", - "check": "eslint src && flow check", + "check": "eslint packages && flow check", "test": "jest --coverage" }, "devDependencies": { - "@polkadot/api-jsonrpc": "^0.6.9", - "@polkadot/dev": "^0.14.8" - }, - "dependencies": { - "babel-runtime": "^6.26.0", - "bn.js": "^4.11.8", - "deasync": "^0.1.12", - "ip-regex": "^2.1.0", - "keccak": "^1.3.0" + "@polkadot/dev": "^0.15.1", + "lerna": "^2.5.1" } } diff --git a/packages/util-crypto/LICENSE b/packages/util-crypto/LICENSE new file mode 100644 index 000000000..3d150a620 --- /dev/null +++ b/packages/util-crypto/LICENSE @@ -0,0 +1,15 @@ +ISC License (ISC) + +Copyright 2017-2018 Jaco Greeff + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/packages/util-crypto/README.md b/packages/util-crypto/README.md new file mode 100644 index 000000000..92d98f8aa --- /dev/null +++ b/packages/util-crypto/README.md @@ -0,0 +1,17 @@ +[![polkadotjs](https://img.shields.io/badge/polkadot-js-orange.svg?style=flat-square)](https://polkadot.js.org) +![isc](https://img.shields.io/badge/license-ISC-lightgrey.svg?style=flat-square) +[![style](https://img.shields.io/badge/code%20style-semistandard-lightgrey.svg?style=flat-square)](https://github.com/Flet/semistandard) +[![npm](https://img.shields.io/npm/v/@polkadot/util-crypto.svg?style=flat-square)](https://www.npmjs.com/package/@polkadot/util-crypto) +[![travis](https://img.shields.io/travis/polkadot-js/util.svg?style=flat-square)](https://travis-ci.org/polkadot-js/util) +[![maintainability](https://img.shields.io/codeclimate/maintainability/polkadot-js/util.svg?style=flat-square)](https://codeclimate.com/github/polkadot-js/util/maintainability) +[![coverage](https://img.shields.io/coveralls/polkadot-js/util.svg?style=flat-square)](https://coveralls.io/github/polkadot-js/util?branch=master) +[![dependency](https://david-dm.org/polkadot-js/util.svg?style=flat-square&path=packages/util)](https://david-dm.org/polkadot-js/util?path=packages/util-crypto) +[![devDependency](https://david-dm.org/polkadot-js/util/dev-status.svg?style=flat-square&path=packages/util-crypto)](https://david-dm.org/polkadot-js/util?path=packages/util#info=devDependencies) + +# @polkadot/util-crypto + +Various useful cyrpto utility functions that are used across all projects in the [@polkadot](https://polkadot.js.org) namespace. It provides utility functions with additional safety checks, allowing not only for consistent coding, but also reducing the general boilerplate. + +## Available Utilities + +For a list of currently exposed methods, see the [library documentation](docs/README.md). diff --git a/packages/util-crypto/docs/README.md b/packages/util-crypto/docs/README.md new file mode 100644 index 000000000..99342cd64 --- /dev/null +++ b/packages/util-crypto/docs/README.md @@ -0,0 +1,11 @@ +# Available interfaces + +Utility methods for this package are split into groups + +- [blake2s](blake2s.md) Create [Blake2s](https://blake2.net/) values as hex, Buffer & Uint8Array output +- [keccak](keccak.md) Create Keccak256 values as hex, string & buffer output +- [nacl](nacl.md) Implements [NaCl](http://nacl.cr.yp.to/) secret-key authenticated encryption, public-key authenticated encryption, hashing, and public-key signatures +- [random](random.md) Returns a sequence of secure random bytes in a variety of formats +- [sha512](sha512.md) Implements Sha-512 hashing functions for a variety of input and outputs +- [xxhash](xxhash.md) Create [XXHash](http://cyan4973.github.io/xxHash/) values as BN, hex & number output + diff --git a/packages/util-crypto/docs/blake2s.md b/packages/util-crypto/docs/blake2s.md new file mode 100644 index 000000000..14ed43033 --- /dev/null +++ b/packages/util-crypto/docs/blake2s.md @@ -0,0 +1,58 @@ +# blake2s + +Create [Blake2s](https://blake2.net/) values as hex, Buffer & Uint8Array output + +- [blake2sAsBuffer](#blake2sasbuffer) Creates a blake2s Buffer from the input. +- [blake2sAsHex](#blake2sashex) Creates a blake2s hex string from the input. +- [blake2sAsU8a](#blake2sasu8a) Creates a blake2s Uint8Array from the input. + +## blake2sAsBuffer + +Creates a blake2s Buffer from the input. + +```js +blake2sAsBuffer (value: Uint8Array): Buffer +``` + + +From a `Uint8Array` input, create the blake2s and return the result as a `Buffer`. + +```js +import { blake2sAsBuffer } from '@polkadot/util-crypto'; + +blake2sAsBuffer('abc') // => Buffer.from('508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982', 'hex') +``` + +## blake2sAsHex + +Creates a blake2s hex string from the input. + +```js +blake2sAsHex (value: Uint8Array): string +``` + + +From a `Uint8Array` input, create the blake2s and return the result as a hex string. + +```js +import { blake2sAsHex } from '@polkadot/util-crypto'; + +blake2sAsHex('abc') // => '0x508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982' +``` + +## blake2sAsU8a + +Creates a blake2s Uint8Array from the input. + +```js +blake2sAsU8a (value: Uint8Array): Uint8Array +``` + + +From a `Uint8Array` input, create the blake2s and return the result as a `Uint8Array`. + +```js +import { blake2sAsU8a } from '@polkadot/util-crypto'; + +blake2sAsU8a('abc') // => Uint8Array('508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982') +``` \ No newline at end of file diff --git a/docs/keccak.md b/packages/util-crypto/docs/keccak.md similarity index 87% rename from docs/keccak.md rename to packages/util-crypto/docs/keccak.md index 0187fc221..023cf8a5a 100644 --- a/docs/keccak.md +++ b/packages/util-crypto/docs/keccak.md @@ -18,7 +18,7 @@ keccakAsBuffer (value: Buffer | string): Buffer From either a `string` or a `Buffer` input, create the keccak and return the result as a `Buffer`. ```js -import { keccakAsBuffer } from '@polkadot/util'; +import { keccakAsBuffer } from '@polkadot/util-crypto'; console.log('asBuffer', keccakAsBuffer('123')) // => Buffer ``` @@ -35,7 +35,7 @@ keccakAsHex (value: Buffer | string): string From either a `string` or a `Buffer` input, create the keccak and return the result as a `0x` prefixed hex string. ```js -import { keccakAsHex } from '@polkadot/util'; +import { keccakAsHex } from '@polkadot/util-crypto'; console.log('asHex', keccakAsHex('123')) // => 0x... ``` @@ -52,7 +52,7 @@ keccakAsString (value: Buffer | string): string From either a `string` or a `Buffer` input, create the keccak and return the result as a non-prefixed string. ```js -import { keccakAsString } from '@polkadot/util'; +import { keccakAsString } from '@polkadot/util-crypto'; console.log('asString', keccakAsString('123')) // => string ``` \ No newline at end of file diff --git a/packages/util-crypto/docs/nacl.md b/packages/util-crypto/docs/nacl.md new file mode 100644 index 000000000..f0759ba37 --- /dev/null +++ b/packages/util-crypto/docs/nacl.md @@ -0,0 +1,3 @@ +# nacl + +Implements [NaCl](http://nacl.cr.yp.to/) secret-key authenticated encryption, public-key authenticated encryption, hashing, and public-key signatures diff --git a/packages/util-crypto/docs/random.md b/packages/util-crypto/docs/random.md new file mode 100644 index 000000000..db0a7d4a9 --- /dev/null +++ b/packages/util-crypto/docs/random.md @@ -0,0 +1,76 @@ +# random + +Returns a sequence of secure random bytes in a variety of formats + +- [randomAsBuffer](#randomasbuffer) Creates a Buffer filled with random bytes. +- [randomAsHex](#randomashex) Creates a hex string filled with random bytes. +- [randomAsNumber](#randomasnumber) Creates a random number from random bytes. +- [randomAsU8a](#randomasu8a) Creates a Uint8Array filled with random bytes. + +## randomAsBuffer + +Creates a Buffer filled with random bytes. + +```js +randomAsBuffer (length?: number = 32): Buffer +``` + + +Returns a `Buffer` with the specified (optional) length filled with random bytes. + +```js +import { randomAsBuffer } from '@polkadot/util-crypto'; + +randomAsBuffer() // => Buffer([...]) +``` + +## randomAsHex + +Creates a hex string filled with random bytes. + +```js +randomAsHex (length?: number = 32): string +``` + + +Returns a hex string with the specified (optional) length filled with random bytes. + +```js +import { randomAsHex } from '@polkadot/util-crypto'; + +randomAsHex() // => 0x... +``` + +## randomAsNumber + +Creates a random number from random bytes. + +```js +randomAsNumber (): number +``` + + +Returns a random number generated from the secure bytes. + +```js +import { randomAsNumber } from '@polkadot/util-crypto'; + +randomAsNumber() // => +``` + +## randomAsU8a + +Creates a Uint8Array filled with random bytes. + +```js +randomAsU8a (length?: number = 32): Uint8Array +``` + + +Returns a `Uint8Array` with the specified (optional) length filled with random bytes. + +```js +import { randomAsU8a } from '@polkadot/util-crypto'; + +randomAsU8s() // => Uint8Array([...]) +``` \ No newline at end of file diff --git a/packages/util-crypto/docs/sha512.md b/packages/util-crypto/docs/sha512.md new file mode 100644 index 000000000..4033d44a6 --- /dev/null +++ b/packages/util-crypto/docs/sha512.md @@ -0,0 +1,22 @@ +# sha512 + +Implements Sha-512 hashing functions for a variety of input and outputs + +- [sha512AsU8a](#sha512asu8a) Creates sha-512 hash of the input. + +## sha512AsU8a + +Creates sha-512 hash of the input. + +```js +sha512AsU8a (data: Uint8Array): Uint8Array +``` + + +Returns a sha-512 `Uint8Array` from the supplied data. + +```js +import { sha512AsU8a } from '@polkadot/util-crypto'; + +sha512AsU8a(Uint8Array.from([...])) // => Uint8Array([...]) +``` \ No newline at end of file diff --git a/packages/util-crypto/docs/xxhash.md b/packages/util-crypto/docs/xxhash.md new file mode 100644 index 000000000..902dba1c5 --- /dev/null +++ b/packages/util-crypto/docs/xxhash.md @@ -0,0 +1,58 @@ +# xxhash + +Create [XXHash](http://cyan4973.github.io/xxHash/) values as BN, hex & number output + +- [xxhashAsBn](#xxhashasbn) Creates a xxhash BN from the input. +- [xxhashAsHex](#xxhashashex) Creates a xxhash hex from the input. +- [xxhashAsNumber](#xxhashasnumber) Creates a xxhash number from the input. + +## xxhashAsBn + +Creates a xxhash BN from the input. + +```js +xxhashAsBn (data: Buffer | Uint8Array | string, seed: number): BN +``` + + +From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash and return the result as a BN. + +```js +import { xxhashAsNumber } from '@polkadot/util-crypto'; + +xxhashAsBn('abcd', 0xabcd)) // => new BN(0xcda8fae4) +``` + +## xxhashAsHex + +Creates a xxhash hex from the input. + +```js +xxhashAsHex (data: Buffer | Uint8Array | string, seed: number): string +``` + + +From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash and return the result as a hex string. + +```js +import { xxhashAsHex } from '@polkadot/util-crypto'; + +xxhashAsHex('abcd', 0xabcd)) // => 0xcda8fae4 +``` + +## xxhashAsNumber + +Creates a xxhash number from the input. + +```js +xxhashAsNumber (data: Buffer | Uint8Array | string, seed: number): number +``` + + +From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash and return the result as a number. + +```js +import { xxhashAsNumber } from '@polkadot/util-crypto'; + +xxhashAsNumber('abcd', 0xabcd)) // => 0xcda8fae4 +``` \ No newline at end of file diff --git a/packages/util-crypto/package.json b/packages/util-crypto/package.json new file mode 100644 index 000000000..f78ece567 --- /dev/null +++ b/packages/util-crypto/package.json @@ -0,0 +1,39 @@ +{ + "name": "@polkadot/util-crypto", + "version": "0.13.0", + "description": "A collection of useful crypto utilities for @polkadot", + "main": "index.js", + "keywords": [ + "Polkadot" + ], + "author": "Jaco Greeff ", + "license": "ISC", + "engines": { + "node": ">=6.4" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/polkadot-js/util.git" + }, + "bugs": { + "url": "https://github.com/polkadot-js/util/issues" + }, + "homepage": "https://github.com/polkadot-js/util/tree/master/packages/util-crypto#readme", + "scripts": { + "build": "polkadot-dev-build-babel && polkadot-dev-build-docs", + "check": "eslint src && flow check", + "test": "echo \"Tests only available from root wrapper\"" + }, + "devDependencies": {}, + "dependencies": { + "babel-runtime": "^6.26.0", + "blakejs": "^1.1.0", + "keccak": "^1.3.0", + "tweetnacl": "^1.0.0", + "xxhashjs": "^0.2.2" + } +} diff --git a/packages/util-crypto/src/blake2s/asBuffer.js b/packages/util-crypto/src/blake2s/asBuffer.js new file mode 100644 index 000000000..25c56b2f4 --- /dev/null +++ b/packages/util-crypto/src/blake2s/asBuffer.js @@ -0,0 +1,24 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const u8aToBuffer = require('@polkadot/util/u8a/toBuffer'); +const blake2sAsU8a = require('./asU8a'); + +/** + @name blake2sAsBuffer + @signature blake2sAsBuffer (value: Uint8Array): Buffer + @summary Creates a blake2s Buffer from the input. + @description + From a `Uint8Array` input, create the blake2s and return the result as a `Buffer`. + @example + import { blake2sAsBuffer } from '@polkadot/util-crypto'; + + blake2sAsBuffer('abc') // => Buffer.from('508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982', 'hex') +*/ +module.exports = function blake2sAsBuffer (data: Uint8Array): Buffer { + return u8aToBuffer( + blake2sAsU8a(data) + ); +}; diff --git a/packages/util-crypto/src/blake2s/asBuffer.spec.js b/packages/util-crypto/src/blake2s/asBuffer.spec.js new file mode 100644 index 000000000..a34f9e0d2 --- /dev/null +++ b/packages/util-crypto/src/blake2s/asBuffer.spec.js @@ -0,0 +1,15 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +const { blake2sAsBuffer } = require('./index'); + +describe('blake2sAsBuffer', () => { + it('creates the correct hash', () => { + expect( + blake2sAsBuffer('abc') + ).toEqual( + Buffer.from('508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982', 'hex') + ); + }); +}); diff --git a/packages/util-crypto/src/blake2s/asHex.js b/packages/util-crypto/src/blake2s/asHex.js new file mode 100644 index 000000000..45a28e1e4 --- /dev/null +++ b/packages/util-crypto/src/blake2s/asHex.js @@ -0,0 +1,24 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const bufferToHex = require('@polkadot/util/buffer/toHex'); +const blake2sAsBuffer = require('./asBuffer'); + +/** + @name blake2sAsHex + @signature blake2sAsHex (value: Uint8Array): string + @summary Creates a blake2s hex string from the input. + @description + From a `Uint8Array` input, create the blake2s and return the result as a hex string. + @example + import { blake2sAsHex } from '@polkadot/util-crypto'; + + blake2sAsHex('abc') // => '0x508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982' +*/ +module.exports = function blake2sAsHex (data: Uint8Array): string { + return bufferToHex( + blake2sAsBuffer(data) + ); +}; diff --git a/packages/util-crypto/src/blake2s/asHex.spec.js b/packages/util-crypto/src/blake2s/asHex.spec.js new file mode 100644 index 000000000..34712d059 --- /dev/null +++ b/packages/util-crypto/src/blake2s/asHex.spec.js @@ -0,0 +1,13 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +const { blake2sAsHex } = require('./index'); + +describe('blake2sAsHex', () => { + it('creates the correct hash', () => { + expect( + blake2sAsHex('abc') + ).toEqual('0x508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982'); + }); +}); diff --git a/packages/util-crypto/src/blake2s/asU8a.js b/packages/util-crypto/src/blake2s/asU8a.js new file mode 100644 index 000000000..670978037 --- /dev/null +++ b/packages/util-crypto/src/blake2s/asU8a.js @@ -0,0 +1,22 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +// TODO: For Node we can also use node-blake2 (npm blake2) +const blakejs = require('blakejs'); + +/** + @name blake2sAsU8a + @signature blake2sAsU8a (value: Uint8Array): Uint8Array + @summary Creates a blake2s Uint8Array from the input. + @description + From a `Uint8Array` input, create the blake2s and return the result as a `Uint8Array`. + @example + import { blake2sAsU8a } from '@polkadot/util-crypto'; + + blake2sAsU8a('abc') // => Uint8Array('508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982') +*/ +module.exports = function blake2sAsU8a (data: Uint8Array): Uint8Array { + return blakejs.blake2s(data); +}; diff --git a/packages/util-crypto/src/blake2s/asU8a.spec.js b/packages/util-crypto/src/blake2s/asU8a.spec.js new file mode 100644 index 000000000..22d2fcc18 --- /dev/null +++ b/packages/util-crypto/src/blake2s/asU8a.spec.js @@ -0,0 +1,17 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +const { blake2sAsU8a } = require('./index'); + +describe('blake2sAsU8a', () => { + it('creates the correct hash', () => { + expect( + blake2sAsU8a('abc') + ).toEqual( + Uint8Array.from([ + 0x50, 0x8c, 0x5e, 0x8c, 0x32, 0x7c, 0x14, 0xe2, 0xe1, 0xa7, 0x2b, 0xa3, 0x4e, 0xeb, 0x45, 0x2f, 0x37, 0x45, 0x8b, 0x20, 0x9e, 0xd6, 0x3a, 0x29, 0x4d, 0x99, 0x9b, 0x4c, 0x86, 0x67, 0x59, 0x82 + ]) + ); + }); +}); diff --git a/packages/util-crypto/src/blake2s/index.js b/packages/util-crypto/src/blake2s/index.js new file mode 100644 index 000000000..c9a68222e --- /dev/null +++ b/packages/util-crypto/src/blake2s/index.js @@ -0,0 +1,17 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const blake2sAsBuffer = require('./asBuffer'); +const blake2sAsHex = require('./asHex'); +const blake2sAsU8a = require('./asU8a'); + +/** + @summary Create [Blake2s](https://blake2.net/) values as hex, Buffer & Uint8Array output +*/ +module.exports = { + blake2sAsBuffer, + blake2sAsHex, + blake2sAsU8a +}; diff --git a/packages/util-crypto/src/index.js b/packages/util-crypto/src/index.js new file mode 100644 index 000000000..6ea0d4a53 --- /dev/null +++ b/packages/util-crypto/src/index.js @@ -0,0 +1,18 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const blake2s = require('./blake2s'); +const keccak = require('./keccak'); +const nacl = require('./nacl'); +const random = require('./random'); +const sha512 = require('./sha512'); +const xxhash = require('./xxhash'); + +/** + @summary Utility methods for this package are split into groups +*/ +module.exports = Object.assign( + {}, blake2s, keccak, nacl, random, sha512, xxhash +); diff --git a/src/keccak/asBuffer.js b/packages/util-crypto/src/keccak/asBuffer.js similarity index 91% rename from src/keccak/asBuffer.js rename to packages/util-crypto/src/keccak/asBuffer.js index f1f870876..b47b7119c 100644 --- a/src/keccak/asBuffer.js +++ b/packages/util-crypto/src/keccak/asBuffer.js @@ -12,7 +12,7 @@ const createKeccak = require('keccak'); @description From either a `string` or a `Buffer` input, create the keccak and return the result as a `Buffer`. @example - import { keccakAsBuffer } from '@polkadot/util'; + import { keccakAsBuffer } from '@polkadot/util-crypto'; console.log('asBuffer', keccakAsBuffer('123')) // => Buffer */ diff --git a/src/keccak/asBuffer.spec.js b/packages/util-crypto/src/keccak/asBuffer.spec.js similarity index 100% rename from src/keccak/asBuffer.spec.js rename to packages/util-crypto/src/keccak/asBuffer.spec.js diff --git a/src/keccak/asHex.js b/packages/util-crypto/src/keccak/asHex.js similarity index 85% rename from src/keccak/asHex.js rename to packages/util-crypto/src/keccak/asHex.js index 995d283da..b1e1190f3 100644 --- a/src/keccak/asHex.js +++ b/packages/util-crypto/src/keccak/asHex.js @@ -3,8 +3,9 @@ // of the ISC license. See the LICENSE file for details. // @flow +const bufferToHex = require('@polkadot/util/buffer/toHex'); + const keccakAsBuffer = require('./asBuffer'); -const bufferToHex = require('../buffer/toHex'); /** @name keccakAsHex @@ -13,7 +14,7 @@ const bufferToHex = require('../buffer/toHex'); @description From either a `string` or a `Buffer` input, create the keccak and return the result as a `0x` prefixed hex string. @example - import { keccakAsHex } from '@polkadot/util'; + import { keccakAsHex } from '@polkadot/util-crypto'; console.log('asHex', keccakAsHex('123')) // => 0x... */ diff --git a/src/keccak/asHex.spec.js b/packages/util-crypto/src/keccak/asHex.spec.js similarity index 100% rename from src/keccak/asHex.spec.js rename to packages/util-crypto/src/keccak/asHex.spec.js diff --git a/src/keccak/asString.js b/packages/util-crypto/src/keccak/asString.js similarity index 91% rename from src/keccak/asString.js rename to packages/util-crypto/src/keccak/asString.js index d78bf71ff..521a84472 100644 --- a/src/keccak/asString.js +++ b/packages/util-crypto/src/keccak/asString.js @@ -12,7 +12,7 @@ const keccakAsBuffer = require('./asBuffer'); @description From either a `string` or a `Buffer` input, create the keccak and return the result as a non-prefixed string. @example - import { keccakAsString } from '@polkadot/util'; + import { keccakAsString } from '@polkadot/util-crypto'; console.log('asString', keccakAsString('123')) // => string */ diff --git a/src/keccak/asString.spec.js b/packages/util-crypto/src/keccak/asString.spec.js similarity index 100% rename from src/keccak/asString.spec.js rename to packages/util-crypto/src/keccak/asString.spec.js diff --git a/src/keccak/index.js b/packages/util-crypto/src/keccak/index.js similarity index 100% rename from src/keccak/index.js rename to packages/util-crypto/src/keccak/index.js diff --git a/packages/util-crypto/src/nacl/index.js b/packages/util-crypto/src/nacl/index.js new file mode 100644 index 000000000..5e74a4f01 --- /dev/null +++ b/packages/util-crypto/src/nacl/index.js @@ -0,0 +1,10 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +/** + @summary Implements [NaCl](http://nacl.cr.yp.to/) secret-key authenticated encryption, public-key authenticated encryption, hashing, and public-key signatures +*/ +module.exports = { +}; diff --git a/packages/util-crypto/src/random/asBuffer.js b/packages/util-crypto/src/random/asBuffer.js new file mode 100644 index 000000000..d926b2233 --- /dev/null +++ b/packages/util-crypto/src/random/asBuffer.js @@ -0,0 +1,25 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const u8aToBuffer = require('@polkadot/util/u8a/toBuffer'); + +const randomAsU8a = require('./asU8a'); + +/** + @name randomAsBuffer + @signature randomAsBuffer (length?: number = 32): Buffer + @summary Creates a Buffer filled with random bytes. + @description + Returns a `Buffer` with the specified (optional) length filled with random bytes. + @example + import { randomAsBuffer } from '@polkadot/util-crypto'; + + randomAsBuffer() // => Buffer([...]) +*/ +module.exports = function randomAsBuffer (length?: number = 32): Buffer { + return u8aToBuffer( + randomAsU8a(length) + ); +}; diff --git a/packages/util-crypto/src/random/asBuffer.spec.js b/packages/util-crypto/src/random/asBuffer.spec.js new file mode 100644 index 000000000..97c53594f --- /dev/null +++ b/packages/util-crypto/src/random/asBuffer.spec.js @@ -0,0 +1,35 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +const isBuffer = require('@polkadot/util/is/buffer'); + +const { randomAsBuffer } = require('./index'); + +describe('randomAsBuffer', () => { + it('generates a Buffer', () => { + expect( + isBuffer(randomAsBuffer()) + ).toEqual(true); + }); + + it('generated results does not match', () => { + expect( + randomAsBuffer() + ).not.toEqual( + randomAsBuffer() + ); + }); + + it('generates 32 bytes by default', () => { + expect( + randomAsBuffer() + ).toHaveLength(32); + }); + + it('generates with the suuplied length', () => { + expect( + randomAsBuffer(66) + ).toHaveLength(66); + }); +}); diff --git a/packages/util-crypto/src/random/asHex.js b/packages/util-crypto/src/random/asHex.js new file mode 100644 index 000000000..d2c945c05 --- /dev/null +++ b/packages/util-crypto/src/random/asHex.js @@ -0,0 +1,25 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const bufferToHex = require('@polkadot/util/buffer/toHex'); + +const randomAsBuffer = require('./asBuffer'); + +/** + @name randomAsHex + @signature randomAsHex (length?: number = 32): string + @summary Creates a hex string filled with random bytes. + @description + Returns a hex string with the specified (optional) length filled with random bytes. + @example + import { randomAsHex } from '@polkadot/util-crypto'; + + randomAsHex() // => 0x... +*/ +module.exports = function randomAsHex (length?: number = 32): string { + return bufferToHex( + randomAsBuffer(length) + ); +}; diff --git a/packages/util-crypto/src/random/asHex.spec.js b/packages/util-crypto/src/random/asHex.spec.js new file mode 100644 index 000000000..5053eccbd --- /dev/null +++ b/packages/util-crypto/src/random/asHex.spec.js @@ -0,0 +1,37 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +const isHex = require('@polkadot/util/is/hex'); + +const { randomAsHex } = require('./index'); + +describe('randomAsBuffer', () => { + it('generated results does not match', () => { + expect( + randomAsHex() + ).not.toEqual( + randomAsHex() + ); + }); + + it('is a valid hex number', () => { + expect( + isHex( + randomAsHex() + ) + ).toEqual(true); + }); + + it('generates 32 bytes by default', () => { + expect( + randomAsHex() + ).toHaveLength(32 * 2 + 2); + }); + + it('generates with the suuplied length', () => { + expect( + randomAsHex(66) + ).toHaveLength(66 * 2 + 2); + }); +}); diff --git a/packages/util-crypto/src/random/asNumber.js b/packages/util-crypto/src/random/asNumber.js new file mode 100644 index 000000000..02324931f --- /dev/null +++ b/packages/util-crypto/src/random/asNumber.js @@ -0,0 +1,28 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const hexToBn = require('@polkadot/util/hex/toBn'); +const BN = require('bn.js'); + +const randomAsHex = require('./asHex'); + +const BN_53 = new BN(0b11111111111111111111111111111111111111111111111111111); + +/** + @name randomAsNumber + @signature randomAsNumber (): number + @summary Creates a random number from random bytes. + @description + Returns a random number generated from the secure bytes. + @example + import { randomAsNumber } from '@polkadot/util-crypto'; + + randomAsNumber() // => +*/ +module.exports = function randomAsNumber (): number { + return hexToBn( + randomAsHex(8) + ).and(BN_53).toNumber(); +}; diff --git a/packages/util-crypto/src/random/asNumber.spec.js b/packages/util-crypto/src/random/asNumber.spec.js new file mode 100644 index 000000000..97f29df09 --- /dev/null +++ b/packages/util-crypto/src/random/asNumber.spec.js @@ -0,0 +1,15 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +const { randomAsNumber } = require('./index'); + +describe('randomAsNumber', () => { + it('generates subsequent non-matching numbers', () => { + expect( + randomAsNumber() + ).not.toEqual( + randomAsNumber() + ); + }); +}); diff --git a/packages/util-crypto/src/random/asU8a.js b/packages/util-crypto/src/random/asU8a.js new file mode 100644 index 000000000..a59802f8b --- /dev/null +++ b/packages/util-crypto/src/random/asU8a.js @@ -0,0 +1,21 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const nacl = require('tweetnacl'); + +/** + @name randomAsU8a + @signature randomAsU8a (length?: number = 32): Uint8Array + @summary Creates a Uint8Array filled with random bytes. + @description + Returns a `Uint8Array` with the specified (optional) length filled with random bytes. + @example + import { randomAsU8a } from '@polkadot/util-crypto'; + + randomAsU8s() // => Uint8Array([...]) +*/ +module.exports = function randomAsU8a (length?: number = 32): Uint8Array { + return nacl.randomBytes(length); +}; diff --git a/packages/util-crypto/src/random/asU8a.spec.js b/packages/util-crypto/src/random/asU8a.spec.js new file mode 100644 index 000000000..e7e562e99 --- /dev/null +++ b/packages/util-crypto/src/random/asU8a.spec.js @@ -0,0 +1,35 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +const isUint8Array = require('@polkadot/util/is/uint8Array'); + +const { randomAsU8a } = require('./index'); + +describe('randomAsU8a', () => { + it('generates a Uint8Array', () => { + expect( + isUint8Array(randomAsU8a()) + ).toEqual(true); + }); + + it('generated results does not match', () => { + expect( + randomAsU8a() + ).not.toEqual( + randomAsU8a() + ); + }); + + it('generates 32 bytes by default', () => { + expect( + randomAsU8a() + ).toHaveLength(32); + }); + + it('generates with the suuplied length', () => { + expect( + randomAsU8a(66) + ).toHaveLength(66); + }); +}); diff --git a/packages/util-crypto/src/random/index.js b/packages/util-crypto/src/random/index.js new file mode 100644 index 000000000..2cf5b95f4 --- /dev/null +++ b/packages/util-crypto/src/random/index.js @@ -0,0 +1,19 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const randomAsBuffer = require('./asBuffer'); +const randomAsHex = require('./asHex'); +const randomAsNumber = require('./asNumber'); +const randomAsU8a = require('./asU8a'); + +/** + @summary Returns a sequence of secure random bytes in a variety of formats +*/ +module.exports = { + randomAsBuffer, + randomAsHex, + randomAsNumber, + randomAsU8a +}; diff --git a/packages/util-crypto/src/sha512/asU8a.js b/packages/util-crypto/src/sha512/asU8a.js new file mode 100644 index 000000000..e3fdb0dce --- /dev/null +++ b/packages/util-crypto/src/sha512/asU8a.js @@ -0,0 +1,21 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const nacl = require('tweetnacl'); + +/** + @name sha512AsU8a + @signature sha512AsU8a (data: Uint8Array): Uint8Array + @summary Creates sha-512 hash of the input. + @description + Returns a sha-512 `Uint8Array` from the supplied data. + @example + import { sha512AsU8a } from '@polkadot/util-crypto'; + + sha512AsU8a(Uint8Array.from([...])) // => Uint8Array([...]) +*/ +module.exports = function sha512AsU8a (data: Uint8Array): Uint8Array { + return nacl.hash(data); +}; diff --git a/packages/util-crypto/src/sha512/asU8a.spec.js b/packages/util-crypto/src/sha512/asU8a.spec.js new file mode 100644 index 000000000..270d7969f --- /dev/null +++ b/packages/util-crypto/src/sha512/asU8a.spec.js @@ -0,0 +1,19 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +const { sha512AsU8a } = require('./index'); + +describe('sha512AsU8a', () => { + it('creates a sha-512 hash', () => { + expect( + sha512AsU8a( + Uint8Array.from([0x61, 0x62, 0x63, 0x64]) + ) + ).toEqual( + Uint8Array.from([ + 216, 2, 47, 32, 96, 173, 110, 253, 41, 122, 183, 61, 204, 83, 85, 201, 178, 20, 5, 75, 13, 23, 118, 161, 54, 166, 105, 210, 106, 125, 59, 20, 247, 58, 160, 208, 235, 255, 25, 238, 51, 51, 104, 240, 22, 75, 100, 25, 169, 109, 164, 158, 62, 72, 23, 83, 231, 233, 107, 113, 107, 220, 203, 111 + ]) + ); + }); +}); diff --git a/packages/util-crypto/src/sha512/index.js b/packages/util-crypto/src/sha512/index.js new file mode 100644 index 000000000..42fedc776 --- /dev/null +++ b/packages/util-crypto/src/sha512/index.js @@ -0,0 +1,13 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const sha512AsU8a = require('./asU8a'); + +/** + @summary Implements Sha-512 hashing functions for a variety of input and outputs +*/ +module.exports = { + sha512AsU8a +}; diff --git a/packages/util-crypto/src/xxhash/asBn.js b/packages/util-crypto/src/xxhash/asBn.js new file mode 100644 index 000000000..696000f4e --- /dev/null +++ b/packages/util-crypto/src/xxhash/asBn.js @@ -0,0 +1,25 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const BN = require('bn.js'); + +const xxhashAsValue = require('./asValue'); + +/** + @name xxhashAsBn + @signature xxhashAsBn (data: Buffer | Uint8Array | string, seed: number): BN + @summary Creates a xxhash BN from the input. + @description + From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash and return the result as a BN. + @example + import { xxhashAsNumber } from '@polkadot/util-crypto'; + + xxhashAsBn('abcd', 0xabcd)) // => new BN(0xcda8fae4) +*/ +module.exports = function xxhashAsBn (data: Buffer | Uint8Array | string, seed: number): BN { + return new BN( + xxhashAsValue(data, seed).toNumber() + ); +}; diff --git a/packages/util-crypto/src/xxhash/asBn.spec.js b/packages/util-crypto/src/xxhash/asBn.spec.js new file mode 100644 index 000000000..17336e260 --- /dev/null +++ b/packages/util-crypto/src/xxhash/asBn.spec.js @@ -0,0 +1,13 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +const { xxhashAsBn } = require('./index'); + +describe('xxhashAsBn', () => { + it('creates the correct BN output', () => { + expect( + xxhashAsBn('abcd', 0xabcd).toString(16) + ).toEqual('cda8fae4'); + }); +}); diff --git a/packages/util-crypto/src/xxhash/asHex.js b/packages/util-crypto/src/xxhash/asHex.js new file mode 100644 index 000000000..36524e852 --- /dev/null +++ b/packages/util-crypto/src/xxhash/asHex.js @@ -0,0 +1,25 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const hexAddPrefix = require('@polkadot/util/hex/addPrefix'); + +const xxhashAsValue = require('./asValue'); + +/** + @name xxhashAsHex + @signature xxhashAsHex (data: Buffer | Uint8Array | string, seed: number): string + @summary Creates a xxhash hex from the input. + @description + From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash and return the result as a hex string. + @example + import { xxhashAsHex } from '@polkadot/util-crypto'; + + xxhashAsHex('abcd', 0xabcd)) // => 0xcda8fae4 +*/ +module.exports = function xxhashAsHex (data: Buffer | Uint8Array | string, seed: number): string { + return hexAddPrefix( + xxhashAsValue(data, seed).toString(16) + ); +}; diff --git a/packages/util-crypto/src/xxhash/asHex.spec.js b/packages/util-crypto/src/xxhash/asHex.spec.js new file mode 100644 index 000000000..69b3b1185 --- /dev/null +++ b/packages/util-crypto/src/xxhash/asHex.spec.js @@ -0,0 +1,13 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +const { xxhashAsHex } = require('./index'); + +describe('xxhashAsHex', () => { + it('creates the correct hex output', () => { + expect( + xxhashAsHex('abcd', 0xabcd) + ).toEqual('0xcda8fae4'); + }); +}); diff --git a/packages/util-crypto/src/xxhash/asNumber.js b/packages/util-crypto/src/xxhash/asNumber.js new file mode 100644 index 000000000..bff025de6 --- /dev/null +++ b/packages/util-crypto/src/xxhash/asNumber.js @@ -0,0 +1,21 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const xxhashAsValue = require('./asValue'); + +/** + @name xxhashAsNumber + @signature xxhashAsNumber (data: Buffer | Uint8Array | string, seed: number): number + @summary Creates a xxhash number from the input. + @description + From either a `string`, `Uint8Array` or a `Buffer` input, create the xxhash and return the result as a number. + @example + import { xxhashAsNumber } from '@polkadot/util-crypto'; + + xxhashAsNumber('abcd', 0xabcd)) // => 0xcda8fae4 +*/ +module.exports = function xxhashAsNumber (data: Buffer | Uint8Array | string, seed: number): number { + return xxhashAsValue(data, seed).toNumber(); +}; diff --git a/packages/util-crypto/src/xxhash/asNumber.spec.js b/packages/util-crypto/src/xxhash/asNumber.spec.js new file mode 100644 index 000000000..1de1a1f97 --- /dev/null +++ b/packages/util-crypto/src/xxhash/asNumber.spec.js @@ -0,0 +1,30 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. + +const { xxhashAsNumber } = require('./index'); + +describe('xxhashAsNumber', () => { + const DATA = 'abcd'; + const DATA_ARR = [0x61, 0x62, 0x63, 0x64]; + const SEED = 0xabcd; + const RESULT = 0xCDA8FAE4; + + it('creates the correct number output (string)', () => { + expect( + xxhashAsNumber(DATA, SEED) + ).toEqual(RESULT); + }); + + it('creates the correct number output (Buffer)', () => { + expect( + xxhashAsNumber(Buffer.from(DATA_ARR), SEED) + ).toEqual(RESULT); + }); + + it('creates the correct number output (Uint8Array)', () => { + expect( + xxhashAsNumber(Uint8Array.from(DATA_ARR), SEED) + ).toEqual(RESULT); + }); +}); diff --git a/packages/util-crypto/src/xxhash/asValue.js b/packages/util-crypto/src/xxhash/asValue.js new file mode 100644 index 000000000..551a2de7a --- /dev/null +++ b/packages/util-crypto/src/xxhash/asValue.js @@ -0,0 +1,20 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +import type { xxhashjs$Result } from 'xxhashjs'; + +const isBuffer = require('@polkadot/util/is/buffer'); +const isString = require('@polkadot/util/is/string'); +const xxhashjs = require('xxhashjs'); + +module.exports = function xxhashAsValue (data: Buffer | Uint8Array | string, seed: number): xxhashjs$Result { + if (isBuffer(data) || isString(data)) { + // $FlowFixMe we have determined the type + return xxhashjs.h32(data, seed); + } + + // $FlowFixMe we have determined the type + return xxhashjs.h32(data.buffer, seed); +}; diff --git a/packages/util-crypto/src/xxhash/index.js b/packages/util-crypto/src/xxhash/index.js new file mode 100644 index 000000000..64ccad6d2 --- /dev/null +++ b/packages/util-crypto/src/xxhash/index.js @@ -0,0 +1,17 @@ +// Copyright 2017-2018 Jaco Greeff +// This software may be modified and distributed under the terms +// of the ISC license. See the LICENSE file for details. +// @flow + +const xxhashAsBn = require('./asBn'); +const xxhashAsHex = require('./asHex'); +const xxhashAsNumber = require('./asNumber'); + +/** + @summary Create [XXHash](http://cyan4973.github.io/xxHash/) values as BN, hex & number output +*/ +module.exports = { + xxhashAsBn, + xxhashAsHex, + xxhashAsNumber +}; diff --git a/packages/util/LICENSE b/packages/util/LICENSE new file mode 100644 index 000000000..3d150a620 --- /dev/null +++ b/packages/util/LICENSE @@ -0,0 +1,15 @@ +ISC License (ISC) + +Copyright 2017-2018 Jaco Greeff + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/packages/util/README.md b/packages/util/README.md new file mode 100644 index 000000000..3782acfcf --- /dev/null +++ b/packages/util/README.md @@ -0,0 +1,37 @@ +[![polkadotjs](https://img.shields.io/badge/polkadot-js-orange.svg?style=flat-square)](https://polkadot.js.org) +![isc](https://img.shields.io/badge/license-ISC-lightgrey.svg?style=flat-square) +[![style](https://img.shields.io/badge/code%20style-semistandard-lightgrey.svg?style=flat-square)](https://github.com/Flet/semistandard) +[![npm](https://img.shields.io/npm/v/@polkadot/util.svg?style=flat-square)](https://www.npmjs.com/package/@polkadot/util) +[![travis](https://img.shields.io/travis/polkadot-js/util.svg?style=flat-square)](https://travis-ci.org/polkadot-js/util) +[![maintainability](https://img.shields.io/codeclimate/maintainability/polkadot-js/util.svg?style=flat-square)](https://codeclimate.com/github/polkadot-js/util/maintainability) +[![coverage](https://img.shields.io/coveralls/polkadot-js/util.svg?style=flat-square)](https://coveralls.io/github/polkadot-js/util?branch=master) +[![dependency](https://david-dm.org/polkadot-js/util.svg?style=flat-square&path=packages/util)](https://david-dm.org/polkadot-js/util?path=packages/util) +[![devDependency](https://david-dm.org/polkadot-js/util/dev-status.svg?style=flat-square&path=packages/util)](https://david-dm.org/polkadot-js/util?path=packages/util#info=devDependencies) + +# @polkadot/util + +Various useful utility functions that are used across all projects in the [@polkadot](https://polkadot.js.org) namespace. It provides utility functions with additional safety checks, allowing not only for consistent coding, but also reducing the general boilerplate. + +## Usage + +Installation - + +``` +npm install --save @polkadot/util +``` + +Functions can be imported directly from the package, e.g. + +```js +import { isHex } from '@polkadot/util'; +``` + +Alternatively the function can be accessed directly, + +```js +import isHex from '@polkadot/util/is/hex'; +``` + +## Available Utilities + +For a list of currently exposed methods, see the [library documentation](docs/README.md). diff --git a/docs/README.md b/packages/util/docs/README.md similarity index 97% rename from docs/README.md rename to packages/util/docs/README.md index de7281015..46a8f14ae 100644 --- a/docs/README.md +++ b/packages/util/docs/README.md @@ -9,7 +9,6 @@ Utility methods for this package are split into groups - [hex](hex.md) Internal utilities to create and test for hex values - [is](is.md) Type checking utilities - [jsonrpc](jsonrpc.md) Convenience functions for values from @polkadot/api-jsonrpc -- [keccak](keccak.md) Create Keccak256 values as hex, string & buffer output - [number](number.md) Utility methods to convert to and from `number` values - [string](string.md) Utility methods to convert to work with `string` values - [u8a](u8a.md) Utility methods to convert to and from `Uint8Array` objects diff --git a/docs/array.md b/packages/util/docs/array.md similarity index 100% rename from docs/array.md rename to packages/util/docs/array.md diff --git a/docs/bn.md b/packages/util/docs/bn.md similarity index 100% rename from docs/bn.md rename to packages/util/docs/bn.md diff --git a/docs/buffer.md b/packages/util/docs/buffer.md similarity index 100% rename from docs/buffer.md rename to packages/util/docs/buffer.md diff --git a/docs/ext.md b/packages/util/docs/ext.md similarity index 100% rename from docs/ext.md rename to packages/util/docs/ext.md diff --git a/docs/hex.md b/packages/util/docs/hex.md similarity index 97% rename from docs/hex.md rename to packages/util/docs/hex.md index 3775b539e..e06f0950e 100644 --- a/docs/hex.md +++ b/packages/util/docs/hex.md @@ -5,7 +5,7 @@ Internal utilities to create and test for hex values - [hexAddPrefix](#hexaddprefix) Adds the `0x` prefix to string values. - [hexFixLength](#hexfixlength) Shifts a hex string to a specific bitLength - [hexFromBn](#hexfrombn) Creates a hex value from a BN.js bignumber object. -- [hexFromBn](#hexfrombn) Creates a hex value from a Buffer object. +- [hexFromBuffer](#hexfrombuffer) Creates a hex value from a Buffer object. - [hexFromNumber](#hexfromnumber) Creates a hex value from a number. - [hexHasPrefix](#hexhasprefix) Tests for the existence of a `0x` prefix. - [hexStripPrefix](#hexstripprefix) Strips any leading `0x` prefix. @@ -61,7 +61,7 @@ hexFromBn (value?: BN): string -## hexFromBn +## hexFromBuffer Creates a hex value from a Buffer object. [(alias of bufferToHex)](buffer.md#buffertohex) diff --git a/docs/is.md b/packages/util/docs/is.md similarity index 100% rename from docs/is.md rename to packages/util/docs/is.md diff --git a/docs/jsonrpc.md b/packages/util/docs/jsonrpc.md similarity index 100% rename from docs/jsonrpc.md rename to packages/util/docs/jsonrpc.md diff --git a/docs/number.md b/packages/util/docs/number.md similarity index 100% rename from docs/number.md rename to packages/util/docs/number.md diff --git a/docs/string.md b/packages/util/docs/string.md similarity index 100% rename from docs/string.md rename to packages/util/docs/string.md diff --git a/docs/u8a.md b/packages/util/docs/u8a.md similarity index 100% rename from docs/u8a.md rename to packages/util/docs/u8a.md diff --git a/packages/util/package.json b/packages/util/package.json new file mode 100644 index 000000000..8807325ff --- /dev/null +++ b/packages/util/package.json @@ -0,0 +1,41 @@ +{ + "name": "@polkadot/util", + "version": "0.13.0", + "description": "A collection of useful utilities for @polkadot", + "main": "index.js", + "keywords": [ + "Polkadot" + ], + "author": "Jaco Greeff ", + "license": "ISC", + "engines": { + "node": ">=6.4" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/polkadot-js/util.git" + }, + "bugs": { + "url": "https://github.com/polkadot-js/util/issues" + }, + "homepage": "https://github.com/polkadot-js/util/tree/master/packages/util#readme", + "scripts": { + "build": "polkadot-dev-build-babel && polkadot-dev-build-docs", + "check": "eslint src && flow check", + "test": "echo \"Tests only available from root wrapper\"" + }, + "devDependencies": { + "@polkadot/api-jsonrpc": "^0.6.12", + "@polkadot/dev": "^0.15.1" + }, + "dependencies": { + "babel-runtime": "^6.26.0", + "bn.js": "^4.11.8", + "deasync": "^0.1.12", + "ip-regex": "^2.1.0" + } +} diff --git a/src/array/filter.js b/packages/util/src/array/filter.js similarity index 100% rename from src/array/filter.js rename to packages/util/src/array/filter.js diff --git a/src/array/filter.spec.js b/packages/util/src/array/filter.spec.js similarity index 100% rename from src/array/filter.spec.js rename to packages/util/src/array/filter.spec.js diff --git a/src/array/index.js b/packages/util/src/array/index.js similarity index 100% rename from src/array/index.js rename to packages/util/src/array/index.js diff --git a/src/assert.js b/packages/util/src/assert.js similarity index 100% rename from src/assert.js rename to packages/util/src/assert.js diff --git a/src/assert.spec.js b/packages/util/src/assert.spec.js similarity index 100% rename from src/assert.spec.js rename to packages/util/src/assert.spec.js diff --git a/src/bn/fromHex.js b/packages/util/src/bn/fromHex.js similarity index 100% rename from src/bn/fromHex.js rename to packages/util/src/bn/fromHex.js diff --git a/src/bn/fromHex.spec.js b/packages/util/src/bn/fromHex.spec.js similarity index 100% rename from src/bn/fromHex.spec.js rename to packages/util/src/bn/fromHex.spec.js diff --git a/src/bn/index.js b/packages/util/src/bn/index.js similarity index 100% rename from src/bn/index.js rename to packages/util/src/bn/index.js diff --git a/src/bn/toHex.js b/packages/util/src/bn/toHex.js similarity index 100% rename from src/bn/toHex.js rename to packages/util/src/bn/toHex.js diff --git a/src/bn/toHex.spec.js b/packages/util/src/bn/toHex.spec.js similarity index 100% rename from src/bn/toHex.spec.js rename to packages/util/src/bn/toHex.spec.js diff --git a/src/buffer/fromHex.js b/packages/util/src/buffer/fromHex.js similarity index 100% rename from src/buffer/fromHex.js rename to packages/util/src/buffer/fromHex.js diff --git a/src/buffer/fromHex.spec.js b/packages/util/src/buffer/fromHex.spec.js similarity index 100% rename from src/buffer/fromHex.spec.js rename to packages/util/src/buffer/fromHex.spec.js diff --git a/src/buffer/fromNumber.js b/packages/util/src/buffer/fromNumber.js similarity index 100% rename from src/buffer/fromNumber.js rename to packages/util/src/buffer/fromNumber.js diff --git a/src/buffer/fromNumber.spec.js b/packages/util/src/buffer/fromNumber.spec.js similarity index 100% rename from src/buffer/fromNumber.spec.js rename to packages/util/src/buffer/fromNumber.spec.js diff --git a/src/buffer/fromU8a.js b/packages/util/src/buffer/fromU8a.js similarity index 100% rename from src/buffer/fromU8a.js rename to packages/util/src/buffer/fromU8a.js diff --git a/src/buffer/fromU8a.spec.js b/packages/util/src/buffer/fromU8a.spec.js similarity index 100% rename from src/buffer/fromU8a.spec.js rename to packages/util/src/buffer/fromU8a.spec.js diff --git a/src/buffer/index.js b/packages/util/src/buffer/index.js similarity index 100% rename from src/buffer/index.js rename to packages/util/src/buffer/index.js diff --git a/src/buffer/toHex.js b/packages/util/src/buffer/toHex.js similarity index 100% rename from src/buffer/toHex.js rename to packages/util/src/buffer/toHex.js diff --git a/src/buffer/toHex.spec.js b/packages/util/src/buffer/toHex.spec.js similarity index 100% rename from src/buffer/toHex.spec.js rename to packages/util/src/buffer/toHex.spec.js diff --git a/src/buffer/toNumber.js b/packages/util/src/buffer/toNumber.js similarity index 100% rename from src/buffer/toNumber.js rename to packages/util/src/buffer/toNumber.js diff --git a/src/buffer/toNumber.spec.js b/packages/util/src/buffer/toNumber.spec.js similarity index 100% rename from src/buffer/toNumber.spec.js rename to packages/util/src/buffer/toNumber.spec.js diff --git a/src/buffer/toU8a.js b/packages/util/src/buffer/toU8a.js similarity index 100% rename from src/buffer/toU8a.js rename to packages/util/src/buffer/toU8a.js diff --git a/src/buffer/toU8a.spec.js b/packages/util/src/buffer/toU8a.spec.js similarity index 100% rename from src/buffer/toU8a.spec.js rename to packages/util/src/buffer/toU8a.spec.js diff --git a/src/ext/error.js b/packages/util/src/ext/error.js similarity index 100% rename from src/ext/error.js rename to packages/util/src/ext/error.js diff --git a/src/ext/error.spec.js b/packages/util/src/ext/error.spec.js similarity index 100% rename from src/ext/error.spec.js rename to packages/util/src/ext/error.spec.js diff --git a/src/ext/index.js b/packages/util/src/ext/index.js similarity index 100% rename from src/ext/index.js rename to packages/util/src/ext/index.js diff --git a/src/hex/addPrefix.js b/packages/util/src/hex/addPrefix.js similarity index 100% rename from src/hex/addPrefix.js rename to packages/util/src/hex/addPrefix.js diff --git a/src/hex/addPrefix.spec.js b/packages/util/src/hex/addPrefix.spec.js similarity index 100% rename from src/hex/addPrefix.spec.js rename to packages/util/src/hex/addPrefix.spec.js diff --git a/src/hex/constants.js b/packages/util/src/hex/constants.js similarity index 100% rename from src/hex/constants.js rename to packages/util/src/hex/constants.js diff --git a/src/hex/fixLength.js b/packages/util/src/hex/fixLength.js similarity index 100% rename from src/hex/fixLength.js rename to packages/util/src/hex/fixLength.js diff --git a/src/hex/fixLength.spec.js b/packages/util/src/hex/fixLength.spec.js similarity index 100% rename from src/hex/fixLength.spec.js rename to packages/util/src/hex/fixLength.spec.js diff --git a/src/hex/fromBn.js b/packages/util/src/hex/fromBn.js similarity index 100% rename from src/hex/fromBn.js rename to packages/util/src/hex/fromBn.js diff --git a/src/hex/fromBn.spec.js b/packages/util/src/hex/fromBn.spec.js similarity index 100% rename from src/hex/fromBn.spec.js rename to packages/util/src/hex/fromBn.spec.js diff --git a/src/hex/fromBuffer.js b/packages/util/src/hex/fromBuffer.js similarity index 75% rename from src/hex/fromBuffer.js rename to packages/util/src/hex/fromBuffer.js index f6eb810a1..c51aac8fc 100644 --- a/src/hex/fromBuffer.js +++ b/packages/util/src/hex/fromBuffer.js @@ -3,12 +3,12 @@ // of the ISC license. See the LICENSE file for details. // @flow -const hexFromBuffer = require('../bn/toHex'); +const bufferToHex = require('../buffer/toHex'); /** - @name hexFromBn + @name hexFromBuffer @signature hexFromBuffer (value?: Buffer): string @summary Creates a hex value from a Buffer object. @alias buffer/toHex */ -module.exports = hexFromBuffer; +module.exports = bufferToHex; diff --git a/src/hex/fromBuffer.spec.js b/packages/util/src/hex/fromBuffer.spec.js similarity index 100% rename from src/hex/fromBuffer.spec.js rename to packages/util/src/hex/fromBuffer.spec.js diff --git a/src/hex/fromNumber.js b/packages/util/src/hex/fromNumber.js similarity index 100% rename from src/hex/fromNumber.js rename to packages/util/src/hex/fromNumber.js diff --git a/src/hex/fromNumber.spec.js b/packages/util/src/hex/fromNumber.spec.js similarity index 100% rename from src/hex/fromNumber.spec.js rename to packages/util/src/hex/fromNumber.spec.js diff --git a/src/hex/hasPrefix.js b/packages/util/src/hex/hasPrefix.js similarity index 100% rename from src/hex/hasPrefix.js rename to packages/util/src/hex/hasPrefix.js diff --git a/src/hex/hasPrefix.spec.js b/packages/util/src/hex/hasPrefix.spec.js similarity index 100% rename from src/hex/hasPrefix.spec.js rename to packages/util/src/hex/hasPrefix.spec.js diff --git a/src/hex/index.js b/packages/util/src/hex/index.js similarity index 100% rename from src/hex/index.js rename to packages/util/src/hex/index.js diff --git a/src/hex/stripPrefix.js b/packages/util/src/hex/stripPrefix.js similarity index 100% rename from src/hex/stripPrefix.js rename to packages/util/src/hex/stripPrefix.js diff --git a/src/hex/stripPrefix.spec.js b/packages/util/src/hex/stripPrefix.spec.js similarity index 100% rename from src/hex/stripPrefix.spec.js rename to packages/util/src/hex/stripPrefix.spec.js diff --git a/src/hex/toBn.js b/packages/util/src/hex/toBn.js similarity index 100% rename from src/hex/toBn.js rename to packages/util/src/hex/toBn.js diff --git a/src/hex/toBn.spec.js b/packages/util/src/hex/toBn.spec.js similarity index 100% rename from src/hex/toBn.spec.js rename to packages/util/src/hex/toBn.spec.js diff --git a/src/hex/toBuffer.js b/packages/util/src/hex/toBuffer.js similarity index 100% rename from src/hex/toBuffer.js rename to packages/util/src/hex/toBuffer.js diff --git a/src/hex/toBuffer.spec.js b/packages/util/src/hex/toBuffer.spec.js similarity index 100% rename from src/hex/toBuffer.spec.js rename to packages/util/src/hex/toBuffer.spec.js diff --git a/src/hex/toNumber.js b/packages/util/src/hex/toNumber.js similarity index 100% rename from src/hex/toNumber.js rename to packages/util/src/hex/toNumber.js diff --git a/src/hex/toNumber.spec.js b/packages/util/src/hex/toNumber.spec.js similarity index 100% rename from src/hex/toNumber.spec.js rename to packages/util/src/hex/toNumber.spec.js diff --git a/src/index.js b/packages/util/src/index.js similarity index 82% rename from src/index.js rename to packages/util/src/index.js index ff76f8fa8..660e13665 100644 --- a/src/index.js +++ b/packages/util/src/index.js @@ -11,7 +11,6 @@ const ext = require('./ext'); const hex = require('./hex'); const is = require('./is'); const jsonrpc = require('./jsonrpc'); -const keccak = require('./keccak'); const logger = require('./logger'); const number = require('./number'); const promisify = require('./promisify'); @@ -22,5 +21,5 @@ const u8a = require('./u8a'); @summary Utility methods for this package are split into groups */ module.exports = Object.assign( - {}, array, { assert }, bn, buffer, ext, hex, is, jsonrpc, keccak, { logger }, number, { promisify }, string, u8a + {}, array, { assert }, bn, buffer, ext, hex, is, jsonrpc, { logger }, number, { promisify }, string, u8a ); diff --git a/src/index.spec.js b/packages/util/src/index.spec.js similarity index 100% rename from src/index.spec.js rename to packages/util/src/index.spec.js diff --git a/src/is/bn.js b/packages/util/src/is/bn.js similarity index 100% rename from src/is/bn.js rename to packages/util/src/is/bn.js diff --git a/src/is/bn.spec.js b/packages/util/src/is/bn.spec.js similarity index 100% rename from src/is/bn.spec.js rename to packages/util/src/is/bn.spec.js diff --git a/src/is/boolean.js b/packages/util/src/is/boolean.js similarity index 100% rename from src/is/boolean.js rename to packages/util/src/is/boolean.js diff --git a/src/is/boolean.spec.js b/packages/util/src/is/boolean.spec.js similarity index 100% rename from src/is/boolean.spec.js rename to packages/util/src/is/boolean.spec.js diff --git a/src/is/buffer.js b/packages/util/src/is/buffer.js similarity index 100% rename from src/is/buffer.js rename to packages/util/src/is/buffer.js diff --git a/src/is/buffer.spec.js b/packages/util/src/is/buffer.spec.js similarity index 100% rename from src/is/buffer.spec.js rename to packages/util/src/is/buffer.spec.js diff --git a/src/is/error.js b/packages/util/src/is/error.js similarity index 100% rename from src/is/error.js rename to packages/util/src/is/error.js diff --git a/src/is/error.spec.js b/packages/util/src/is/error.spec.js similarity index 100% rename from src/is/error.spec.js rename to packages/util/src/is/error.spec.js diff --git a/src/is/function.js b/packages/util/src/is/function.js similarity index 100% rename from src/is/function.js rename to packages/util/src/is/function.js diff --git a/src/is/function.spec.js b/packages/util/src/is/function.spec.js similarity index 100% rename from src/is/function.spec.js rename to packages/util/src/is/function.spec.js diff --git a/src/is/hex.js b/packages/util/src/is/hex.js similarity index 100% rename from src/is/hex.js rename to packages/util/src/is/hex.js diff --git a/src/is/hex.spec.js b/packages/util/src/is/hex.spec.js similarity index 100% rename from src/is/hex.spec.js rename to packages/util/src/is/hex.spec.js diff --git a/src/is/index.js b/packages/util/src/is/index.js similarity index 100% rename from src/is/index.js rename to packages/util/src/is/index.js diff --git a/src/is/instanceOf.js b/packages/util/src/is/instanceOf.js similarity index 100% rename from src/is/instanceOf.js rename to packages/util/src/is/instanceOf.js diff --git a/src/is/instanceOf.spec.js b/packages/util/src/is/instanceOf.spec.js similarity index 100% rename from src/is/instanceOf.spec.js rename to packages/util/src/is/instanceOf.spec.js diff --git a/src/is/ip.js b/packages/util/src/is/ip.js similarity index 100% rename from src/is/ip.js rename to packages/util/src/is/ip.js diff --git a/src/is/ip.spec.js b/packages/util/src/is/ip.spec.js similarity index 100% rename from src/is/ip.spec.js rename to packages/util/src/is/ip.spec.js diff --git a/src/is/null.js b/packages/util/src/is/null.js similarity index 100% rename from src/is/null.js rename to packages/util/src/is/null.js diff --git a/src/is/null.spec.js b/packages/util/src/is/null.spec.js similarity index 100% rename from src/is/null.spec.js rename to packages/util/src/is/null.spec.js diff --git a/src/is/number.js b/packages/util/src/is/number.js similarity index 100% rename from src/is/number.js rename to packages/util/src/is/number.js diff --git a/src/is/number.spec.js b/packages/util/src/is/number.spec.js similarity index 100% rename from src/is/number.spec.js rename to packages/util/src/is/number.spec.js diff --git a/src/is/object.js b/packages/util/src/is/object.js similarity index 100% rename from src/is/object.js rename to packages/util/src/is/object.js diff --git a/src/is/object.spec.js b/packages/util/src/is/object.spec.js similarity index 100% rename from src/is/object.spec.js rename to packages/util/src/is/object.spec.js diff --git a/src/is/string.js b/packages/util/src/is/string.js similarity index 100% rename from src/is/string.js rename to packages/util/src/is/string.js diff --git a/src/is/string.spec.js b/packages/util/src/is/string.spec.js similarity index 100% rename from src/is/string.spec.js rename to packages/util/src/is/string.spec.js diff --git a/src/is/uint8Array.js b/packages/util/src/is/uint8Array.js similarity index 100% rename from src/is/uint8Array.js rename to packages/util/src/is/uint8Array.js diff --git a/src/is/uint8Array.spec.js b/packages/util/src/is/uint8Array.spec.js similarity index 100% rename from src/is/uint8Array.spec.js rename to packages/util/src/is/uint8Array.spec.js diff --git a/src/is/undefined.js b/packages/util/src/is/undefined.js similarity index 100% rename from src/is/undefined.js rename to packages/util/src/is/undefined.js diff --git a/src/is/undefined.spec.js b/packages/util/src/is/undefined.spec.js similarity index 100% rename from src/is/undefined.spec.js rename to packages/util/src/is/undefined.spec.js diff --git a/src/jsonrpc/index.js b/packages/util/src/jsonrpc/index.js similarity index 100% rename from src/jsonrpc/index.js rename to packages/util/src/jsonrpc/index.js diff --git a/src/jsonrpc/signature.js b/packages/util/src/jsonrpc/signature.js similarity index 100% rename from src/jsonrpc/signature.js rename to packages/util/src/jsonrpc/signature.js diff --git a/src/jsonrpc/signature.spec.js b/packages/util/src/jsonrpc/signature.spec.js similarity index 100% rename from src/jsonrpc/signature.spec.js rename to packages/util/src/jsonrpc/signature.spec.js diff --git a/src/logger.js b/packages/util/src/logger.js similarity index 100% rename from src/logger.js rename to packages/util/src/logger.js diff --git a/src/logger.spec.js b/packages/util/src/logger.spec.js similarity index 100% rename from src/logger.spec.js rename to packages/util/src/logger.spec.js diff --git a/src/number/fromBuffer.js b/packages/util/src/number/fromBuffer.js similarity index 100% rename from src/number/fromBuffer.js rename to packages/util/src/number/fromBuffer.js diff --git a/src/number/fromBuffer.spec.js b/packages/util/src/number/fromBuffer.spec.js similarity index 100% rename from src/number/fromBuffer.spec.js rename to packages/util/src/number/fromBuffer.spec.js diff --git a/src/number/fromHex.js b/packages/util/src/number/fromHex.js similarity index 100% rename from src/number/fromHex.js rename to packages/util/src/number/fromHex.js diff --git a/src/number/fromHex.spec.js b/packages/util/src/number/fromHex.spec.js similarity index 100% rename from src/number/fromHex.spec.js rename to packages/util/src/number/fromHex.spec.js diff --git a/src/number/index.js b/packages/util/src/number/index.js similarity index 100% rename from src/number/index.js rename to packages/util/src/number/index.js diff --git a/src/number/toBuffer.js b/packages/util/src/number/toBuffer.js similarity index 100% rename from src/number/toBuffer.js rename to packages/util/src/number/toBuffer.js diff --git a/src/number/toBuffer.spec.js b/packages/util/src/number/toBuffer.spec.js similarity index 100% rename from src/number/toBuffer.spec.js rename to packages/util/src/number/toBuffer.spec.js diff --git a/src/number/toHex.js b/packages/util/src/number/toHex.js similarity index 100% rename from src/number/toHex.js rename to packages/util/src/number/toHex.js diff --git a/src/number/toHex.spec.js b/packages/util/src/number/toHex.spec.js similarity index 100% rename from src/number/toHex.spec.js rename to packages/util/src/number/toHex.spec.js diff --git a/src/promisify.js b/packages/util/src/promisify.js similarity index 100% rename from src/promisify.js rename to packages/util/src/promisify.js diff --git a/src/promisify.spec.js b/packages/util/src/promisify.spec.js similarity index 100% rename from src/promisify.spec.js rename to packages/util/src/promisify.spec.js diff --git a/src/string/index.js b/packages/util/src/string/index.js similarity index 100% rename from src/string/index.js rename to packages/util/src/string/index.js diff --git a/src/string/shorten.js b/packages/util/src/string/shorten.js similarity index 100% rename from src/string/shorten.js rename to packages/util/src/string/shorten.js diff --git a/src/string/shorten.spec.js b/packages/util/src/string/shorten.spec.js similarity index 100% rename from src/string/shorten.spec.js rename to packages/util/src/string/shorten.spec.js diff --git a/src/syncify.js b/packages/util/src/syncify.js similarity index 100% rename from src/syncify.js rename to packages/util/src/syncify.js diff --git a/src/syncify.spec.js b/packages/util/src/syncify.spec.js similarity index 100% rename from src/syncify.spec.js rename to packages/util/src/syncify.spec.js diff --git a/src/types.js b/packages/util/src/types.js similarity index 100% rename from src/types.js rename to packages/util/src/types.js diff --git a/src/u8a/fromBuffer.js b/packages/util/src/u8a/fromBuffer.js similarity index 100% rename from src/u8a/fromBuffer.js rename to packages/util/src/u8a/fromBuffer.js diff --git a/src/u8a/fromBuffer.spec.js b/packages/util/src/u8a/fromBuffer.spec.js similarity index 100% rename from src/u8a/fromBuffer.spec.js rename to packages/util/src/u8a/fromBuffer.spec.js diff --git a/src/u8a/fromUtf8.js b/packages/util/src/u8a/fromUtf8.js similarity index 100% rename from src/u8a/fromUtf8.js rename to packages/util/src/u8a/fromUtf8.js diff --git a/src/u8a/fromUtf8.spec.js b/packages/util/src/u8a/fromUtf8.spec.js similarity index 100% rename from src/u8a/fromUtf8.spec.js rename to packages/util/src/u8a/fromUtf8.spec.js diff --git a/src/u8a/index.js b/packages/util/src/u8a/index.js similarity index 100% rename from src/u8a/index.js rename to packages/util/src/u8a/index.js diff --git a/src/u8a/polyfill/textDecoder.js b/packages/util/src/u8a/polyfill/textDecoder.js similarity index 100% rename from src/u8a/polyfill/textDecoder.js rename to packages/util/src/u8a/polyfill/textDecoder.js diff --git a/src/u8a/polyfill/textDecoder.spec.js b/packages/util/src/u8a/polyfill/textDecoder.spec.js similarity index 100% rename from src/u8a/polyfill/textDecoder.spec.js rename to packages/util/src/u8a/polyfill/textDecoder.spec.js diff --git a/src/u8a/polyfill/textEncoder.js b/packages/util/src/u8a/polyfill/textEncoder.js similarity index 100% rename from src/u8a/polyfill/textEncoder.js rename to packages/util/src/u8a/polyfill/textEncoder.js diff --git a/src/u8a/polyfill/textEncoder.spec.js b/packages/util/src/u8a/polyfill/textEncoder.spec.js similarity index 100% rename from src/u8a/polyfill/textEncoder.spec.js rename to packages/util/src/u8a/polyfill/textEncoder.spec.js diff --git a/src/u8a/toBuffer.js b/packages/util/src/u8a/toBuffer.js similarity index 100% rename from src/u8a/toBuffer.js rename to packages/util/src/u8a/toBuffer.js diff --git a/src/u8a/toBuffer.spec.js b/packages/util/src/u8a/toBuffer.spec.js similarity index 100% rename from src/u8a/toBuffer.spec.js rename to packages/util/src/u8a/toBuffer.spec.js diff --git a/src/u8a/toUtf8.js b/packages/util/src/u8a/toUtf8.js similarity index 100% rename from src/u8a/toUtf8.js rename to packages/util/src/u8a/toUtf8.js diff --git a/src/u8a/toUtf8.spec.js b/packages/util/src/u8a/toUtf8.spec.js similarity index 100% rename from src/u8a/toUtf8.spec.js rename to packages/util/src/u8a/toUtf8.spec.js diff --git a/yarn.lock b/yarn.lock index 66488697f..91b2b4c20 100644 --- a/yarn.lock +++ b/yarn.lock @@ -63,15 +63,15 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@polkadot/api-jsonrpc@^0.6.9": - version "0.6.9" - resolved "https://registry.yarnpkg.com/@polkadot/api-jsonrpc/-/api-jsonrpc-0.6.9.tgz#11244a10da77fcd3ed74c9f583c837a5acb5215e" +"@polkadot/api-jsonrpc@^0.6.12": + version "0.6.12" + resolved "https://registry.yarnpkg.com/@polkadot/api-jsonrpc/-/api-jsonrpc-0.6.12.tgz#ca978c22474b050486a107347580e778a41215b3" dependencies: babel-runtime "^6.26.0" -"@polkadot/dev@^0.14.8": - version "0.14.8" - resolved "https://registry.yarnpkg.com/@polkadot/dev/-/dev-0.14.8.tgz#8437d616c701a556cef977c9455a2257c89a66b8" +"@polkadot/dev@^0.15.1": + version "0.15.1" + resolved "https://registry.yarnpkg.com/@polkadot/dev/-/dev-0.15.1.tgz#74b764552ae7c11cbf35797abd389148033fe562" dependencies: babel-cli "^6.26.0" babel-core "^6.26.0" @@ -95,13 +95,13 @@ eslint-plugin-promise "^3.6.0" eslint-plugin-react "^7.4.0" eslint-plugin-standard "^3.0.1" - flow-bin "^0.63.1" + flow-bin "^0.64.0" flow-copy-source "^1.2.1" jest "^22.0.0" makeshift "^1.1.0" mkdirp "^0.5.1" postcss "^6.0.14" - postcss-sass "^0.2.0" + postcss-sass "^0.3.0" rimraf "^2.6.2" stylelint "^8.2.0" stylelint-config-standard "^18.0.0" @@ -110,6 +110,13 @@ version "8.5.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.2.tgz#83b8103fa9a2c2e83d78f701a9aa7c9539739aa5" +JSONStream@^1.0.4: + version "1.3.2" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abab@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" @@ -142,6 +149,10 @@ acorn@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + ajv-keywords@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" @@ -244,6 +255,10 @@ array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + array-includes@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" @@ -297,7 +312,7 @@ async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" -async@^1.4.0: +async@^1.4.0, async@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -935,6 +950,10 @@ bl@^1.0.0: dependencies: readable-stream "^2.0.5" +blakejs@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -1009,6 +1028,10 @@ builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -1046,6 +1069,10 @@ caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000770: version "1.0.30000772" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000772.tgz#78129622cabfed7af1ff38b64ab680a6a0865420" +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -1159,6 +1186,17 @@ clone-regexp@^1.0.0: is-regexp "^1.0.0" is-supported-regexp-flag "^1.0.0" +clone@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" + +cmd-shim@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" + dependencies: + graceful-fs "^4.1.2" + mkdirp "~0.5.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -1181,12 +1219,23 @@ color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" +columnify@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + combined-stream@^1.0.5, combined-stream@~1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" dependencies: delayed-stream "~1.0.0" +command-join@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/command-join/-/command-join-2.0.0.tgz#52e8b984f4872d952ff1bdc8b98397d27c7144cf" + commander@^2.11.0: version "2.12.2" resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" @@ -1197,11 +1246,18 @@ commander@~2.9.0: dependencies: graceful-readlink ">= 1.0.0" +compare-func@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" + dependencies: + array-ify "^1.0.0" + dot-prop "^3.0.0" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.6.0: +concat-stream@^1.4.10, concat-stream@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: @@ -1221,6 +1277,151 @@ content-type-parser@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" +conventional-changelog-angular@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.0.tgz#0a26a071f2c9fcfcf2b86ba0cfbf6e6301b75bfa" + dependencies: + compare-func "^1.3.1" + q "^1.4.1" + +conventional-changelog-atom@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.1.2.tgz#12595ad5267a6937c34cf900281b1c65198a4c63" + dependencies: + q "^1.4.1" + +conventional-changelog-cli@^1.3.2: + version "1.3.5" + resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.5.tgz#46c51496216b7406588883defa6fac589e9bb31e" + dependencies: + add-stream "^1.0.0" + conventional-changelog "^1.1.7" + lodash "^4.1.0" + meow "^3.7.0" + tempfile "^1.1.1" + +conventional-changelog-codemirror@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.2.1.tgz#299a4f7147baf350e6c8158fc54954a291c5cc09" + dependencies: + q "^1.4.1" + +conventional-changelog-core@^1.9.3: + version "1.9.5" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-1.9.5.tgz#5db7566dad7c0cb75daf47fbb2976f7bf9928c1d" + dependencies: + conventional-changelog-writer "^2.0.3" + conventional-commits-parser "^2.1.0" + dateformat "^1.0.12" + get-pkg-repo "^1.0.0" + git-raw-commits "^1.3.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^1.2.3" + lodash "^4.0.0" + normalize-package-data "^2.3.5" + q "^1.4.1" + read-pkg "^1.1.0" + read-pkg-up "^1.0.1" + through2 "^2.0.0" + +conventional-changelog-ember@^0.2.9: + version "0.2.10" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.2.10.tgz#dcd6e4cdc2e6c2b58653cf4d2cb1656a60421929" + dependencies: + q "^1.4.1" + +conventional-changelog-eslint@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-0.2.1.tgz#2c2a11beb216f80649ba72834180293b687c0662" + dependencies: + q "^1.4.1" + +conventional-changelog-express@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.2.1.tgz#838d9e1e6c9099703b150b9c19aa2d781742bd6c" + dependencies: + q "^1.4.1" + +conventional-changelog-jquery@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510" + dependencies: + q "^1.4.1" + +conventional-changelog-jscs@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c" + dependencies: + q "^1.4.1" + +conventional-changelog-jshint@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.2.1.tgz#86139bb3ac99899f2b177e9617e09b37d99bcf3a" + dependencies: + compare-func "^1.3.1" + q "^1.4.1" + +conventional-changelog-writer@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-2.0.3.tgz#073b0c39f1cc8fc0fd9b1566e93833f51489c81c" + dependencies: + compare-func "^1.3.1" + conventional-commits-filter "^1.1.1" + dateformat "^1.0.11" + handlebars "^4.0.2" + json-stringify-safe "^5.0.1" + lodash "^4.0.0" + meow "^3.3.0" + semver "^5.0.1" + split "^1.0.0" + through2 "^2.0.0" + +conventional-changelog@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.7.tgz#9151a62b1d8edb2d82711dabf5b7cf71041f82b1" + dependencies: + conventional-changelog-angular "^1.5.2" + conventional-changelog-atom "^0.1.2" + conventional-changelog-codemirror "^0.2.1" + conventional-changelog-core "^1.9.3" + conventional-changelog-ember "^0.2.9" + conventional-changelog-eslint "^0.2.1" + conventional-changelog-express "^0.2.1" + conventional-changelog-jquery "^0.1.0" + conventional-changelog-jscs "^0.1.0" + conventional-changelog-jshint "^0.2.1" + +conventional-commits-filter@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.1.tgz#72172319c0c88328a015b30686b55527b3a5e54a" + dependencies: + is-subset "^0.1.1" + modify-values "^1.0.0" + +conventional-commits-parser@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.0.tgz#9b4b7c91124bf2a1a9a2cc1c72760d382cbbb229" + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.0" + lodash "^4.2.1" + meow "^3.3.0" + split2 "^2.0.0" + through2 "^2.0.0" + trim-off-newlines "^1.0.0" + +conventional-recommended-bump@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-1.1.0.tgz#964d4fcc70fb5259d41fa9b39d3df6afdb87d253" + dependencies: + concat-stream "^1.4.10" + conventional-commits-filter "^1.1.1" + conventional-commits-parser "^2.1.0" + git-raw-commits "^1.3.0" + git-semver-tags "^1.2.3" + meow "^3.3.0" + object-assign "^4.0.1" + convert-source-map@^1.4.0, convert-source-map@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -1256,6 +1457,12 @@ coveralls@^3.0.0: minimist "^1.2.0" request "^2.79.0" +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -1286,18 +1493,35 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": dependencies: cssom "0.3.x" +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" dependencies: array-find-index "^1.0.1" +dargs@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + dependencies: + number-is-nan "^1.0.0" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" dependencies: assert-plus "^1.0.0" +dateformat@^1.0.11, dateformat@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" + dependencies: + get-stdin "^4.0.1" + meow "^3.3.0" + deasync@^0.1.12: version "0.1.12" resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.12.tgz#0159492a4133ab301d6c778cf01e74e63b10e549" @@ -1321,6 +1545,10 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + deep-extend@~0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" @@ -1335,6 +1563,12 @@ default-require-extensions@^1.0.0: dependencies: strip-bom "^2.0.0" +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" @@ -1368,6 +1602,10 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -1432,6 +1670,12 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" +dot-prop@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + dependencies: + is-obj "^1.0.0" + dot-prop@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" @@ -1446,6 +1690,14 @@ dox@^0.9.0: jsdoctypeparser "^1.2.0" markdown-it "~7.0.0" +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" @@ -1701,6 +1953,18 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execall@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execall/-/execall-1.0.0.tgz#73d0904e395b3cab0658b08d09ec25307f29bb73" @@ -1842,9 +2106,9 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" -flow-bin@^0.63.1: - version "0.63.1" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.63.1.tgz#ab00067c197169a5fb5b4996c8f6927b06694828" +flow-bin@^0.64.0: + version "0.64.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.64.0.tgz#ddd3fb3b183ab1ab35a5d5dec9caf5ebbcded167" flow-copy-source@^1.2.1: version "1.2.1" @@ -1898,6 +2162,14 @@ fs-extra@^3.0.1: jsonfile "^3.0.0" universalify "^0.1.0" +fs-extra@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -1955,6 +2227,20 @@ get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" +get-pkg-repo@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + dependencies: + hosted-git-info "^2.1.4" + meow "^3.3.0" + normalize-package-data "^2.3.0" + parse-github-repo-url "^1.3.0" + through2 "^2.0.0" + +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" @@ -1973,6 +2259,36 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +git-raw-commits@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.0.tgz#0bc8596e90d5ffe736f7f5546bd2d12f73abaac6" + dependencies: + dargs "^4.0.1" + lodash.template "^4.0.2" + meow "^3.3.0" + split2 "^2.0.0" + through2 "^2.0.0" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.2.3.tgz#188b453882bf9d7a23afd31baba537dab7388d5d" + dependencies: + meow "^3.3.0" + semver "^5.0.1" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + dependencies: + ini "^1.3.2" + github-from-package@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" @@ -1990,6 +2306,13 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -2024,6 +2347,16 @@ globby@^5.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + globby@^7.0.0: version "7.1.1" resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" @@ -2039,12 +2372,28 @@ globjoin@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" -gonzales-pe@^4.0.3: +gonzales-pe@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.2.3.tgz#41091703625433285e0aee3aa47829fc1fbeb6f2" dependencies: minimist "1.1.x" +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -2057,7 +2406,7 @@ growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" -handlebars@^4.0.3: +handlebars@^4.0.2, handlebars@^4.0.3: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" dependencies: @@ -2146,7 +2495,7 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -hosted-git-info@^2.1.4: +hosted-git-info@^2.1.4, hosted-git-info@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" @@ -2220,11 +2569,11 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -ini@~1.3.0: +ini@^1.3.2, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" -inquirer@^3.0.6: +inquirer@^3.0.6, inquirer@^3.2.2: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" dependencies: @@ -2332,6 +2681,10 @@ is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" +is-extglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" @@ -2354,6 +2707,12 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + is-hexadecimal@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz#6e084bbc92061fbb0971ec58b6ce6d404e24da69" @@ -2390,7 +2749,7 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-plain-obj@^1.1.0: +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -2406,6 +2765,10 @@ is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" @@ -2422,10 +2785,18 @@ is-resolvable@^1.0.0: dependencies: tryit "^1.0.1" -is-stream@^1.0.1, is-stream@^1.1.0: +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +is-subset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + is-supported-regexp-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz#8b520c85fae7a253382d4b02652e045576e13bb8" @@ -2434,6 +2805,12 @@ is-symbol@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" +is-text-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + dependencies: + text-extensions "^1.0.0" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -2846,6 +3223,10 @@ jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" +json-parse-better-errors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a" + json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -2864,7 +3245,7 @@ json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -2878,10 +3259,20 @@ jsonfile@^3.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + optionalDependencies: + graceful-fs "^4.1.6" + jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -2947,6 +3338,50 @@ left-pad@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee" +lerna@^2.5.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-2.8.0.tgz#309a816fca5c73ea38f9f20e314a836e99b54cf0" + dependencies: + async "^1.5.0" + chalk "^2.1.0" + cmd-shim "^2.0.2" + columnify "^1.5.4" + command-join "^2.0.0" + conventional-changelog-cli "^1.3.2" + conventional-recommended-bump "^1.0.1" + dedent "^0.7.0" + execa "^0.8.0" + find-up "^2.1.0" + fs-extra "^4.0.1" + 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.5.0" + inquirer "^3.2.2" + is-ci "^1.0.10" + load-json-file "^4.0.0" + lodash "^4.17.4" + 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.1" + safe-buffer "^5.1.1" + semver "^5.4.1" + signal-exit "^3.0.2" + slash "^1.0.0" + strong-log-transformer "^1.0.6" + temp-write "^3.3.0" + write-file-atomic "^2.3.0" + write-json-file "^2.2.0" + write-pkg "^3.1.0" + yargs "^8.0.2" + leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" @@ -2983,6 +3418,15 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -2990,6 +3434,10 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +lodash._reinterpolate@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + lodash.cond@^4.3.0: version "4.5.2" resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" @@ -2998,11 +3446,24 @@ lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" +lodash.template@^4.0.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + dependencies: + lodash._reinterpolate "~3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + dependencies: + lodash._reinterpolate "~3.0.0" + lodash@^3.7.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0: +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -3037,6 +3498,10 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + lru-cache@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" @@ -3044,6 +3509,12 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +make-dir@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" + dependencies: + pify "^3.0.0" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -3103,7 +3574,7 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" -meow@^3.7.0: +meow@^3.3.0, meow@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" dependencies: @@ -3174,6 +3645,10 @@ minimist@1.1.x: version "1.1.3" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" +minimist@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" + minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -3182,12 +3657,20 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" -"mkdirp@>=0.5 0", mkdirp@^0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: minimist "0.0.8" +modify-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" + +moment@^2.6.0: + version "2.20.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3257,7 +3740,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: +normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" dependencies: @@ -3286,7 +3769,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.1, npmlog@^4.0.2: +npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: @@ -3408,6 +3891,15 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +package-json@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + parse-entities@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.1.1.tgz#8112d88471319f27abae4d64964b122fe4e1b890" @@ -3419,6 +3911,10 @@ parse-entities@^1.0.2: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-github-repo-url@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" + parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -3440,12 +3936,23 @@ parse-json@^3.0.0: dependencies: error-ex "^1.3.1" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parse5@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" dependencies: "@types/node" "*" +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -3500,7 +4007,7 @@ performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" -pify@^2.0.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -3569,12 +4076,12 @@ postcss-safe-parser@^3.0.1: dependencies: postcss "^6.0.6" -postcss-sass@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.2.0.tgz#e55516441e9526ba4b380a730d3a02e9eaa78c7a" +postcss-sass@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.3.0.tgz#dc2582ee0e61541aa88bafdc5a8aebb53deaae75" dependencies: - gonzales-pe "^4.0.3" - postcss "^6.0.6" + gonzales-pe "^4.2.3" + postcss "^6.0.16" postcss-scss@^1.0.2: version "1.0.2" @@ -3611,6 +4118,14 @@ postcss@^6.0.13, postcss@^6.0.14, postcss@^6.0.3, postcss@^6.0.6, postcss@^6.0.8 source-map "^0.6.1" supports-color "^4.4.0" +postcss@^6.0.16: + version "6.0.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.16.tgz#112e2fe2a6d2109be0957687243170ea5589e146" + dependencies: + chalk "^2.3.0" + source-map "^0.6.1" + supports-color "^5.1.0" + prebuild-install@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.3.0.tgz#19481247df728b854ab57b187ce234211311b485" @@ -3634,6 +4149,10 @@ prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" @@ -3690,6 +4209,10 @@ punycode@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" +q@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" @@ -3705,6 +4228,15 @@ randomatic@^1.1.3: is-number "^3.0.0" kind-of "^4.0.0" +rc@^1.0.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.4.tgz#a0f606caae2a3b862bbd0ef85482c0125b315fa3" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + rc@^1.1.6, rc@^1.1.7: version "1.2.2" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" @@ -3714,6 +4246,12 @@ rc@^1.1.6, rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +read-cmd-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" + dependencies: + graceful-fs "^4.1.2" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -3728,7 +4266,7 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" -read-pkg@^1.0.0: +read-pkg@^1.0.0, read-pkg@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" dependencies: @@ -3744,7 +4282,15 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2: +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -3812,6 +4358,19 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" +registry-auth-token@^3.0.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" @@ -4061,6 +4620,10 @@ semver@5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" +semver@^5.0.1, semver@^5.1.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -4121,6 +4684,12 @@ sntp@2.x.x: dependencies: hoek "4.x.x" +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + dependencies: + is-plain-obj "^1.0.0" + source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" @@ -4165,6 +4734,18 @@ specificity@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.3.2.tgz#99e6511eceef0f8d9b57924937aac2cb13d13c42" +split2@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" + dependencies: + through2 "^2.0.2" + +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + dependencies: + through "2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -4272,6 +4853,16 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +strong-log-transformer@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-1.0.6.tgz#f7fb93758a69a571140181277eea0c2eb1301fa3" + dependencies: + byline "^5.0.0" + duplexer "^0.1.1" + minimist "^0.1.0" + moment "^2.6.0" + through "^2.3.4" + style-search@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/style-search/-/style-search-0.1.0.tgz#7958c793e47e32e07d2b5cafe5c0bf8e12e77902" @@ -4351,6 +4942,12 @@ supports-color@^4.0.0, supports-color@^4.4.0: dependencies: has-flag "^2.0.0" +supports-color@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5" + dependencies: + has-flag "^2.0.0" + svg-tags@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" @@ -4417,6 +5014,28 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + +temp-write@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" + dependencies: + graceful-fs "^4.1.2" + is-stream "^1.1.0" + make-dir "^1.0.0" + pify "^3.0.0" + temp-dir "^1.0.0" + uuid "^3.0.1" + +tempfile@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" + dependencies: + os-tmpdir "^1.0.0" + uuid "^2.0.1" + test-exclude@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" @@ -4427,6 +5046,10 @@ test-exclude@^4.1.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" +text-extensions@^1.0.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39" + text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -4435,10 +5058,21 @@ throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" -through@^2.3.6: +through2@^2.0.0, through2@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -4473,6 +5107,10 @@ trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" +trim-off-newlines@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -4503,6 +5141,10 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +tweetnacl@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.0.tgz#713d8b818da42068740bf68386d0479e66fc8a7b" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -4601,10 +5243,20 @@ unzip-response@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-1.0.2.tgz#b984f0877fc0a89c2c773cc1ef7b5b232b5b06fe" +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + url-parse-as-address@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-as-address/-/url-parse-as-address-1.0.0.tgz#fb80901883f338b3cbed3538f5faa26adaf7f2e7" +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + user-home@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" @@ -4620,10 +5272,18 @@ util.promisify@^1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + uuid@^3.0.0, uuid@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" +uuid@^3.0.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + v8flags@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" @@ -4677,6 +5337,12 @@ watch@~0.18.0: exec-sh "^0.2.0" minimist "^1.2.0" +wcwidth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + dependencies: + defaults "^1.0.3" + weak@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/weak/-/weak-1.0.1.tgz#ab99aab30706959aa0200cb8cf545bb9cb33b99e" @@ -4749,7 +5415,7 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^2.1.0: +write-file-atomic@^2.0.0, write-file-atomic@^2.1.0, write-file-atomic@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" dependencies: @@ -4757,6 +5423,24 @@ write-file-atomic@^2.1.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-json-file@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + pify "^3.0.0" + sort-keys "^2.0.0" + write-file-atomic "^2.0.0" + +write-pkg@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.1.0.tgz#030a9994cc9993d25b4e75a9f1a1923607291ce9" + dependencies: + sort-keys "^2.0.0" + write-json-file "^2.2.0" + write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" @@ -4775,10 +5459,16 @@ xml-name-validator@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" -xtend@4.0.1, xtend@^4.0.0, xtend@^4.0.1: +xtend@4.0.1, xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" +xxhashjs@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/xxhashjs/-/xxhashjs-0.2.2.tgz#8a6251567621a1c46a5ae204da0249c7f8caa9d8" + dependencies: + cuint "^0.2.2" + y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"