Browse Source

Add new webpack for internals (fork) scripts

master
Loëck Vézien 7 years ago
parent
commit
33346a6956
No known key found for this signature in database GPG Key ID: CBCDCE384E853AC4
  1. 12
      .eslintrc
  2. 1
      flow-defs/globals.js
  3. 33
      package.json
  4. 4
      scripts/dist.sh
  5. 26
      scripts/postbuild.js
  6. 4
      scripts/postinstall.sh
  7. 5
      scripts/start.sh
  8. 2
      src/components/Wrapper.js
  9. 2
      src/components/base/Box.js
  10. 2
      src/globals.js
  11. 28
      src/internals/usb/devices.js
  12. 26
      src/internals/usb/index.js
  13. 27
      src/internals/usb/wallet.js
  14. 7
      src/main/bridge.js
  15. 74
      src/main/usb.js
  16. 8
      webpack/define.js
  17. 41
      webpack/internals.config.js
  18. 11
      webpack/renderer.config.js
  19. 115
      yarn.lock

12
.eslintrc

@ -6,19 +6,21 @@
"__ENV__": false,
"__DEV__": false,
"__PROD__": false,
"__static": false,
},
"rules": {
"camelcase": 0,
"no-shadow": 0,
"no-void": 0,
"jsx-a11y/anchor-is-valid": 0,
"new-cap": 0,
"no-return-assign": 0,
"no-nested-ternary": 0,
"no-param-reassign": 0,
"no-return-assign": 0,
"no-shadow": 0,
"no-underscore-dangle": 0,
"react/jsx-filename-extension": 0,
"no-void": 0,
"react/jsx-curly-brace-presence": 0,
"react/jsx-filename-extension": 0,
"react/prefer-stateless-function": 0,
"jsx-a11y/anchor-is-valid": 0,
},
"settings": {
"import/resolver": {

1
flow-defs/globals.js

@ -1,3 +1,4 @@
declare var __DEV__: boolean
declare var __PROD__: boolean
declare var __ENV__: string
declare var __static: string

33
package.json

@ -11,32 +11,27 @@
}
},
"scripts": {
"start": "NODE_ENV=development electron-webpack dev",
"start": "bash ./scripts/start.sh",
"compile": "electron-webpack",
"dist": "yarn compile && node scripts/postbuild && electron-builder",
"dist": "bash ./scripts/dist.sh && electron-builder",
"dist:dir": "yarn dist --dir -c.compression=store -c.mac.identity=null",
"prettier": "prettier --write \"src/**/*.js\"",
"postinstall": "electron-rebuild && flow-typed install -s",
"prettier": "prettier --write \"{src,webpack}/**/*.js\"",
"postinstall": "bash ./scripts/postinstall.sh",
"flow": "flow",
"lint": "eslint src"
"lint": "eslint src webpack"
},
"electronWebpack": {
"renderer": {
"webpackConfig": "webpack.renderer.js"
"webpackConfig": "./webpack/renderer.config.js"
}
},
"resolutions": {
"webpack-sources": "1.0.1"
},
"dependencies": {
"@ledgerhq/hw-app-btc": "^1.0.4",
"@ledgerhq/hw-app-eth": "^1.0.4",
"@ledgerhq/hw-transport": "^1.0.4",
"@ledgerhq/hw-transport-node-hid": "^1.0.7",
"babel-loader": "^7.1.2",
"@ledgerhq/hw-app-btc": "^1.0.8",
"@ledgerhq/hw-app-eth": "^1.0.8",
"@ledgerhq/hw-transport": "^1.0.8",
"@ledgerhq/hw-transport-node-hid": "^1.0.8",
"color": "^2.0.1",
"electron-devtools-installer": "^2.2.3",
"file-loader": "^1.1.6",
"history": "^4.7.2",
"i18next": "^10.2.2",
"i18next-node-fs-backend": "^1.0.0",
@ -58,14 +53,16 @@
},
"devDependencies": {
"babel-eslint": "^8.2.1",
"babel-loader": "^7.1.2",
"babel-plugin-module-resolver": "^3.0.0",
"babel-preset-env": "^1.6.1",
"babel-preset-flow": "^6.23.0",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"concurrently": "^3.5.1",
"electron": "1.7.10",
"electron-builder": "^19.49.0",
"electron-rebuild": "^1.6.1",
"electron-rebuild": "^1.7.3",
"electron-webpack": "1.11.0",
"eslint": "^4.13.1",
"eslint-config-airbnb": "^16.1.0",
@ -77,7 +74,9 @@
"eslint-plugin-react": "^7.5.1",
"flow-bin": "^0.63.1",
"flow-typed": "^2.2.3",
"node-loader": "^0.6.0",
"prettier": "^1.10.2",
"react-hot-loader": "^4.0.0-beta.12"
"react-hot-loader": "^4.0.0-beta.12",
"webpack-node-externals": "^1.6.0"
}
}

