diff --git a/.flowconfig b/.flowconfig index 8776bbe19e7c..6b474050532f 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,5 +1,6 @@ [ignore] /build +/packages/.*/build [include] diff --git a/lerna.json b/lerna.json index d52c5d830ec3..403243720a47 100644 --- a/lerna.json +++ b/lerna.json @@ -10,5 +10,5 @@ "packages": [ "packages/*" ], - "version": "0.6.12" + "version": "0.7.0" } diff --git a/package.json b/package.json index 8f991869af53..956b74e9c172 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "test": "jest --coverage" }, "devDependencies": { - "@polkadot/dev": "^0.14.6", + "@polkadot/dev": "^0.15.1", "lerna": "^2.5.1" } } diff --git a/packages/api-format/package.json b/packages/api-format/package.json index a8fa7fc6962a..e313f44e80b4 100644 --- a/packages/api-format/package.json +++ b/packages/api-format/package.json @@ -1,6 +1,6 @@ { "name": "@polkadot/api-format", - "version": "0.6.12", + "version": "0.7.0", "description": "Input/Output formatters for JsonRPC exchange", "main": "index.js", "keywords": [ @@ -30,11 +30,11 @@ "test": "echo \"Tests only available from root wrapper\"" }, "devDependencies": { - "@polkadot/api-jsonrpc": "^0.6.12" + "@polkadot/api-jsonrpc": "^0.7.0" }, "dependencies": { - "@polkadot/primitives-json": "^0.4.6", - "@polkadot/util": "^0.11.1", + "@polkadot/primitives-json": "^0.4.10", + "@polkadot/util": "^0.13.1", "babel-runtime": "^6.26.0" } } diff --git a/packages/api-jsonrpc/package.json b/packages/api-jsonrpc/package.json index 6b4175c997a0..47a970a6151a 100644 --- a/packages/api-jsonrpc/package.json +++ b/packages/api-jsonrpc/package.json @@ -1,6 +1,6 @@ { "name": "@polkadot/api-jsonrpc", - "version": "0.6.12", + "version": "0.7.0", "description": "Method definitions for the Polkadot RPC layer", "main": "index.js", "engines": { diff --git a/packages/api-jsonrpc/src/index.js b/packages/api-jsonrpc/src/index.js index 66676bda6b77..602e63e8c96f 100644 --- a/packages/api-jsonrpc/src/index.js +++ b/packages/api-jsonrpc/src/index.js @@ -3,7 +3,7 @@ // of the ISC license. See the LICENSE file for details. // @flow -import type { InterfaceDefinition } from './types'; +import type { InterfaceDefinitions } from './types'; const chain = require('./chain'); const state = require('./state'); @@ -14,4 +14,4 @@ const state = require('./state'); module.exports = ({ chain, state -}: { [string]: InterfaceDefinition }); +}: InterfaceDefinitions); diff --git a/packages/api-jsonrpc/src/types.js b/packages/api-jsonrpc/src/types.js index 8fcd269da6fb..c56f41f74071 100644 --- a/packages/api-jsonrpc/src/types.js +++ b/packages/api-jsonrpc/src/types.js @@ -22,8 +22,14 @@ export type InterfaceMethodDefinition = { output: InterfaceOutputType }; +export type InterfaceTypes = 'chain' | 'state'; + export type InterfaceDefinition = { methods: { [string]: InterfaceMethodDefinition } }; + +export type InterfaceDefinitions = { + [InterfaceTypes]: InterfaceDefinition +}; diff --git a/packages/api-provider/package.json b/packages/api-provider/package.json index df9017d69d5d..1ef4c8a9e062 100644 --- a/packages/api-provider/package.json +++ b/packages/api-provider/package.json @@ -1,6 +1,6 @@ { "name": "@polkadot/api-provider", - "version": "0.6.12", + "version": "0.7.0", "description": "Transport providers for the API", "main": "index.js", "keywords": [ @@ -34,7 +34,7 @@ "nock": "^9.1.0" }, "dependencies": { - "@polkadot/util": "^0.11.1", + "@polkadot/util": "^0.13.1", "babel-runtime": "^6.26.0", "isomorphic-fetch": "^2.2.1", "websocket": "^1.0.25" diff --git a/packages/api-provider/src/jsonRpcCoder.js b/packages/api-provider/src/jsonRpcCoder.js index 00227a698e42..06c96c72a328 100644 --- a/packages/api-provider/src/jsonRpcCoder.js +++ b/packages/api-provider/src/jsonRpcCoder.js @@ -24,6 +24,7 @@ module.exports = class JsonRpcCoder { throw new Error(`[${code}]: ${message}`); } + assert(!isUndefined(response.result), 'No result found in JsonRpc response'); return response.result; diff --git a/packages/api-provider/src/ws/index.spec.js b/packages/api-provider/src/ws/index.spec.js index 46eddca2d683..80856c300e9d 100644 --- a/packages/api-provider/src/ws/index.spec.js +++ b/packages/api-provider/src/ws/index.spec.js @@ -207,28 +207,16 @@ describe('Ws', () => { }); describe('queued', () => { - let sendPromise; - - beforeEach(() => { - ws = createWs([{ + it('sends messages when connected', () => { + const ws = createWs([{ id: 1, method: 'test_queue', reply: { result: 'ok' } }], false); - sendPromise = ws.send('test_queue', []); - }); - - it('sends messages when connected', () => { - ws.connect(); - - return sendPromise.then((result) => { - expect(result).toEqual('ok'); - }); - }); + const sendPromise = ws.send('test_queue', []); - it('sends messages when connected (errors)', () => { ws.connect(); return sendPromise.then((result) => { diff --git a/packages/api/package.json b/packages/api/package.json index 495e35298c00..40326223aca0 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,6 +1,6 @@ { "name": "@polkadot/api", - "version": "0.6.12", + "version": "0.7.0", "description": "A JavaScript wrapper for the Polkadot JsonRPC interface", "main": "index.js", "keywords": [ @@ -30,10 +30,10 @@ "test": "echo \"Tests only available from root wrapper\"" }, "dependencies": { - "@polkadot/api-format": "^0.6.12", - "@polkadot/api-jsonrpc": "^0.6.12", - "@polkadot/api-provider": "^0.6.12", - "@polkadot/util": "^0.11.1", + "@polkadot/api-format": "^0.7.0", + "@polkadot/api-jsonrpc": "^0.7.0", + "@polkadot/api-provider": "^0.7.0", + "@polkadot/util": "^0.13.1", "babel-runtime": "^6.26.0" } } diff --git a/packages/api/src/api.js b/packages/api/src/api.js index cbf0de46b44c..96c6a7a53235 100644 --- a/packages/api/src/api.js +++ b/packages/api/src/api.js @@ -4,63 +4,22 @@ // @flow import type { ProviderInterface } from '@polkadot/api-provider/types'; -import type { InterfaceDefinition } from '@polkadot/api-jsonrpc/types'; import type { ApiInterface, ApiInterface$Section } from './types'; -const { formatInputs, formatOutput } = require('@polkadot/api-format'); const interfaces = require('@polkadot/api-jsonrpc'); const assert = require('@polkadot/util/assert'); -const ExtError = require('@polkadot/util/ext/error'); const isFunction = require('@polkadot/util/is/function'); -const jsonrpcSignature = require('@polkadot/util/jsonrpc/signature'); + +const createInterface = require('./create/interface'); module.exports = class Api implements ApiInterface { - _provider: ProviderInterface; - _chainInterface: ApiInterface$Section; - _stateInterface: ApiInterface$Section; + chain: ApiInterface$Section; + state: ApiInterface$Section; constructor (provider: ProviderInterface) { assert(provider && isFunction(provider.send), 'Expected Provider'); - this._provider = provider; - - this._chainInterface = this._createInterface(interfaces, 'chain'); - this._stateInterface = this._createInterface(interfaces, 'state'); - } - - // flowlint-next-line unsafe-getters-setters:off - get chain (): ApiInterface$Section { - return this._chainInterface; - } - - // flowlint-next-line unsafe-getters-setters:off - get state (): ApiInterface$Section { - return this._stateInterface; - } - - _createInterface (definitions: { [string]: InterfaceDefinition }, section: string): ApiInterface$Section { - const definition = definitions[section]; - - return Object - .keys(definition.methods) - .reduce((container, method: string) => { - const { inputs, output } = definition.methods[method]; - const rpcName = `${section}_${method}`; - - container[method] = async (..._params: Array): Promise => { - try { - assert(inputs.length === _params.length, `${inputs.length} params expected, found ${_params.length} instead`); - - const params = formatInputs(inputs, _params); - const result = await this._provider.send(rpcName, params); - - return formatOutput(output, result); - } catch (error) { - throw new ExtError(`${jsonrpcSignature(rpcName, inputs, output)}:: ${error.message}`, (error: ExtError).code); - } - }; - - return container; - }, {}); + this.chain = createInterface(provider, interfaces.chain, 'chain'); + this.state = createInterface(provider, interfaces.state, 'state'); } }; diff --git a/packages/api/src/api.spec.js b/packages/api/src/api.spec.js index fb27ccbc6fa6..3e99d4ce5c12 100644 --- a/packages/api/src/api.spec.js +++ b/packages/api/src/api.spec.js @@ -2,8 +2,6 @@ // This software may be modified and distributed under the terms // of the ISC license. See the LICENSE file for details. -const isFunction = require('@polkadot/util/is/function'); - const Api = require('./api'); describe('Api', () => { @@ -25,81 +23,17 @@ describe('Api', () => { sendSpy.mockRestore(); }); - describe('constructor', () => { - it('requires a provider with a send method', () => { - expect( - () => new Api({}) - ).toThrow(/Expected Provider/); - }); - - it('sets up the chain interface', () => { - expect(api.chain).toBeDefined(); - }); - - it('sets up the state interface', () => { - expect(api.state).toBeDefined(); - }); + it('requires a provider with a send method', () => { + expect( + () => new Api({}) + ).toThrow(/Expected Provider/); }); - describe('_createInterface', () => { - let container; - - beforeEach(() => { - container = api._createInterface({ - test: { - methods: { - blah: { - inputs: [ - { name: 'foo', type: 'Address' } - ], - output: { type: 'Address' } - }, - bleh: { - inputs: [], - output: { type: 'Address' } - } - } - } - }, 'test'); - }); - - describe('method expansion', () => { - it('adds the specified methods to the interface', () => { - expect(Object.keys(container)).toEqual(['blah', 'bleh']); - }); - - it('had function calls for the attached methods', () => { - expect(isFunction(container.blah)).toEqual(true); - expect(isFunction(container.bleh)).toEqual(true); - }); - }); - - describe('calling', () => { - it('wraps errors with the call signature', () => { - return container - .blah() - .catch((error) => { - expect(error.message).toMatch(/test_blah \(foo: Address\): Address/); - }); - }); - - it('checks for mismatched parameters', () => { - return container - .bleh(1) - .catch((error) => { - expect(error.message).toMatch(/0 params expected, found 1 instead/); - }); - }); + it('sets up the chain interface', () => { + expect(api.chain).toBeDefined(); + }); - it('calls the provider with the correct parameters', () => { - return container - .blah('0x123') - .then(() => { - expect(provider.send).toHaveBeenCalledWith('test_blah', [ - '0x0123' - ]); - }); - }); - }); + it('sets up the state interface', () => { + expect(api.state).toBeDefined(); }); }); diff --git a/packages/api/src/create/interface.js b/packages/api/src/create/interface.js new file mode 100644 index 000000000000..29f06d627e0c --- /dev/null +++ b/packages/api/src/create/interface.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. +// @flow + +import type { InterfaceDefinition } from '@polkadot/api-jsonrpc/types'; +import type { ProviderInterface } from '@polkadot/api-provider/types'; +import type { ApiInterface$Section } from '../types'; + +const { formatInputs, formatOutput } = require('@polkadot/api-format'); +const assert = require('@polkadot/util/assert'); +const ExtError = require('@polkadot/util/ext/error'); +const jsonrpcSignature = require('@polkadot/util/jsonrpc/signature'); + +module.exports = function createInterface (provider: ProviderInterface, definition: InterfaceDefinition, section: string): ApiInterface$Section { + return Object + .keys(definition.methods) + .reduce((container, method: string) => { + const { inputs, output } = definition.methods[method]; + const rpcName = `${section}_${method}`; + + container[method] = async (..._params: Array): Promise => { + try { + assert(inputs.length === _params.length, `${inputs.length} params expected, found ${_params.length} instead`); + + const params = formatInputs(inputs, _params); + const result = await provider.send(rpcName, params); + + return formatOutput(output, result); + } catch (error) { + throw new ExtError(`${jsonrpcSignature(rpcName, inputs, output)}:: ${error.message}`, (error: ExtError).code); + } + }; + + return container; + }, ({}: $Shape)); +}; diff --git a/packages/api/src/create/interface.spec.js b/packages/api/src/create/interface.spec.js new file mode 100644 index 000000000000..faaabd336be0 --- /dev/null +++ b/packages/api/src/create/interface.spec.js @@ -0,0 +1,74 @@ +// 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 isFunction = require('@polkadot/util/is/function'); + +const createInterface = require('./interface'); + +describe('createInterface', () => { + let container; + let provider; + + beforeEach(() => { + const definition = { + methods: { + blah: { + inputs: [ + { name: 'foo', type: 'Address' } + ], + output: { type: 'Address' } + }, + bleh: { + inputs: [], + output: { type: 'Address' } + } + } + }; + provider = { + send: jest.fn((method, params) => { + return Promise.resolve(params[0]); + }) + }; + container = createInterface(provider, definition, 'test'); + }); + + describe('method expansion', () => { + it('adds the specified methods to the interface', () => { + expect(Object.keys(container)).toEqual(['blah', 'bleh']); + }); + + it('had function calls for the attached methods', () => { + expect(isFunction(container.blah)).toEqual(true); + expect(isFunction(container.bleh)).toEqual(true); + }); + }); + + describe('calling', () => { + it('wraps errors with the call signature', () => { + return container + .blah() + .catch((error) => { + expect(error.message).toMatch(/test_blah \(foo: Address\): Address/); + }); + }); + + it('checks for mismatched parameters', () => { + return container + .bleh(1) + .catch((error) => { + expect(error.message).toMatch(/0 params expected, found 1 instead/); + }); + }); + + it('calls the provider with the correct parameters', () => { + return container + .blah('0x123') + .then(() => { + expect(provider.send).toHaveBeenCalledWith('test_blah', [ + '0x0123' + ]); + }); + }); + }); +}); diff --git a/yarn.lock b/yarn.lock index d7ae390c83e6..cd1b9942dacc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -63,9 +63,9 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@polkadot/dev@^0.14.6": - version "0.14.6" - resolved "https://registry.yarnpkg.com/@polkadot/dev/-/dev-0.14.6.tgz#4677e48d6a0ce692acdaea75a36ee93968a60e48" +"@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" @@ -89,40 +89,40 @@ eslint-plugin-promise "^3.6.0" eslint-plugin-react "^7.4.0" eslint-plugin-standard "^3.0.1" - flow-bin "^0.62.0" + 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" -"@polkadot/primitives-json@^0.4.6": - version "0.4.6" - resolved "https://registry.yarnpkg.com/@polkadot/primitives-json/-/primitives-json-0.4.6.tgz#c1b45cb1983b02a1773769af89522b447b87e03d" +"@polkadot/primitives-json@^0.4.10": + version "0.4.10" + resolved "https://registry.yarnpkg.com/@polkadot/primitives-json/-/primitives-json-0.4.10.tgz#93ecf3d1ccd178bcbb11d8721fd323bf3d161df3" dependencies: - "@polkadot/primitives" "^0.4.6" - "@polkadot/util" "^0.11.1" + "@polkadot/primitives" "^0.4.10" + "@polkadot/util" "^0.13.1" babel-runtime "^6.26.0" -"@polkadot/primitives@^0.4.6": - version "0.4.6" - resolved "https://registry.yarnpkg.com/@polkadot/primitives/-/primitives-0.4.6.tgz#c3c74ec099780cac5a4ecf709b1a74c2974c3afc" +"@polkadot/primitives@^0.4.10": + version "0.4.10" + resolved "https://registry.yarnpkg.com/@polkadot/primitives/-/primitives-0.4.10.tgz#5ec557cf0ecdb608697d31e3ac17224bedd90572" dependencies: - "@polkadot/util" "^0.11.1" + "@polkadot/util" "^0.13.1" babel-runtime "^6.26.0" -"@polkadot/util@^0.11.1": - version "0.11.1" - resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-0.11.1.tgz#16183ee293a1188da691dee822a19b8ecdcc54d8" +"@polkadot/util@^0.13.1": + version "0.13.1" + resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-0.13.1.tgz#17373a04e8310f2a06ffcf3e4cc7b47eb7693be8" dependencies: babel-runtime "^6.26.0" bn.js "^4.11.8" + deasync "^0.1.12" ip-regex "^2.1.0" - keccak "^1.3.0" "@types/node@*": version "8.5.2" @@ -962,11 +962,9 @@ bindings@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" -bl@^1.0.0: +bindings@~1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" - dependencies: - readable-stream "^2.0.5" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" block-stream@*: version "0.0.9" @@ -1163,10 +1161,6 @@ chokidar@^1.6.1, chokidar@^1.7.0: optionalDependencies: fsevents "^1.0.0" -chownr@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" - ci-info@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4" @@ -1540,6 +1534,13 @@ dateformat@^1.0.11, dateformat@^1.0.12: 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" + dependencies: + bindings "~1.2.1" + nan "^2.0.7" + debug@^2.2.0, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -1735,12 +1736,6 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" - dependencies: - once "^1.4.0" - entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -2004,10 +1999,6 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -expand-template@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.0.tgz#e09efba977bf98f9ee0ed25abd0c692e02aec3fc" - expect@^22.0.3: version "22.0.3" resolved "https://registry.yarnpkg.com/expect/-/expect-22.0.3.tgz#bb486de7d41bf3eb60d3b16dfd1c158a4d91ddfa" @@ -2127,9 +2118,9 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" -flow-bin@^0.62.0: - version "0.62.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.62.0.tgz#14bca669a6e3f95c0bc0c2d1eb55ec4e98cb1d83" +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" @@ -2310,10 +2301,6 @@ gitconfiglocal@^1.0.0: 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" - glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -2393,7 +2380,7 @@ 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: @@ -3305,16 +3292,6 @@ jsx-ast-utils@^2.0.0: dependencies: array-includes "^3.0.3" -keccak@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.3.0.tgz#3681bd99ad3d0354ddb29b9040c1b6560cce08ac" - dependencies: - bindings "^1.2.1" - inherits "^2.0.3" - nan "^2.2.1" - prebuild-install "^2.0.0" - safe-buffer "^5.1.0" - kefir@^3.7.3: version "3.8.0" resolved "https://registry.yarnpkg.com/kefir/-/kefir-3.8.0.tgz#63b5dce575f1a7ab3286788e771eb104b181b676" @@ -3699,7 +3676,7 @@ mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -nan@^2.0.5, nan@^2.2.1, nan@^2.3.0, nan@^2.3.3: +nan@^2.0.5, nan@^2.0.7, nan@^2.3.0, nan@^2.3.3: version "2.8.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" @@ -3721,12 +3698,6 @@ nock@^9.1.0: qs "^6.5.1" semver "^5.3.0" -node-abi@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.1.2.tgz#4da6caceb6685fcd31e7dd1994ef6bb7d0a9c0b2" - dependencies: - semver "^5.4.1" - node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -3763,10 +3734,6 @@ node-pre-gyp@^0.6.39: tar "^2.2.1" tar-pack "^3.4.0" -noop-logger@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" - nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -3803,7 +3770,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: +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: @@ -3850,7 +3817,7 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: +once@^1.3.0, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -3880,7 +3847,7 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" -os-homedir@^1.0.0, os-homedir@^1.0.1: +os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -4103,12 +4070,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" @@ -4145,24 +4112,13 @@ 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" -prebuild-install@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.3.0.tgz#19481247df728b854ab57b187ce234211311b485" +postcss@^6.0.16: + version "6.0.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.16.tgz#112e2fe2a6d2109be0957687243170ea5589e146" dependencies: - expand-template "^1.0.2" - github-from-package "0.0.0" - minimist "^1.2.0" - mkdirp "^0.5.1" - node-abi "^2.1.1" - noop-logger "^0.1.1" - npmlog "^4.0.1" - os-homedir "^1.0.1" - pump "^1.0.1" - rc "^1.1.6" - simple-get "^1.4.2" - tar-fs "^1.13.0" - tunnel-agent "^0.6.0" - xtend "4.0.1" + chalk "^2.3.0" + source-map "^0.6.1" + supports-color "^5.1.0" prelude-ls@~1.1.2: version "1.1.2" @@ -4217,13 +4173,6 @@ pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" -pump@^1.0.0, pump@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -4296,7 +4245,7 @@ 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.1.5, readable-stream@^2.2.2: +readable-stream@^2.0.1, readable-stream@^2.0.2, 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: @@ -4596,7 +4545,7 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -4656,14 +4605,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -simple-get@^1.4.2: - version "1.4.3" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-1.4.3.tgz#e9755eda407e96da40c5e5158c9ea37b33becbeb" - dependencies: - once "^1.3.1" - unzip-response "^1.0.0" - xtend "^4.0.0" - slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -4944,6 +4885,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" @@ -4971,15 +4918,6 @@ table@^4.0.1: slice-ansi "1.0.0" string-width "^2.1.1" -tar-fs@^1.13.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.0.tgz#e877a25acbcc51d8c790da1c57c9cf439817b896" - dependencies: - chownr "^1.0.1" - mkdirp "^0.5.1" - pump "^1.0.0" - tar-stream "^1.1.2" - tar-pack@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" @@ -4993,15 +4931,6 @@ tar-pack@^3.4.0: tar "^2.2.1" uid-number "^0.0.6" -tar-stream@^1.1.2: - version "1.5.5" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.5.5.tgz#5cad84779f45c83b1f2508d96b09d88c7218af55" - dependencies: - bl "^1.0.0" - end-of-stream "^1.0.0" - readable-stream "^2.0.0" - xtend "^4.0.0" - tar@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" @@ -5245,10 +5174,6 @@ universalify@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7" -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" @@ -5470,7 +5395,7 @@ 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.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"