4
scripts/dist.sh

@ -0,0 +1,4 @@
#/bin/bash
NODE_ENV=production webpack --config webpack/internals.config.js &&
yarn compile

26
scripts/postbuild.js

@ -1,26 +0,0 @@
const path = require('path')
const fs = require('fs')
function folderExists(p) {
try {
fs.accessSync(p, fs.constants.R_OK | fs.constants.W_OK) // eslint-disable-line no-bitwise
return true
} catch (err) {
return false
}
}
try {
const DEST_FOLDER = path.resolve(__dirname, '../static')
const USB_FILE = path.resolve(__dirname, '../dist/main/usb.js')
const DEST_USB_FILE = path.join(DEST_FOLDER, 'usb.js')
if (!folderExists(DEST_FOLDER)) {
fs.mkdirSync(DEST_FOLDER)
}
const stream = fs.createReadStream(USB_FILE).pipe(fs.createWriteStream(DEST_USB_FILE))
stream.on('error', err => {
throw err
})
} catch (err) {
console.log(`x Something went wrong`, err)
}

4
scripts/postinstall.sh

@ -0,0 +1,4 @@
#/bin/bash
electron-rebuild &&
flow-typed install -s --overwrite

5
scripts/start.sh

@ -0,0 +1,5 @@
#/bin/bash
concurrently --raw \
"NODE_ENV=development webpack --watch --config webpack/internals.config.js" \
"NODE_ENV=development electron-webpack dev"

2
src/components/Wrapper.js

@ -16,7 +16,7 @@ import TopBar from 'components/TopBar'
const Wrapper = () => (
<Box grow horizontal>
<SideBar />
<Box grow bg="cream">
<Box shrink grow bg="cream">
<TopBar />
<Route path="/" component={DashboardPage} />
<Route path="/settings" component={SettingsPage} />

2
src/components/base/Box.js

@ -28,7 +28,7 @@ const Box = styled.div`
${borderWidth};
display: flex;
flex-shrink: ${p => (p.noShrink === true ? '0' : '')};
flex-shrink: ${p => (p.noShrink === true ? '0' : p.shrink === true ? '1' : '')};
flex-grow: ${p => (p.grow === true ? '1' : p.grow || '')};
flex-direction: ${p => (p.horizontal ? 'row' : 'column')};

2
src/globals.js

@ -4,4 +4,4 @@ const { NODE_ENV } = process.env
global.__ENV__ = NODE_ENV
global.__DEV__ = global.__ENV__ === 'development'
global.__PROD__ = global.__ENV__ === 'production'
global.__PROD__ = !global.__DEV__

28
src/internals/usb/devices.js

@ -0,0 +1,28 @@
// @flow
import listenDevices from '@ledgerhq/hw-transport-node-hid/lib/listenDevices'
import getDevices from '@ledgerhq/hw-transport-node-hid/lib/getDevices'
const isLedgerDevice = device =>
(device.vendorId === 0x2581 && device.productId === 0x3b7c) || device.vendorId === 0x2c97
let isListenDevices = false
export default (send: Function) => ({
listen: () => {
if (isListenDevices) {
return
}
isListenDevices = true
const handleChangeDevice = eventName => device =>
isLedgerDevice(device) && send(eventName, device, { kill: false })
listenDevices.start()
listenDevices.events.on('add', handleChangeDevice('device.add'))
listenDevices.events.on('remove', handleChangeDevice('device.remove'))
},
all: () => send('devices.update', getDevices().filter(isLedgerDevice)),
})

26
src/internals/usb/index.js

@ -0,0 +1,26 @@
// @flow
import objectPath from 'object-path'
import devices from './devices'
import wallet from './wallet'
process.title = 'ledger-wallet-desktop-usb'
function send(type: string, data: any, options: Object = { kill: true }) {
process.send({ type, data, options })
}
const handlers = {
devices: devices(send),
wallet: wallet(send),
}
process.on('message', payload => {
const { type, data } = payload
const handler = objectPath.get(handlers, type)
if (!handler) {
return
}
handler(data)
})

27
src/internals/usb/wallet.js

@ -0,0 +1,27 @@
// @flow
import CommNodeHid from '@ledgerhq/hw-transport-node-hid'
import Btc from '@ledgerhq/hw-app-btc'
async function getWalletInfos(path, wallet) {
if (wallet === 'btc') {
const comm = new CommNodeHid(path, true, 0, false)
const btc = new Btc(comm)
const walletInfos = await btc.getWalletPublicKey(`44'/0'/0'/0`)
return walletInfos
}
throw new Error('invalid wallet')
}
export default (send: Function) => ({
infos: {
request: async ({ path, wallet }: { path: string, wallet: string }) => {
try {
const publicKey = await getWalletInfos(path, wallet)
send('wallet.infos.success', { path, publicKey })
} catch (err) {
send('wallet.infos.fail', { path, err: err.stack || err })
}
},
},
})

7
src/main/bridge.js

@ -4,15 +4,10 @@ import { fork } from 'child_process'
import { ipcMain } from 'electron' // eslint-disable-line import/no-extraneous-dependencies
import { resolve } from 'path'
// $FlowFixMe
import usbBridge from 'file-loader?name=usb.js!babel-loader!./usb' // eslint-disable-line import/no-webpack-loader-syntax
ipcMain.on('msg', (event: any, payload) => {
const { type, data } = payload
const compute = fork(usbBridge, {
cwd: resolve(__dirname, __DEV__ ? '../../dist/main' : '../static'),
})
const compute = fork(resolve(__static, './usb'))
compute.send({ type, data })
compute.on('message', payload => {

74
src/main/usb.js

@ -1,74 +0,0 @@
// @flow
import objectPath from 'object-path'
import CommNodeHid from '@ledgerhq/hw-transport-node-hid'
import listenDevices from '@ledgerhq/hw-transport-node-hid/lib/listenDevices'
import getDevices from '@ledgerhq/hw-transport-node-hid/lib/getDevices'
import Btc from '@ledgerhq/hw-app-btc'
process.title = 'ledger-wallet-desktop-usb'
const isLedgerDevice = device =>
(device.vendorId === 0x2581 && device.productId === 0x3b7c) || device.vendorId === 0x2c97
function send(type: string, data: any, options: Object = { kill: true }) {
process.send({ type, data, options })
}
async function getWalletInfos(path, wallet) {
if (wallet === 'btc') {
const comm = new CommNodeHid(path, true, 0, false)
const btc = new Btc(comm)
const walletInfos = await btc.getWalletPublicKey(`44'/0'/0'/0`)
return walletInfos
}
throw new Error('invalid wallet')
}
let isListenDevices = false
const handlers = {
devices: {
listen: () => {
if (isListenDevices) {
return
}
isListenDevices = true
const handleChangeDevice = eventName => device =>
isLedgerDevice(device) && send(eventName, device, { kill: false })
listenDevices.start()
listenDevices.events.on('add', handleChangeDevice('device.add'))
listenDevices.events.on('remove', handleChangeDevice('device.remove'))
},
all: () => send('devices.update', getDevices().filter(isLedgerDevice)),
},
wallet: {
infos: {
request: async ({ path, wallet }) => {
try {
const publicKey = await getWalletInfos(path, wallet)
send('wallet.infos.success', { path, publicKey })
} catch (err) {
send('wallet.infos.fail', { path, err: err.stack || err })
}
},
},
},
}
process.on('message', payload => {
const { type, data } = payload
const handler = objectPath.get(handlers, type)
if (!handler) {
return
}
handler(data)
})

8
webpack/define.js

@ -0,0 +1,8 @@
const webpack = require('webpack')
require('../src/globals')
module.exports = new webpack.DefinePlugin({
__DEV__,
__PROD__,
})

41
webpack/internals.config.js

@ -0,0 +1,41 @@
const path = require('path')
const fs = require('fs')
const nodeExternals = require('webpack-node-externals') // eslint-disable-line import/no-extraneous-dependencies
const define = require('./define')
const dirs = p =>
fs
.readdirSync(p)
.filter(f => fs.statSync(path.join(p, f)).isDirectory())
.map(d => path.resolve(__dirname, `${p}/${d}`))
.reduce((result, value) => {
const [key] = value.split('/').slice(-1)
result[key] = value
return result
}, {})
module.exports = {
target: 'node',
entry: dirs(path.resolve(__dirname, '../src/internals')),
externals: [nodeExternals()],
output: {
path: path.resolve(__dirname, '../static'),
filename: '[name].js',
},
module: {
rules: [
{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/,
},
],
},
plugins: [define],
}

11
webpack.renderer.js → webpack/renderer.config.js

@ -1,14 +1,7 @@
const webpack = require('webpack')
require('./src/globals')
const define = require('./define')
const config = {
plugins: [
new webpack.DefinePlugin({
__DEV__,
__PROD__,
}),
],
plugins: [define],
devServer: {
historyApiFallback: true,
},

115
yarn.lock

@ -78,28 +78,28 @@
lodash "^4.2.0"
to-fast-properties "^2.0.0"
"@ledgerhq/hw-app-btc@^1.0.4":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-1.0.5.tgz#01689c1bf5baaf744a49183a2a54adee2ae10e1a"
"@ledgerhq/hw-app-btc@^1.0.8":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-1.0.8.tgz#c7c1a4d97e1a206e177921edc3588a97b8971640"
dependencies:
"@ledgerhq/hw-transport" "^1.0.5"
"@ledgerhq/hw-transport" "^1.0.8"
"@ledgerhq/hw-app-eth@^1.0.4":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-1.0.5.tgz#39524d2a0e12e3b772d19c4582fffd43a93ae563"
"@ledgerhq/hw-app-eth@^1.0.8":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-1.0.8.tgz#a767fdc68a9b3bc049a6e9145137e79287c8da0e"
dependencies:
"@ledgerhq/hw-transport" "^1.0.5"
"@ledgerhq/hw-transport" "^1.0.8"
"@ledgerhq/hw-transport-node-hid@^1.0.7":
version "1.0.7"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-1.0.7.tgz#93aa2d0ce868eb469c9a0f095c46f5b2a27bdce4"
"@ledgerhq/hw-transport-node-hid@^1.0.8":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-1.0.8.tgz#70d8a93cdb30329cc5715aff7f1f4ecae6ee446a"
dependencies:
"@ledgerhq/hw-transport" "^1.0.5"
"@ledgerhq/hw-transport" "^1.0.8"
node-hid "^0.7.2"
"@ledgerhq/hw-transport@^1.0.4", "@ledgerhq/hw-transport@^1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-1.0.5.tgz#8bc40175eed66f0be6971340126e98d374fa01f4"
"@ledgerhq/hw-transport@^1.0.8":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-1.0.8.tgz#abb6b66346b44c4a1aea3b81e4661f50785bd367"
dependencies:
invariant "^2.2.0"
@ -192,6 +192,10 @@ ansi-html@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e"
ansi-regex@^0.2.0, ansi-regex@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9"
ansi-regex@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@ -200,6 +204,10 @@ ansi-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
ansi-styles@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de"
ansi-styles@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
@ -1742,6 +1750,16 @@ chainsaw@~0.1.0:
dependencies:
traverse ">=0.3.0 <0.4"
chalk@0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174"
dependencies:
ansi-styles "^1.1.0"
escape-string-regexp "^1.0.0"
has-ansi "^0.1.0"
strip-ansi "^0.3.0"
supports-color "^0.2.0"
chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@ -1976,6 +1994,10 @@ commander@2.12.x, commander@~2.12.1:
version "2.12.2"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"
commander@2.6.0:
version "2.6.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d"
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@ -2018,6 +2040,19 @@ concat-stream@1.6.0, concat-stream@^1.6.0:
readable-stream "^2.2.2"
typedarray "^0.0.6"
concurrently@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.5.1.tgz#ee8b60018bbe86b02df13e5249453c6ececd2521"
dependencies:
chalk "0.5.1"
commander "2.6.0"
date-fns "^1.23.0"
lodash "^4.5.1"
rx "2.3.24"
spawn-command "^0.0.2-1"
supports-color "^3.2.3"
tree-kill "^1.1.0"
configstore@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90"
@ -2307,6 +2342,10 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
date-fns@^1.23.0:
version "1.29.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6"
date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
@ -2668,9 +2707,9 @@ electron-publish@19.52.0:
fs-extra-p "^4.5.0"
mime "^2.1.0"
electron-rebuild@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/electron-rebuild/-/electron-rebuild-1.6.1.tgz#3c7ab64db31e5e78ef76fedd7a53aec087b723c5"
electron-rebuild@^1.7.3:
version "1.7.3"
resolved "https://registry.yarnpkg.com/electron-rebuild/-/electron-rebuild-1.7.3.tgz#24ae06ad9dd61cb7e4d688961f49118c40a110eb"
dependencies:
colors "^1.1.2"
debug "^2.6.3"
@ -2899,7 +2938,7 @@ escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
@ -3326,7 +3365,7 @@ file-entry-cache@^2.0.0:
flat-cache "^1.2.1"
object-assign "^4.0.1"
file-loader@^1.1.5, file-loader@^1.1.6:
file-loader@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.6.tgz#7b9a8f2c58f00a77fddf49e940f7ac978a3ea0e8"
dependencies:
@ -3761,6 +3800,12 @@ har-validator@~5.0.3:
ajv "^5.1.0"
har-schema "^2.0.0"
has-ansi@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e"
dependencies:
ansi-regex "^0.2.0"
has-ansi@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
@ -4725,7 +4770,7 @@ lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0:
lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1:
version "4.17.4"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
@ -6558,6 +6603,10 @@ 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"
rx@2.3.24:
version "2.3.24"
resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7"
rxjs@^5.1.1:
version "5.5.6"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02"
@ -6863,6 +6912,10 @@ sourcemapped-stacktrace@^1.1.6:
dependencies:
source-map "0.5.6"
spawn-command@^0.0.2-1:
version "0.0.2-1"
resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
spawn-rx@^2.0.10:
version "2.0.12"
resolved "https://registry.yarnpkg.com/spawn-rx/-/spawn-rx-2.0.12.tgz#b6285294499426089beea0c3c1ec32d7fc57a376"
@ -7009,6 +7062,12 @@ stringstream@~0.0.4, stringstream@~0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
strip-ansi@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220"
dependencies:
ansi-regex "^0.2.1"
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
@ -7088,6 +7147,10 @@ sumchecker@^2.0.2:
dependencies:
debug "^2.2.0"
supports-color@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a"
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
@ -7289,6 +7352,10 @@ tough-cookie@~2.3.0, tough-cookie@~2.3.3:
version "0.3.9"
resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9"
tree-kill@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36"
trim-newlines@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
@ -7641,7 +7708,11 @@ webpack-merge@^4.1.0:
dependencies:
lodash "^4.17.4"
webpack-sources@1.0.1, webpack-sources@^1.0.1:
webpack-node-externals@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz#232c62ec6092b100635a3d29d83c1747128df9bd"
webpack-sources@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf"
dependencies:

Loading…
Cancel
Save