From 48d243a548962d5389840178da1901fd5a4f27ec Mon Sep 17 00:00:00 2001 From: Oscar Lafarga Date: Fri, 19 Jul 2019 14:45:09 -0700 Subject: [PATCH 1/4] Add paymentS UX, in progress --- .DS_Store | Bin 8196 -> 8196 bytes api/types/index.js | 2 +- web/components/BlockList.jsx | 17 +++++++++++--- web/components/SetBlock.jsx | 6 ++++- web/components/TeamList.js | 3 ++- web/pages/SchedulePage.js | 11 +++++++-- web/pages/TeamPage.js | 3 ++- web/routes.js | 42 ++++++++++++++++++++++++++++------- 8 files changed, 67 insertions(+), 17 deletions(-) diff --git a/.DS_Store b/.DS_Store index da036931cc0904df96be00d1c09e60f88dd8d7e1..b45ecf0061664a2bfd53559b483d6e6e1f29b5c4 100644 GIT binary patch delta 60 zcmZp1XmOa}&nUMsU^hRb+-4qulgyHA3}DQ;lgyhx3X8E!Y>?T^F7b_Jv!v)dril%b02yQr&j0`b diff --git a/api/types/index.js b/api/types/index.js index 739c4bd..02b50ef 100644 --- a/api/types/index.js +++ b/api/types/index.js @@ -6,4 +6,4 @@ var types = module.exports = (function() { UserType: require('./UserType'), graphql: require('./graphql') }; -})(); +})(); \ No newline at end of file diff --git a/web/components/BlockList.jsx b/web/components/BlockList.jsx index ec84a75..67617ba 100644 --- a/web/components/BlockList.jsx +++ b/web/components/BlockList.jsx @@ -42,10 +42,15 @@ class BlockList extends React.Component { render() { const { - editModeEnabled, currentWeeklySetblocks, unsavedSetBlocks, selectedDay + currentWeeklySetblocks, + editModeEnabled, + goToPaymentPage, + unsavedSetBlocks, + selectedDay } = this.props; + const selectedDayFormatted = moment(selectedDay).format('YYYY-MM-DD') - let setBlocksByDate = _.groupBy(currentWeeklySetblocks, 'date'); + let setBlocksByDate = _.groupBy(currentWeeklySetblocks, 'date'); let setBlocks = setBlocksByDate[selectedDayFormatted]; if (editModeEnabled && unsavedSetBlocks ) { @@ -63,7 +68,13 @@ class BlockList extends React.Component { } else if (!editModeEnabled && setBlocks) { setBlocks = _.orderBy(setBlocks, 'blockTime') // To properly render in order return setBlocks.map((setBlock, index) => { - return + return ( + + ) }) } else { return ( diff --git a/web/components/SetBlock.jsx b/web/components/SetBlock.jsx index 47a56d8..7e03496 100644 --- a/web/components/SetBlock.jsx +++ b/web/components/SetBlock.jsx @@ -272,6 +272,10 @@ class SetBlock extends React.Component { ) } + handleFund = () => { + console.log(this.props) + this.props.goToPaymentPage() + } render() { const { editMode } = this.props; @@ -320,7 +324,7 @@ class SetBlock extends React.Component { ) return ( - + - {teamMembers.map(teamMember => { + {teamMembers.map((teamMember, index) => { return ( { goToPage(teamMember) }} goToEdit={() => { goToEdit(teamMember) }} diff --git a/web/pages/SchedulePage.js b/web/pages/SchedulePage.js index a010d1c..064c2f7 100644 --- a/web/pages/SchedulePage.js +++ b/web/pages/SchedulePage.js @@ -109,6 +109,10 @@ class SchedulePage extends React.Component { return defaultSetBlocks } + goToPaymentPage = () => { + this.props.history.push('/pay') + } + renderMainContent() { const { match, currentTeamMember, editModeEnabled, enableSubmit } = this.props @@ -123,10 +127,13 @@ class SchedulePage extends React.Component { mb='0px' style={{ borderBottom: `1px solid ${theme.colors.accent}` }} > - {match.params.teamMemberId ? currentTeamMember.name + '\'s' : 'Your'} + {match.params.teamMemberId + ? currentTeamMember.name + '\'s' + : 'Your' + } {' Schedule'} - + {editModeEnabled && ()} ) diff --git a/web/pages/TeamPage.js b/web/pages/TeamPage.js index b66915e..b4524a2 100644 --- a/web/pages/TeamPage.js +++ b/web/pages/TeamPage.js @@ -37,6 +37,7 @@ class TeamPage extends React.Component { className='TeamPage' bg='primary' width='100%' + style={{ overflowY: 'scroll' }} >
@@ -47,7 +48,7 @@ class TeamPage extends React.Component { - diff --git a/web/routes.js b/web/routes.js index 300490c..eaa4c8b 100644 --- a/web/routes.js +++ b/web/routes.js @@ -24,14 +24,40 @@ export default ( - {/* */} - - - - - - - + + + + + + + + + + ); \ No newline at end of file From 0ef194cf390fbcb07d86ef88739360fc51ef0f0f Mon Sep 17 00:00:00 2001 From: Oscar Lafarga Date: Fri, 19 Jul 2019 17:54:45 -0700 Subject: [PATCH 2/4] Add funding logic and StreamPage More progress on core MVP UX made with a basic bitcoin address QR code to fund a setblock and a stream page with a google hangouts link after a setblock has been funded. Still needs heavy UI improvements --- api/modules/schedule.js | 1 + api/types/SetblockInputType.js | 3 ++ api/types/SetblockType.js | 4 ++ api/types/TeamMemberType.js | 1 + config/webpack.common.js | 13 +++++++ config/webpack.config.dev.js | 8 +--- config/webpack.config.prod.js | 8 +--- package.json | 1 + web/components/App.js | 2 +- web/components/BlockList.jsx | 2 + web/components/Button.js | 1 + web/components/SetBlock.jsx | 6 ++- web/components/SideBar.jsx | 6 ++- web/constants/index.js | 7 +++- web/pages/PaymentPage.js | 60 ++++++++++++++++++++++++++---- web/pages/SchedulePage.js | 16 ++++++-- web/pages/StreamPage.js | 67 ++++++++++++++++++++++++++++++++++ web/reducers/scheduling.js | 18 ++++----- web/reducers/team.js | 1 + web/routes.js | 8 +++- 20 files changed, 192 insertions(+), 41 deletions(-) create mode 100644 web/pages/StreamPage.js diff --git a/api/modules/schedule.js b/api/modules/schedule.js index 7a78ca0..449211d 100644 --- a/api/modules/schedule.js +++ b/api/modules/schedule.js @@ -49,6 +49,7 @@ var schedule = module.exports = (function () { let updatedFieldData = {} Object.keys(updatedFields).map(k => { if (k == 'blockFraction') updatedFieldData['Blocks'] = updatedFields[k] + if (k == 'funded') updatedFieldData['Funded'] = updatedFields[k] if (k == 'issueUrl') updatedFieldData['Issue'] = updatedFields[k] if (k == 'description') updatedFieldData['Description'] = updatedFields[k] }) diff --git a/api/types/SetblockInputType.js b/api/types/SetblockInputType.js index 0ed5255..2992849 100644 --- a/api/types/SetblockInputType.js +++ b/api/types/SetblockInputType.js @@ -8,6 +8,9 @@ var SetblockInputType = module.exports = new g.GraphQLInputObjectType({ blockFraction: { type: g.GraphQLFloat }, + funded: { + type: g.GraphQLString + }, issueUrl: { type: g.GraphQLString }, diff --git a/api/types/SetblockType.js b/api/types/SetblockType.js index e3f3e4b..9af2472 100644 --- a/api/types/SetblockType.js +++ b/api/types/SetblockType.js @@ -19,6 +19,10 @@ var SetblockType = module.exports = new g.GraphQLObjectType({ type: g.GraphQLFloat, description: 'Must be either 1.0 or 0.5' }, + funded: { + type: g.GraphQLString, + description: 'Whether or not this Setblock has a confirmed payment sent to the Team Member that scheduled it' + }, issueUrl: { type: g.GraphQLString, description: 'A reference to the GitHub isssue being worked on during this setblock' diff --git a/api/types/TeamMemberType.js b/api/types/TeamMemberType.js index 608501d..99f39c0 100644 --- a/api/types/TeamMemberType.js +++ b/api/types/TeamMemberType.js @@ -42,6 +42,7 @@ var TeamMemberType = module.exports = new g.GraphQLObjectType({ date: r.fields.Date, blockTime: r.fields.Blocktime, blockFraction: r.fields.Blocks, + funded: r.fields.Funded, issueUrl: r.fields.Issue, description: r.fields.Description }) diff --git a/config/webpack.common.js b/config/webpack.common.js index 6e8b4dc..07fc1a8 100644 --- a/config/webpack.common.js +++ b/config/webpack.common.js @@ -1,3 +1,5 @@ +require('dotenv').config() +const webpack = require('webpack') const HtmlWebpackPlugin = require('html-webpack-plugin') const CopyWebpackPlugin = require('copy-webpack-plugin') const ManifestPlugin = require('webpack-manifest-plugin') @@ -5,6 +7,9 @@ const SWPrecacheWebpackPlugin = require('sw-precache-webpack-plugin'); const paths = require('./paths') +console.log('process.env') +console.log(process.env.WEB_ROOT) + module.exports = { // where webpack resolves files relative to context: paths.appRoot, @@ -80,6 +85,14 @@ module.exports = { new ManifestPlugin({ fileName: 'asset-manifest.json', // Not to confuse with manifest.json }), + new webpack.DefinePlugin({ + 'process.env': { + NODE_ENV: JSON.stringify(process.env.NODE_ENV), + GITHUB_CLIENT_ID: JSON.stringify(process.env.GITHUB_CLIENT_ID), + BTC_ADDRESS: JSON.stringify(process.env.BTC_ADDRESS), + STREAM_LINK: JSON.stringify(process.env.STREAM_LINK) + } + }) // SW plugin configuration // The following option parameters and configuration are directly taken from react-create-app // as it's a production ready configuration that works pretty well for our needs. diff --git a/config/webpack.config.dev.js b/config/webpack.config.dev.js index 41d1c4c..ae86604 100644 --- a/config/webpack.config.dev.js +++ b/config/webpack.config.dev.js @@ -31,12 +31,6 @@ module.exports = merge(common, { pathinfo: true }, plugins: [ - new webpack.HotModuleReplacementPlugin(), - new webpack.DefinePlugin({ - 'process.env': { - NODE_ENV: JSON.stringify('development'), - GITHUB_CLIENT_ID: JSON.stringify('a4868a77fd455c344822') - } - }) + new webpack.HotModuleReplacementPlugin() ] }) \ No newline at end of file diff --git a/config/webpack.config.prod.js b/config/webpack.config.prod.js index e81a582..2abcb8b 100644 --- a/config/webpack.config.prod.js +++ b/config/webpack.config.prod.js @@ -76,13 +76,7 @@ module.exports = merge(common, { new CompressionPlugin({ test: /\.(js|css|html)$/, deleteOriginalAssets: false - }), - new webpack.DefinePlugin({ - 'process.env': { - NODE_ENV: JSON.stringify('production'), - GITHUB_CLIENT_ID: JSON.stringify('88ee5c32729990ca3a14') - } - }), + }) // Progressive web app in progress // new ManifestPlugin({ diff --git a/package.json b/package.json index b5bb120..d9fa9d7 100644 --- a/package.json +++ b/package.json @@ -82,6 +82,7 @@ "pluralize": "^3.1.0", "polished": "^2.0.3", "prop-types": "^15.6.2", + "qrcode.react": "^0.9.3", "react": "^16.4.2", "react-dom": "^16.4.2", "react-redux": "^4.4.5", diff --git a/web/components/App.js b/web/components/App.js index 789075f..a4c203c 100644 --- a/web/components/App.js +++ b/web/components/App.js @@ -19,7 +19,7 @@ class App extends React.Component { // Run initialization functions here this.props.checkAuthentication() .then(loggedIn => { - if (loggedIn) this.props.history.push('/team') + // if (loggedIn) this.props.history.push('/team') }) } diff --git a/web/components/BlockList.jsx b/web/components/BlockList.jsx index 67617ba..d11a674 100644 --- a/web/components/BlockList.jsx +++ b/web/components/BlockList.jsx @@ -45,6 +45,7 @@ class BlockList extends React.Component { currentWeeklySetblocks, editModeEnabled, goToPaymentPage, + goToStreamPage, unsavedSetBlocks, selectedDay } = this.props; @@ -72,6 +73,7 @@ class BlockList extends React.Component { ) diff --git a/web/components/Button.js b/web/components/Button.js index c3dc90a..2bdcdf5 100644 --- a/web/components/Button.js +++ b/web/components/Button.js @@ -11,6 +11,7 @@ const Button = styled(Card)` font-size: 15px; outline: 0; border: none; + cursor: pointer; ${is('transparent')` ${mixins.clickableBg}; diff --git a/web/components/SetBlock.jsx b/web/components/SetBlock.jsx index 7e03496..37f43f2 100644 --- a/web/components/SetBlock.jsx +++ b/web/components/SetBlock.jsx @@ -274,7 +274,11 @@ class SetBlock extends React.Component { handleFund = () => { console.log(this.props) - this.props.goToPaymentPage() + if (this.props.data.funded) { + this.props.goToStreamPage(this.props.data.id) + } else { + this.props.goToPaymentPage(this.props.data.id) + } } render() { diff --git a/web/components/SideBar.jsx b/web/components/SideBar.jsx index a3bd979..fd21a81 100644 --- a/web/components/SideBar.jsx +++ b/web/components/SideBar.jsx @@ -13,11 +13,13 @@ class SideBar extends React.Component { goToScheduleDay(day) { const { history, match } = this.props; + const dayIndex = day.getDay() == 0 ? 7 : day.getDay() + if (match.params.teamMemberId) { - history.push('/team/' + match.params.teamMemberId + '/' + day.getDay()); + history.push('/team/' + match.params.teamMemberId + '/' + dayIndex); } else { // If the match.params don't have a teamMemberId are u seeing your schedule - history.push('/schedule/' + day.getDay()); + history.push('/schedule/' + dayIndex); this.props.changeEditModeEnabled(true); } this.props.changeSelectedDay(day); diff --git a/web/constants/index.js b/web/constants/index.js index 58f7870..378bd48 100644 --- a/web/constants/index.js +++ b/web/constants/index.js @@ -8,6 +8,8 @@ export const GITHUB_CLIENT_ID = process.env.GITHUB_CLIENT_ID export const OAUTH_REDIRECT_URI = process.env.NODE_ENV == 'production' ? 'https://www.setblocks.com/api/v/1/github-oauth' : 'http://localhost:3000/api/v/1/github-oauth' export const STRIPE_PUBLIC_KEY = 'pk_test_CBiYbQTw17rarZ2chWMVolp6' +export const BTC_ADDRESS = process.env.BTC_ADDRESS +export const STREAM_LINK = process.env.STREAM_LINK export const NAVIGATION = { items: [ @@ -38,9 +40,11 @@ export const TEAM_NAME_ID_MAP = { 'Oscar Lafarga': 'recGVSamjigJbZoJ8', 'Quinn Pruitt': 'rec0akTPTocs76bQU', 'David Lafarga': 'recaUadUZZ7qomfLM', - 'Victoria Lafarga': 'reczBZOIamQbd1Anq' + 'Victoria Lafarga': 'reczBZOIamQbd1Anq', + 'Rebeca Rubio': 'recIjWZB2RuV7YslI' } + export const USER_PROPS = ` id, name, @@ -49,6 +53,7 @@ export const USER_PROPS = ` date, blockTime, blockFraction, + funded, description } ` \ No newline at end of file diff --git a/web/pages/PaymentPage.js b/web/pages/PaymentPage.js index be54b3a..ad2b90a 100644 --- a/web/pages/PaymentPage.js +++ b/web/pages/PaymentPage.js @@ -2,6 +2,7 @@ import React from 'react'; import { connect } from 'react-redux'; import { CardElement, injectStripe } from 'react-stripe-elements'; import moment from 'moment'; +import QRCode from 'qrcode.react'; import Button from 'components/Button'; import TeamList from 'components/TeamList'; @@ -10,9 +11,28 @@ import Flex from 'components/Flex'; import Text from 'components/Text'; import Loading from 'components/Loading'; +import { BTC_ADDRESS } from '../constants' + class PaymentPage extends React.Component { + state = { + paymentOption: 'btc' + } + + fetchSetblock = () => { + + } + + handlePaymentOptionChange = (paymentOption) => { + this.setState({ paymentOption }) + } + + handleBtcPayment = (event) => { + console.log('handleBtcPayment') + this.props.history.push('/stream/1') + // this.props.simulatePayment() + } - handlePayment = (event) => { + handleUsdPayment = (event) => { this.props.stripe.createToken().then(token => { console.log(token) @@ -20,6 +40,7 @@ class PaymentPage extends React.Component { } render() { + const { paymentOption } = this.state return ( - {'Payment'} + {'Pay with ' + paymentOption.toUpperCase()} - - - + {paymentOption == 'btc' && + <> + + + + + + } + + + {paymentOption == 'usd' && + <> + + + + + + } + + {/* */} + {/* */} - ); } diff --git a/web/pages/SchedulePage.js b/web/pages/SchedulePage.js index 064c2f7..9c07f5b 100644 --- a/web/pages/SchedulePage.js +++ b/web/pages/SchedulePage.js @@ -53,6 +53,7 @@ class SchedulePage extends React.Component { const endOfWeek = moment().endOf('isoWeek'); const days = []; + const selectedDayOfWeek = (this.props.match.params.dayOfWeek - 1) || 0 let day = startOfWeek; while (day <= endOfWeek) { @@ -63,7 +64,7 @@ class SchedulePage extends React.Component { this.setState({ daysOfWeek: days, }) - this.props.changeSelectedDay(days[0]) + this.props.changeSelectedDay(days[selectedDayOfWeek]) } componentDidUpdate (prevProps) { @@ -109,8 +110,12 @@ class SchedulePage extends React.Component { return defaultSetBlocks } - goToPaymentPage = () => { - this.props.history.push('/pay') + goToPaymentPage = (setblockId) => { + this.props.history.push('/pay/' + setblockId) + } + + goToStreamPage = (setblockId) => { + this.props.history.push('/stream/' + setblockId) } renderMainContent() { @@ -133,7 +138,10 @@ class SchedulePage extends React.Component { } {' Schedule'} - + {editModeEnabled && ()} ) diff --git a/web/pages/StreamPage.js b/web/pages/StreamPage.js new file mode 100644 index 0000000..7832d16 --- /dev/null +++ b/web/pages/StreamPage.js @@ -0,0 +1,67 @@ +import React from 'react'; +import { connect } from 'react-redux'; + +import Button from 'components/Button'; +import TeamList from 'components/TeamList'; +import Header from 'components/Header'; +import Flex from 'components/Flex'; +import Text from 'components/Text'; +import Input from 'components/Input'; +import Loading from 'components/Loading'; + +import { STREAM_LINK } from '../constants' + +class StreamPage extends React.Component { + + fetchSetblock = () => { + + } + + render() { + + return ( + +
+ + + + {'Stream'} + + + + {'Active stream from YYYY-MM-DD HH:MM to YYYY-MM-DD HH:MM'} + + + {/* */} + + + + + + + + + ); + } +} + +const mapStateToProps = (state) => { + return { + + }; +}; + +const mapDispatchToProps = { +} + +export default connect(mapStateToProps, mapDispatchToProps)(StreamPage) \ No newline at end of file diff --git a/web/reducers/scheduling.js b/web/reducers/scheduling.js index b1c48fd..2b86858 100644 --- a/web/reducers/scheduling.js +++ b/web/reducers/scheduling.js @@ -108,15 +108,15 @@ export function updateSetBlock(params) { dispatch(incrementPendingNetworkCalls()) api.graph({ query: `mutation { - updateSetblock( - setblockId: "${params.id}" - updatedFields: { - blockFraction: ${params.blockFraction}, - issueUrl: "${params.issueUrl}", - description: "${params.description}" - } - ) - }` + updateSetblock( + setblockId: "${params.id}" + updatedFields: { + blockFraction: ${params.blockFraction}, + issueUrl: "${params.issueUrl}", + description: "${params.description}" + } + ) + }` }) .then(payload => { diff --git a/web/reducers/team.js b/web/reducers/team.js index 4ac182b..829148f 100644 --- a/web/reducers/team.js +++ b/web/reducers/team.js @@ -86,6 +86,7 @@ export function fetchCurrentTeamMemberById(params) { date, blockTime, blockFraction, + funded, description } } diff --git a/web/routes.js b/web/routes.js index eaa4c8b..7fcb84e 100644 --- a/web/routes.js +++ b/web/routes.js @@ -6,6 +6,7 @@ import Flex from 'components/Flex'; import LandingPage from 'pages/LandingPage'; import PaymentPage from 'pages/PaymentPage'; import SchedulePage from 'pages/SchedulePage'; +import StreamPage from 'pages/StreamPage'; import TeamPage from 'pages/TeamPage'; @@ -52,9 +53,14 @@ export default ( /> + From 1b54a0ad20734b18f150d8b7a8c2eef1c3516a8e Mon Sep 17 00:00:00 2001 From: Oscar Lafarga Date: Sat, 27 Jul 2019 00:02:37 -0400 Subject: [PATCH 3/4] Add LN module, sockets, and clean up --- README.md | 2 +- api/config/credentials.js | 12 + api/modules/index.js | 1 + api/modules/lightningNode.js | 27 + config/paths.js | 2 +- config/webpack.common.js | 2 +- package-lock.json | 1650 ++++++++++++++++++++++-- package.json | 5 +- server.js | 20 +- web/.DS_Store | Bin 6148 -> 6148 bytes web/components/App.js | 2 +- web/components/BlockList.jsx | 2 +- web/components/CommitBlock.jsx | 2 +- web/components/SideBar.jsx | 2 +- web/components/TeamList.js | 2 +- web/{reducers => ducks}/auth.js | 0 web/{reducers => ducks}/environment.js | 0 web/{reducers => ducks}/index.js | 0 web/{reducers => ducks}/scheduling.js | 0 web/{reducers => ducks}/team.js | 0 web/pages/LandingPage.js | 2 +- web/pages/PaymentPage.js | 2 +- web/pages/SchedulePage.js | 4 +- web/pages/TeamPage.js | 2 +- web/routes.js | 2 - web/sagas.js | 83 ++ web/scripts/configureStore.js | 13 +- 27 files changed, 1706 insertions(+), 133 deletions(-) create mode 100644 api/modules/lightningNode.js rename web/{reducers => ducks}/auth.js (100%) rename web/{reducers => ducks}/environment.js (100%) rename web/{reducers => ducks}/index.js (100%) rename web/{reducers => ducks}/scheduling.js (100%) rename web/{reducers => ducks}/team.js (100%) create mode 100644 web/sagas.js diff --git a/README.md b/README.md index 9729d9e..35a4a37 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Get familiar with the **setlife** folder structure |-- /web/ # Application source code |-- /components/ # React components |-- /constants/ # Any constant variable used throughout the app - |-- /reducers/ # Redux Reducers + Redux Actions in the same file + |-- /ducks/ # [Redux Reducers + Redux Actions in the same file](https://github.com/erikras/ducks-modular-redux) |-- /scripts/ # Functions for API calls, data formatters, validators, etc |-- /styles/ # All .less stylesheets ``` diff --git a/api/config/credentials.js b/api/config/credentials.js index 1be9de6..6c74386 100644 --- a/api/config/credentials.js +++ b/api/config/credentials.js @@ -16,5 +16,17 @@ module.exports = { PUBLIC_KEY_TEST: process.env.STRIPE_PUBLIC_KEY_TEST, SECRET_KEY_LIVE: process.env.STRIPE_SECRET_KEY_LIVE, SECRET_KEY_TEST: process.env.STRIPE_SECRET_KEY_TEST + }, + PORTS: { + ALICE: '11008', + BOB: '11009' + }, + MACAROONS: { + ALICE: 'AgEDbG5kAs8BAwoQOZtSrnqJNx/5FQDAD8uGmBIBMBoWCgdhZGRyZXNzEgRyZWFkEgV3cml0ZRoTCgRpbmZvEgRyZWFkEgV3cml0ZRoXCghpbnZvaWNlcxIEcmVhZBIFd3JpdGUaFgoHbWVzc2FnZRIEcmVhZBIFd3JpdGUaFwoIb2ZmY2hhaW4SBHJlYWQSBXdyaXRlGhYKB29uY2hhaW4SBHJlYWQSBXdyaXRlGhQKBXBlZXJzEgRyZWFkEgV3cml0ZRoSCgZzaWduZXISCGdlbmVyYXRlAAAGIM52rJzL3JD4JgX9vWYsnFDylzyY2DPaaTt33A1LM+Sc', + BOB: 'AgEDbG5kAs8BAwoQjVex5/zCTKSEy2VmoePUOBIBMBoWCgdhZGRyZXNzEgRyZWFkEgV3cml0ZRoTCgRpbmZvEgRyZWFkEgV3cml0ZRoXCghpbnZvaWNlcxIEcmVhZBIFd3JpdGUaFgoHbWVzc2FnZRIEcmVhZBIFd3JpdGUaFwoIb2ZmY2hhaW4SBHJlYWQSBXdyaXRlGhYKB29uY2hhaW4SBHJlYWQSBXdyaXRlGhQKBXBlZXJzEgRyZWFkEgV3cml0ZRoSCgZzaWduZXISCGdlbmVyYXRlAAAGIEBa7k90eGQL+CU4HgZJE/m3z0V9PZuAlD6GvO6ntaSD' + }, + TLS_CERTS: { + ALICE: 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNjVENDQWhlZ0F3SUJBZ0lRTXRvZk1uUEozOEhrdTdDUEYyVENtREFLQmdncWhrak9QUVFEQWpBL01SOHcKSFFZRFZRUUtFeFpzYm1RZ1lYVjBiMmRsYm1WeVlYUmxaQ0JqWlhKME1Sd3dHZ1lEVlFRREV4Tk5ZV05DYjI5cgpMVkJ5YnkweUxteHZZMkZzTUI0WERURTVNRFF3TmpBNU5URXlNbG9YRFRJd01EVXpNVEE1TlRFeU1sb3dQekVmCk1CMEdBMVVFQ2hNV2JHNWtJR0YxZEc5blpXNWxjbUYwWldRZ1kyVnlkREVjTUJvR0ExVUVBeE1UVFdGalFtOXYKYXkxUWNtOHRNaTVzYjJOaGJEQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJEdEQ4Rk9yQ1JiRgpFd1l5SU9tcTBDNm9yZmpCbktGREIxTTVmM1VXeS9meHRWdXB1N2JYL1c3T3JVUnh3cnRVOTBvSTE4WFA2ZzVFCjRXbkZLZEVFYVlDamdmUXdnZkV3RGdZRFZSMFBBUUgvQkFRREFnS2tNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHcKZ2MwR0ExVWRFUVNCeFRDQndvSVRUV0ZqUW05dmF5MVFjbTh0TWk1c2IyTmhiSUlKYkc5allXeG9iM04wZ2dSMQpibWw0Z2dwMWJtbDRjR0ZqYTJWMGh3Ui9BQUFCaHhBQUFBQUFBQUFBQUFBQUFBQUFBQUFCaHhEK2dBQUFBQUFBCkFBQUFBQUFBQUFBQmh4RCtnQUFBQUFBQUFBQ2FZbGFJc0M2NGh3UUtBRGNoaHhEK2dBQUFBQUFBQVB6Mjl2LysKQk9MVWh4RCtnQUFBQUFBQUFEa2crTjdvazJLbGh4RCtnQUFBQUFBQUFPbzc5N2tFdDM2Wmh4RCtnQUFBQUFBQQpBQkJQT0dWcFNzd01od1NwL2oyUk1Bb0dDQ3FHU000OUJBTUNBMGdBTUVVQ0lEUkJzbmJvendvY21adXpmUm9yCkoxOGJzZUVvWHF6c1RTQTZGa2JzUnJBUkFpRUFyaEJyTFJKYXdmd0xkOWJETWVQZllwd1Y4SVpYM1V6cm1JZUYKN0ozLzBuVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=', + BOB: 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNjakNDQWhpZ0F3SUJBZ0lSQU9JR3FncElhZk03WXU1N2NuTk9HV013Q2dZSUtvWkl6ajBFQXdJd1B6RWYKTUIwR0ExVUVDaE1XYkc1a0lHRjFkRzluWlc1bGNtRjBaV1FnWTJWeWRERWNNQm9HQTFVRUF4TVRUV0ZqUW05dgpheTFRY204dE1pNXNiMk5oYkRBZUZ3MHhPVEEwTURZd09UVTRNVGxhRncweU1EQTFNekV3T1RVNE1UbGFNRDh4Ckh6QWRCZ05WQkFvVEZteHVaQ0JoZFhSdloyVnVaWEpoZEdWa0lHTmxjblF4SERBYUJnTlZCQU1URTAxaFkwSnYKYjJzdFVISnZMVEl1Ykc5allXd3dXVEFUQmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBU0pDTStQbkFpbgp1NW9uTkY5NFNDYkhuZ0Vkc2NodjYyUUFMdk9ab0xrNSt1T2dtRGpOVVZ2NlJnSnZiQlM4TUY0TWYyNmFiUG94ClNKN1ZTUE9EVGFwWG80SDBNSUh4TUE0R0ExVWREd0VCL3dRRUF3SUNwREFQQmdOVkhSTUJBZjhFQlRBREFRSC8KTUlITkJnTlZIUkVFZ2NVd2djS0NFMDFoWTBKdmIyc3RVSEp2TFRJdWJHOWpZV3lDQ1d4dlkyRnNhRzl6ZElJRQpkVzVwZUlJS2RXNXBlSEJoWTJ0bGRJY0Vmd0FBQVljUUFBQUFBQUFBQUFBQUFBQUFBQUFBQVljUS9vQUFBQUFBCkFBQUFBQUFBQUFBQUFZY1Evb0FBQUFBQUFBQUFtbUpXaUxBdXVJY0VDZ0EzSVljUS9vQUFBQUFBQUFEODl2Yi8KL2dUaTFJY1Evb0FBQUFBQUFBQTVJUGplNkpOaXBZY1Evb0FBQUFBQUFBRHFPL2U1QkxkK21ZY1Evb0FBQUFBQQpBQUFRVHpobGFVck1ESWNFcWY0OWtUQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUF1K0pJVE1RQWZXTzlCZVJICmt3bWtxblFRK3FNcVBJTWRTS0h1aDV1d2dZa0NJQVhIU2pLRWJEbGlGZkV0ellYSkZiK2RkSFZQOCtINFBPTWkKSkFCVEwzUHkKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=' } }; diff --git a/api/modules/index.js b/api/modules/index.js index 9c35f93..984ed33 100644 --- a/api/modules/index.js +++ b/api/modules/index.js @@ -1,6 +1,7 @@ var apiModules = module.exports = (function() { return { authentication: require('./authentication'), + lightningNode: require('./lightningNode'), payments: require('./payments'), schedule: require('./schedule'), team: require('./team') diff --git a/api/modules/lightningNode.js b/api/modules/lightningNode.js new file mode 100644 index 0000000..0547209 --- /dev/null +++ b/api/modules/lightningNode.js @@ -0,0 +1,27 @@ +const lightningNode = module.exports = (() => { + const lnService = require('ln-service'); + const { + PORTS, + MACAROONS, + TLS_CERTS + } = require('../config/credentials') + + return { + getUserWalletInfo: (params) => { + return new Promise((resolve, reject) => { + const lnd = lnService.lightningDaemon({ + cert: TLS_CERTS[params.user], + macaroon: MACAROONS[params.user], + socket: `127.0.0.1:${PORTS[params.user]}` + }); + + lnService.getWalletInfo({ lnd }, (error, result) => { + console.log(error); + console.log(result); + resolve(result) + }); + }) + + } + } +})() \ No newline at end of file diff --git a/config/paths.js b/config/paths.js index 1b1c4fd..a955a17 100644 --- a/config/paths.js +++ b/config/paths.js @@ -9,11 +9,11 @@ module.exports = { appRoot: path.resolve(__dirname, '..'), components: resolve('web/components'), config: resolve('config'), + ducks: resolve('web/ducks'), htmlRoot: resolve('web/index.html'), nodeModules: resolve('node_modules'), pages: resolve('web/pages'), public: resolve('public'), - reducers: resolve('web/reducers'), scripts: resolve('web/scripts'), source: resolve('web'), styles: resolve('web/styles'), diff --git a/config/webpack.common.js b/config/webpack.common.js index 07fc1a8..29e53f4 100644 --- a/config/webpack.common.js +++ b/config/webpack.common.js @@ -39,7 +39,7 @@ module.exports = { components: paths.components, pages: paths.pages, public: paths.public, - reducers: paths.reducers + ducks: paths.ducks } }, optimization: { diff --git a/package-lock.json b/package-lock.json index a7c9d21..898dcef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1056,6 +1056,11 @@ "minimist": "^1.2.0" } }, + "@datastructures-js/priority-queue": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@datastructures-js/priority-queue/-/priority-queue-1.0.2.tgz", + "integrity": "sha512-HrSXJy5QPBn7DyF5ubjR6g88zW4SXDcYf732MKXTwRYf/MSVc8C1oM7UkDpaIc9OoC4r8kwpYa6oWndQZykd1w==" + }, "@emotion/is-prop-valid": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz", @@ -1123,6 +1128,15 @@ } } }, + "@grpc/proto-loader": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.4.0.tgz", + "integrity": "sha512-Jm6o+75uWT7E6+lt8edg4J1F/9+BedOjaMgwE14pxS/AO43/0ZqK+rCLVVrXLoExwSAZvgvOD2B0ivy3Spsspw==", + "requires": { + "lodash.camelcase": "^4.3.0", + "protobufjs": "^6.8.6" + } + }, "@jest/console": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", @@ -1387,6 +1401,107 @@ "url-template": "^2.0.8" } }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@redux-saga/core": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.0.3.tgz", + "integrity": "sha512-zf8h5N0oTzaNeSMxOWH9GJMB9IRSM8JubDsrZVsvVltXjzFFSR8DNt7tbPoRJUK0hFfQB1it+bL+dEMWpD7wXA==", + "requires": { + "@babel/runtime": "^7.0.0", + "@redux-saga/deferred": "^1.0.1", + "@redux-saga/delay-p": "^1.0.1", + "@redux-saga/is": "^1.0.2", + "@redux-saga/symbols": "^1.0.1", + "@redux-saga/types": "^1.0.2", + "redux": ">=0.10 <5", + "typescript-tuple": "^2.1.0" + } + }, + "@redux-saga/deferred": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@redux-saga/deferred/-/deferred-1.0.1.tgz", + "integrity": "sha512-+gW5xQ93QXOOmRLAmX8x2Hx1HpbTG6CM6+HcdTSbJovh4uMWaGyeDECnqXSt8QqA/ja3s2nqYXLqXFKepIQ1hw==" + }, + "@redux-saga/delay-p": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@redux-saga/delay-p/-/delay-p-1.0.1.tgz", + "integrity": "sha512-0SnNDyDLUyB4NThtptAwiprNOnbCNhoed/Rp5JwS7SB+a/AdWynVgg/E6BmjsggLFNr07KW0bzn05tsPRBuU7Q==", + "requires": { + "@redux-saga/symbols": "^1.0.1" + } + }, + "@redux-saga/is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@redux-saga/is/-/is-1.0.2.tgz", + "integrity": "sha512-WnaUOwYvPK2waWjzebT4uhL8zY76XNkzzpJ2EQJe8bN1tByvAjvT7MuJZTSshOhdHL5PsRO0MsH224XIXBJidQ==", + "requires": { + "@redux-saga/symbols": "^1.0.1", + "@redux-saga/types": "^1.0.2" + } + }, + "@redux-saga/symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@redux-saga/symbols/-/symbols-1.0.1.tgz", + "integrity": "sha512-akKkzcVnb1RzJaZV2LQFbi51abvdICMuAKwwLoCjjxLbLAGIw9EJxk5ucNnWSSCEsoEQMeol5tkAcK+Xzuv1Bg==" + }, + "@redux-saga/types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@redux-saga/types/-/types-1.0.2.tgz", + "integrity": "sha512-8/qcMh15507AnXJ3lBeuhsdFwnWQqnp68EpUuHlYPixJ5vjVmls7/Jq48cnUlrZI8Jd9U1jkhfCl0gaT5KMgVw==" + }, "@sendgrid/client": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-6.3.0.tgz", @@ -1415,6 +1530,11 @@ "@sendgrid/helpers": "^6.3.0" } }, + "@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" + }, "@types/babel__core": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.1.tgz", @@ -1481,6 +1601,11 @@ "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", "dev": true }, + "@types/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", + "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==" + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -1763,6 +1888,11 @@ "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", "dev": true }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, "airbnb-prop-types": { "version": "2.13.2", "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.13.2.tgz", @@ -1870,8 +2000,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { "version": "3.2.1", @@ -2006,11 +2135,25 @@ "function-bind": "^1.1.1" } }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, + "ascli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", + "requires": { + "colour": "~0.7.1", + "optjs": "~3.2.2" + } + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -2084,8 +2227,7 @@ "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" }, "asynckit": { "version": "0.4.0", @@ -2455,6 +2597,11 @@ "babel-plugin-jest-hoist": "^24.6.0" } }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -2523,17 +2670,35 @@ "safe-buffer": "^5.0.1" } }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + }, "base64-js": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", "dev": true }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" + }, "base64url": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -2558,6 +2723,14 @@ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.4.0.tgz", "integrity": "sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==" }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "requires": { + "callsite": "1.0.0" + } + }, "bfj": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.1.tgz", @@ -2653,6 +2826,11 @@ "wif": "^2.0.1" } }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + }, "blockstack": { "version": "19.1.0", "resolved": "https://registry.npmjs.org/blockstack/-/blockstack-19.1.0.tgz", @@ -2712,7 +2890,6 @@ "version": "1.18.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", - "dev": true, "requires": { "bytes": "3.0.0", "content-type": "~1.0.4", @@ -2730,7 +2907,6 @@ "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -2739,7 +2915,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "dev": true, "requires": { "bytes": "3.0.0", "http-errors": "1.6.3", @@ -2749,6 +2924,14 @@ } } }, + "bolt07": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/bolt07/-/bolt07-1.4.0.tgz", + "integrity": "sha512-siXTIHMznKzzafI9bTbyxWXUjCrGsM8Rgcjd4vTCS8ri2ASd9yJTtGT1PM0Y54GeJ2IJ13P6srS7MYrXp6wTvw==", + "requires": { + "bn.js": "4.11.8" + } + }, "bonjour": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", @@ -2917,7 +3100,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -3052,8 +3234,7 @@ "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, "builtin-status-codes": { "version": "3.0.0", @@ -3061,11 +3242,25 @@ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", "dev": true }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "~3" + }, + "dependencies": { + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + } + } + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, "cacache": { "version": "10.0.4", @@ -3103,6 +3298,57 @@ "unset-value": "^1.0.0" } }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + }, + "normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" + } + } + }, "caller": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/caller/-/caller-0.0.1.tgz", @@ -3137,6 +3383,11 @@ "caller-callsite": "^2.0.0" } }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3460,6 +3711,14 @@ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -3479,8 +3738,7 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "collection-visit": { "version": "1.0.0", @@ -3529,6 +3787,11 @@ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=" }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", @@ -3553,16 +3816,25 @@ "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==", "dev": true }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, "compressible": { "version": "2.0.17", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", - "dev": true, "requires": { "mime-db": ">= 1.40.0 < 2" } @@ -3571,7 +3843,6 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, "requires": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -3761,8 +4032,7 @@ "content-disposition": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", - "dev": true + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" }, "content-type": { "version": "1.0.4", @@ -4525,14 +4795,21 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", @@ -4541,8 +4818,7 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "deep-is": { "version": "0.1.3", @@ -4740,6 +5016,15 @@ "safe-buffer": "^5.0.1" } }, + "dns-sync": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/dns-sync/-/dns-sync-0.1.3.tgz", + "integrity": "sha1-gPcpFC513UtfSx0+Upcx7jEplHI=", + "requires": { + "debug": "^2", + "shelljs": "~0.5" + } + }, "dns-txt": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", @@ -4850,6 +5135,16 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==" }, + "drbg.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", + "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", + "requires": { + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" + } + }, "duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -4859,8 +5154,7 @@ "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, "duplexify": { "version": "3.7.1", @@ -4944,6 +5238,90 @@ "once": "^1.4.0" } }, + "engine.io": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz", + "integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==", + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~6.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "engine.io-client": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", + "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==", + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, "enhanced-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", @@ -5539,7 +5917,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -5849,6 +6226,14 @@ } } }, + "express-basic-auth": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.1.6.tgz", + "integrity": "sha512-fRh/UU2q/YhvY0/Pkzi3VcLyjIExveW2NOOnOGgO6yO0jKXt6zcKPVPWSrL8nlhlh+YEH5LOjz+CGFML5dJQNw==", + "requires": { + "basic-auth": "^2.0.1" + } + }, "express-graphql": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.8.0.tgz", @@ -6146,7 +6531,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -7073,8 +7457,7 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, "get-value": { "version": "2.0.6", @@ -7233,62 +7616,545 @@ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", "dev": true }, - "gud": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", - "dev": true - }, - "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", - "dev": true, + "grpc": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.19.0.tgz", + "integrity": "sha512-xX+jZ1M3YXjngsRj/gTxB4EwM0WoWUr54DmyNq9xTeg1oSuVaTPD/PK9wnZKOJWTt1pkeFspXqwJPhddZNxHOA==", "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "lodash.camelcase": "^4.3.0", + "lodash.clone": "^4.5.0", + "nan": "^2.0.0", + "node-pre-gyp": "^0.12.0", + "protobufjs": "^5.0.3" }, "dependencies": { - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true, - "optional": true + "abbrev": { + "version": "1.1.1", + "bundled": true }, - "uglify-js": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.10.tgz", - "integrity": "sha512-/GTF0nosyPLbdJBd+AwYiZ+Hu5z8KXWnO0WCGt1BQ/u9Iamhejykqmz5o1OHJ53+VAk6xVxychonnApDjuqGsw==", - "dev": true, - "optional": true, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, "requires": { - "commander": "~2.20.0", + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "chownr": { + "version": "1.1.1", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "iconv-lite": { + "version": "0.4.23", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.1", + "bundled": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } + } + }, + "ms": { + "version": "2.0.0", + "bundled": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true + }, + "npm-packlist": { + "version": "1.1.12", + "bundled": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true + }, + "protobufjs": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", + "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", + "requires": { + "ascli": "~1", + "bytebuffer": "~5", + "glob": "^7.0.5", + "yargs": "^3.10.0" + } + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "sax": { + "version": "1.2.4", + "bundled": true + }, + "semver": { + "version": "5.6.0", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "3.0.3", + "bundled": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } + }, + "gud": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", + "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true, + "optional": true + }, + "uglify-js": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.10.tgz", + "integrity": "sha512-/GTF0nosyPLbdJBd+AwYiZ+Hu5z8KXWnO0WCGt1BQ/u9Iamhejykqmz5o1OHJ53+VAk6xVxychonnApDjuqGsw==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.0", "source-map": "~0.6.1" } } @@ -7325,16 +8191,49 @@ "ansi-regex": "^2.0.0" } }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" + }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -7609,6 +8508,11 @@ } } }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" + }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -7619,7 +8523,6 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -7869,8 +8772,7 @@ "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" }, "inflight": { "version": "1.0.6", @@ -7951,6 +8853,22 @@ "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "dev": true }, + "into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + }, + "dependencies": { + "p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" + } + } + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -8176,6 +9094,11 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -8203,8 +9126,7 @@ "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, "is-plain-object": { "version": "2.0.4", @@ -8253,8 +9175,7 @@ "is-retry-allowed": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" }, "is-stream": { "version": "1.1.0", @@ -8487,6 +9408,15 @@ "handlebars": "^4.1.2" } }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, "iterall": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", @@ -9178,6 +10108,11 @@ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -9205,6 +10140,16 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, + "json2csv": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-4.4.1.tgz", + "integrity": "sha512-agsrAZNNl3Ep+0HUKleuaqMDlYUwtTrjtNLW6Ja8A9Q6QSLMJ0ssowmamHryI4twUFNhFMMkX5Kcjd2B/wcx7A==", + "requires": { + "commander": "^2.15.1", + "jsonparse": "^1.3.1", + "lodash.get": "^4.4.2" + } + }, "json3": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", @@ -9232,6 +10177,11 @@ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, "jsontokens": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jsontokens/-/jsontokens-1.0.0.tgz", @@ -9276,6 +10226,14 @@ "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.3.tgz", "integrity": "sha512-/PpesirAIfaklxUzp4Yb7xBper9MwP6hNRA6BGGUFCgbJ+BM5CKBtsoxinNXkLHAr+GXS1/lSlF2rP7cv5Fl+g==" }, + "keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", + "requires": { + "json-buffer": "3.0.0" + } + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -9378,6 +10336,115 @@ "type-check": "~0.3.2" } }, + "ln-service": { + "version": "34.7.2", + "resolved": "https://registry.npmjs.org/ln-service/-/ln-service-34.7.2.tgz", + "integrity": "sha512-CfGni4sdS3nPAC4QeA+0/UjtjUZ+EKsTS2Bn/fA8ppsx7EHl9LIvOrEw+PN8AUN6FKJSajSsfS+EZriBpxrNxw==", + "requires": { + "@datastructures-js/priority-queue": "1.0.2", + "@grpc/proto-loader": "0.4.0", + "async": "2.6.2", + "bech32": "1.1.3", + "bitcoinjs-lib": "4.0.3", + "bn.js": "4.11.8", + "body-parser": "1.18.3", + "bolt07": "1.4.0", + "compression": "1.7.4", + "cors": "2.8.5", + "dns-sync": "0.1.3", + "dotenv": "7.0.0", + "express": "4.16.4", + "express-basic-auth": "1.1.6", + "grpc": "1.19.0", + "json2csv": "4.4.1", + "lodash": "4.17.11", + "morgan": "1.9.1", + "promptly": "3.0.3", + "request": "2.88.0", + "secp256k1": "3.6.2", + "walnut": "0.0.4", + "ws": "6.2.1" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "requires": { + "lodash": "^4.17.11" + } + }, + "bitcoinjs-lib": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-4.0.3.tgz", + "integrity": "sha512-cb5t55MYUpwQi095J+u6eyltgIU7lbhZfC6+annstncDhfH4cyctW5jmU/tac7NonZZFYH7DktWnDxUm9AWWDQ==", + "requires": { + "bech32": "^1.1.2", + "bip32": "^1.0.0", + "bip66": "^1.1.0", + "bitcoin-ops": "^1.4.0", + "bs58check": "^2.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.3", + "merkle-lib": "^2.0.10", + "pushdata-bitcoin": "^1.0.1", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.1", + "tiny-secp256k1": "^1.0.0", + "typeforce": "^1.11.3", + "varuint-bitcoin": "^1.0.4", + "wif": "^2.0.1" + } + }, + "dotenv": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", + "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==" + }, + "express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + } + } + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -9459,6 +10526,16 @@ "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" + }, "lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", @@ -9581,6 +10658,11 @@ "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", "dev": true }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -9608,8 +10690,7 @@ "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, "lru-cache": { "version": "4.1.5", @@ -9939,6 +11020,11 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -10050,6 +11136,18 @@ "iced-runtime": ">=0.0.1" } }, + "morgan": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "requires": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.2", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + } + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -10377,8 +11475,7 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "nwsapi": { "version": "2.1.4", @@ -10396,6 +11493,11 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -10613,6 +11715,11 @@ } } }, + "optjs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" + }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -10665,6 +11772,11 @@ "mkdirp": "^0.5.1" } }, + "p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" + }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -10737,6 +11849,14 @@ "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", "dev": true }, + "p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", + "requires": { + "p-finally": "^1.0.0" + } + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -10857,6 +11977,22 @@ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "requires": { + "better-assert": "~1.0.0" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -11695,6 +12831,15 @@ } } }, + "promptly": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/promptly/-/promptly-3.0.3.tgz", + "integrity": "sha512-EWnzOsxVKUjqKeE6SStH1/cO4+DE44QolaoJ4ojGd9z6pcNkpgfJKr1ncwxrOFHSTIzoudo7jG8y0re30/LO1g==", + "requires": { + "pify": "^3.0.0", + "read": "^1.0.4" + } + }, "prompts": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz", @@ -11726,6 +12871,33 @@ "reflect.ownkeys": "^0.2.0" } }, + "protobufjs": { + "version": "6.8.8", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", + "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "10.14.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.13.tgz", + "integrity": "sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ==" + } + } + }, "proxy-addr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", @@ -11811,6 +12983,20 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, + "qr.js": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz", + "integrity": "sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8=" + }, + "qrcode.react": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-0.9.3.tgz", + "integrity": "sha512-gGd30Ez7cmrKxyN2M3nueaNLk/f9J7NDRgaD5fVgxGpPLsYGWMn9UQ+XnDpv95cfszTQTdaf4QGLNMf3xU0hmw==", + "requires": { + "prop-types": "^15.6.0", + "qr.js": "0.0.0" + } + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -11909,8 +13095,7 @@ "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", - "dev": true + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" }, "raw-body": { "version": "2.4.0", @@ -11956,7 +13141,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -12452,6 +13636,14 @@ "symbol-observable": "^1.2.0" } }, + "redux-saga": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.0.5.tgz", + "integrity": "sha512-ytGFtaHyz6NQMQp7/LpQ/6CtOkbPRCcAeljUpc4c95hRm5U6dFvrRiZHeBPuQZ56L3oXfTX3hiYh8/3ZudsiNg==", + "requires": { + "@redux-saga/core": "^1.0.3" + } + }, "redux-thunk": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", @@ -12540,7 +13732,6 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", - "dev": true, "requires": { "rc": "^1.1.6", "safe-buffer": "^5.0.1" @@ -12550,7 +13741,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, "requires": { "rc": "^1.0.1" } @@ -12761,6 +13951,14 @@ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -12934,6 +14132,21 @@ "ajv-keywords": "^3.1.0" } }, + "secp256k1": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.6.2.tgz", + "integrity": "sha512-90nYt7yb0LmI4A2jJs1grglkTAXrBwxYAjP9bpeKjvJKOjG2fOeH/YI/lchDMIvjrOasd5QXwvV2jwN168xNng==", + "requires": { + "bindings": "^1.2.1", + "bip66": "^1.1.3", + "bn.js": "^4.11.3", + "create-hash": "^1.1.2", + "drbg.js": "^1.0.1", + "elliptic": "^6.2.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -12967,7 +14180,6 @@ "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -12987,8 +14199,7 @@ "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" } } }, @@ -13016,7 +14227,6 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -13065,8 +14275,7 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "sha.js": { "version": "2.4.11", @@ -13090,6 +14299,11 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, + "shelljs": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", + "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=" + }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", @@ -13254,6 +14468,105 @@ "kind-of": "^3.2.0" } }, + "socket.io": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", + "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", + "requires": { + "debug": "~4.1.0", + "engine.io": "~3.3.1", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.2.0", + "socket.io-parser": "~3.3.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" + }, + "socket.io-client": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", + "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.3.1", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + } + } + }, "sockjs": { "version": "0.3.19", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", @@ -13304,6 +14617,14 @@ } } }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "requires": { + "is-plain-obj": "^1.0.0" + } + }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -13556,8 +14877,7 @@ "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" }, "stealthy-require": { "version": "1.1.1", @@ -13682,7 +15002,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -13710,8 +15029,7 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "stripe": { "version": "6.31.1", @@ -14214,8 +15532,7 @@ "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "timers-browserify": { "version": "2.0.10", @@ -14269,6 +15586,11 @@ "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -14441,6 +15763,27 @@ "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" }, + "typescript-compare": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz", + "integrity": "sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==", + "requires": { + "typescript-logic": "^0.0.0" + } + }, + "typescript-logic": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/typescript-logic/-/typescript-logic-0.0.0.tgz", + "integrity": "sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q==" + }, + "typescript-tuple": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.2.1.tgz", + "integrity": "sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q==", + "requires": { + "typescript-compare": "^0.0.2" + } + }, "ua-parser-js": { "version": "0.7.19", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", @@ -14794,6 +16137,11 @@ "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -14951,6 +16299,73 @@ "makeerror": "1.0.x" } }, + "walnut": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/walnut/-/walnut-0.0.4.tgz", + "integrity": "sha512-lhDcU1Vcj8nGjsl0s8IEkjVJMqQOopAdoVgeLihPaz/iiA58IjyZa2zQWCRdphDyg6cCBrO0oKqBskfA/9a7Vw==", + "requires": { + "async": "2.6.1", + "package-json": "5.0.0" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "requires": { + "lodash": "^4.17.10" + } + }, + "got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + } + }, + "package-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-5.0.0.tgz", + "integrity": "sha512-EeHQFFTlEmLrkIQoxbE9w0FuAWHoc1XpthDqnZ/i9keOt701cteyXwAxQFLpVqVjj3feh2TodkihjLaRUtIgLg==", + "requires": { + "got": "^8.3.1", + "registry-auth-token": "^3.3.2", + "registry-url": "^3.1.0", + "semver": "^5.5.0" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + } + } + }, "warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", @@ -15432,6 +16847,11 @@ "bs58check": "<3.0.0" } }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, "windows-release": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", @@ -15472,7 +16892,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -15482,7 +16901,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -15491,7 +16909,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -15529,7 +16946,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, "requires": { "async-limiter": "~1.0.0" } @@ -15571,6 +16987,11 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", @@ -15625,6 +17046,11 @@ "decamelize": "^1.2.0" } }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, "zone-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/zone-file/-/zone-file-1.0.0.tgz", diff --git a/package.json b/package.json index d9fa9d7..1315ce2 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "^scripts(.*)$": "/web/scripts$1", "^styles(.*)$": "/web/styles$1", "^components(.*)$": "/web/components$1", - "^reducers(.*)$": "/web/reducers$1", + "^ducks(.*)$": "/web/ducks$1", "\\.(css|less|png|jpg|jpeg)$": "/tests/setup/mock.js" } }, @@ -75,6 +75,7 @@ "formik": "^1.3.0", "fs-extra": "^2.0.0", "graphql": "^14.2.1", + "ln-service": "^34.7.2", "lodash": "^4.16.4", "moment": "^2.15.1", "mysql": "^2.11.1", @@ -90,8 +91,10 @@ "react-stripe-elements": "^3.0.0", "react-transition-group": "^2.4.0", "redux": "^4.0.0", + "redux-saga": "^1.0.5", "redux-thunk": "^2.1.0", "request-promise": "^4.2.2", + "socket.io": "^2.2.0", "stripe": "^6.31.1", "styled-components": "^4.0.0-beta.1", "styled-icons": "^3.7.0", diff --git a/server.js b/server.js index 231858a..fd0bd40 100644 --- a/server.js +++ b/server.js @@ -95,7 +95,25 @@ app.use('/api/v/:vid/graph', graphqlHTTP((req, res) => { }; })); -app.listen(port, function() { +const lightningNode = require('./api/modules/lightningNode') + +app.get('/api/getWalletInfo', (req, res) => { + lightningNode.getUserWalletInfo({ user: req.query.user }) + .then(info => { + res.json(info) + }) +}) + +// Real-time messaging web sockets +var server = require('http').createServer(app); +var io = require('socket.io')(server); + +io.on('connection', function(data) { + console.log('connection on: '); + // console.log(data); +}); + +server.listen(port, function() { console.log('SetLife-ReactWithApi: Server running on port ' + port); // require('./api/handlers/github').fetchRepo({ // url: 'https://github.com/bitcoin/bitcoin' diff --git a/web/.DS_Store b/web/.DS_Store index a252bcdfb8a9a3e43730fcaa5b5389d1b2aa07f1..8f38dce3f332f8ce7a02d5f7a66aac30435a3b12 100644 GIT binary patch delta 39 vcmZoMXfc@J&&abeU^g=(&twM{iOH#~{F{wg9xzRIWuSiOH#~{F{wg9x$nLFcdMQGNdq+G9&}(B8Fnmoc!dZ aoctsP1_l8jwg%!ElR4PWZ)WHC%MSq7uM)ff diff --git a/web/components/App.js b/web/components/App.js index a4c203c..fbfb4ef 100644 --- a/web/components/App.js +++ b/web/components/App.js @@ -11,7 +11,7 @@ import NavigationBar from './NavigationBar'; import routes from '../routes' -import { checkAuthentication } from '../reducers/auth' +import { checkAuthentication } from '../ducks/auth' class App extends React.Component { componentDidMount() { diff --git a/web/components/BlockList.jsx b/web/components/BlockList.jsx index d11a674..3cc715a 100644 --- a/web/components/BlockList.jsx +++ b/web/components/BlockList.jsx @@ -9,7 +9,7 @@ import { DEFAULT_SETBLOCKS } from '../constants'; import { setEnableSubmit, updateUnsavedSetblocks, -} from '../reducers/scheduling'; +} from '../ducks/scheduling'; class BlockList extends React.Component { diff --git a/web/components/CommitBlock.jsx b/web/components/CommitBlock.jsx index 8aee2b4..bd47fa5 100644 --- a/web/components/CommitBlock.jsx +++ b/web/components/CommitBlock.jsx @@ -12,7 +12,7 @@ import { createSetBlock, deleteSetblock, updateSetBlock -} from '../reducers/scheduling'; +} from '../ducks/scheduling'; class CommitBlock extends React.Component { diff --git a/web/components/SideBar.jsx b/web/components/SideBar.jsx index fd21a81..147f3b3 100644 --- a/web/components/SideBar.jsx +++ b/web/components/SideBar.jsx @@ -5,7 +5,7 @@ import { connect } from 'react-redux'; import DayBlock from './DayBlock'; import Flex from './Flex'; -import { changeEditModeEnabled, changeSelectedDay } from '../reducers/scheduling'; +import { changeEditModeEnabled, changeSelectedDay } from '../ducks/scheduling'; import theme from '../styles/theme'; diff --git a/web/components/TeamList.js b/web/components/TeamList.js index bd352e3..f42cabb 100644 --- a/web/components/TeamList.js +++ b/web/components/TeamList.js @@ -3,7 +3,7 @@ import { connect } from 'react-redux' import TeamMember from './TeamMember' -import { fetchAllTeamMembers } from '../reducers/team' +import { fetchAllTeamMembers } from '../ducks/team' export class TeamList extends React.Component { diff --git a/web/reducers/auth.js b/web/ducks/auth.js similarity index 100% rename from web/reducers/auth.js rename to web/ducks/auth.js diff --git a/web/reducers/environment.js b/web/ducks/environment.js similarity index 100% rename from web/reducers/environment.js rename to web/ducks/environment.js diff --git a/web/reducers/index.js b/web/ducks/index.js similarity index 100% rename from web/reducers/index.js rename to web/ducks/index.js diff --git a/web/reducers/scheduling.js b/web/ducks/scheduling.js similarity index 100% rename from web/reducers/scheduling.js rename to web/ducks/scheduling.js diff --git a/web/reducers/team.js b/web/ducks/team.js similarity index 100% rename from web/reducers/team.js rename to web/ducks/team.js diff --git a/web/pages/LandingPage.js b/web/pages/LandingPage.js index e24ab2a..254c192 100644 --- a/web/pages/LandingPage.js +++ b/web/pages/LandingPage.js @@ -7,7 +7,7 @@ import Flex from 'components/Flex'; import Text from 'components/Text'; import Loading from 'components/Loading'; -import { authenticateWithBlockstack, authenticateWithGithub, logout } from '../reducers/auth' +import { authenticateWithBlockstack, authenticateWithGithub, logout } from '../ducks/auth' class LandingPage extends React.Component { handleBlockstackLogin = () => { diff --git a/web/pages/PaymentPage.js b/web/pages/PaymentPage.js index ad2b90a..d0bf942 100644 --- a/web/pages/PaymentPage.js +++ b/web/pages/PaymentPage.js @@ -28,7 +28,7 @@ class PaymentPage extends React.Component { handleBtcPayment = (event) => { console.log('handleBtcPayment') - this.props.history.push('/stream/1') + this.props.history.push(`/stream/${setblockId}`) // this.props.simulatePayment() } diff --git a/web/pages/SchedulePage.js b/web/pages/SchedulePage.js index 9c07f5b..91e2172 100644 --- a/web/pages/SchedulePage.js +++ b/web/pages/SchedulePage.js @@ -18,8 +18,8 @@ import { changeSelectedDay, setEnableSubmit, updateUnsavedSetblocks -} from '../reducers/scheduling'; -import { fetchCurrentTeamMemberById } from '../reducers/team' +} from '../ducks/scheduling'; +import { fetchCurrentTeamMemberById } from '../ducks/team' import theme from '../styles/theme' diff --git a/web/pages/TeamPage.js b/web/pages/TeamPage.js index b4524a2..2c49180 100644 --- a/web/pages/TeamPage.js +++ b/web/pages/TeamPage.js @@ -9,7 +9,7 @@ import Flex from 'components/Flex'; import Text from 'components/Text'; import Loading from 'components/Loading'; -import { logout } from '../reducers/auth' +import { logout } from '../ducks/auth' class TeamPage extends React.Component { diff --git a/web/routes.js b/web/routes.js index 7fcb84e..2a089bd 100644 --- a/web/routes.js +++ b/web/routes.js @@ -62,8 +62,6 @@ export default ( component={StreamPage} /> - - ); \ No newline at end of file diff --git a/web/sagas.js b/web/sagas.js new file mode 100644 index 0000000..018aa04 --- /dev/null +++ b/web/sagas.js @@ -0,0 +1,83 @@ +import 'regenerator-runtime/runtime'; +import io from 'socket.io-client'; +import { eventChannel } from 'redux-saga'; +import { apply, call, cancel, fork, put, take, select } from 'redux-saga/effects'; + +import { SITE_ROOT } from './constants'; + +// import { receiveUser } from './ducks/auth'; + +// Selectors +const getScheduling = state => state.scheduling; + +// Saga functionss +function connect() { + const socket = io(SITE_ROOT); + return new Promise(resolve => { + socket.on('connect', () => { + console.log('connect'); + resolve(socket); + }); + }); +} +function subscribe(socket) { + return eventChannel(emitter => { + + const streamStartedHandler = (event) => { + console.log('stream.started'); + console.log(event); + emitter({ + event: 'stream.started', + data: event + }); + }; + const paymentReceivedHandler = (event) => { + console.log('payment.received'); + console.log(event); + emitter({ + event: 'payment.received', + data: event + }); + }; + const disconnectHandler = (event) => { + console.log('disconnect'); + console.log(event); + }; + + socket.on('stream.started', streamStartedHandler); + socket.on('payment.received', paymentReceivedHandler); + socket.on('disconnect', disconnectHandler); + + const unsubscribe = () => { + console.log('unsubscribe'); + socket.off('stream.started', loginHandler); + socket.off('payment.received', paymentReceivedHandler); + socket.off('disconnect', disconnectHandler); + }; + + return unsubscribe; + }); +} + +function* schedulingSaga() { + const socket = yield call(connect); + const channel = yield call(subscribe, socket); + + while (true) { + const payload = yield take(channel); + console.log('payload client socket'); + console.log(payload); +// if (payload.event.indexOf('stream.') != -1) { +// const { loggedInUser } = yield select(getAuth); +// +// // Handle incoming message only if it contains the loggedInUser +// if (loggedInUser && loggedInUser.id == payload.data.receiving_user_id) { +// yield put(receiveUser(payload)); +// } +// } + } +} + +export default function* rootSaga() { + yield fork(schedulingSaga); +} \ No newline at end of file diff --git a/web/scripts/configureStore.js b/web/scripts/configureStore.js index 2a63afa..9039172 100644 --- a/web/scripts/configureStore.js +++ b/web/scripts/configureStore.js @@ -1,6 +1,9 @@ import { createStore, applyMiddleware, compose } from 'redux' import thunk from 'redux-thunk' -import rootReducer from '../reducers' +import createSagaMiddleware from 'redux-saga'; + +import rootReducer from '../ducks' +import rootSaga from '../sagas'; export default function configureStore(isProduction) { let store @@ -12,17 +15,19 @@ export default function configureStore(isProduction) { ) } else { const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose + const sagaMiddleware = createSagaMiddleware(); store = createStore( rootReducer, composeEnhancers( - applyMiddleware(thunk) + applyMiddleware(thunk, sagaMiddleware) ) ) + sagaMiddleware.run(rootSaga); if (module.hot) { - module.hot.accept('../reducers', () => { - const nextRootReducer = require('../reducers').default + module.hot.accept('../ducks', () => { + const nextRootReducer = require('../ducks').default store.replaceReducer(nextRootReducer) }) } From 860ca4411ccd00dc81e040dfaef664aec64832c5 Mon Sep 17 00:00:00 2001 From: Oscar Lafarga Date: Sun, 28 Jul 2019 16:35:32 -0400 Subject: [PATCH 4/4] Test LN node config & sockets The next step from here is to test the LN functions with a local simnet running Then emitting the socket events to test that the frontend can respond to those events --- api/modules/lightningNode.js | 26 +- package-lock.json | 717 +++++++++++++++-------------------- package.json | 2 +- server.js | 2 + web/pages/PaymentPage.js | 3 +- web/sagas.js | 10 +- 6 files changed, 335 insertions(+), 425 deletions(-) diff --git a/api/modules/lightningNode.js b/api/modules/lightningNode.js index 0547209..6538897 100644 --- a/api/modules/lightningNode.js +++ b/api/modules/lightningNode.js @@ -9,7 +9,7 @@ const lightningNode = module.exports = (() => { return { getUserWalletInfo: (params) => { return new Promise((resolve, reject) => { - const lnd = lnService.lightningDaemon({ + const { lnd } = lnService.authenticatedLndGrpc({ cert: TLS_CERTS[params.user], macaroon: MACAROONS[params.user], socket: `127.0.0.1:${PORTS[params.user]}` @@ -22,6 +22,30 @@ const lightningNode = module.exports = (() => { }); }) + }, + subscribeToChainAddress: (params) => { + return new Promise((resolve, reject) => { + const { lnd } = lnService.authenticatedLndGrpc({ + cert: TLS_CERTS[params.user], + macaroon: MACAROONS[params.user], + socket: `127.0.0.1:${PORTS[params.user]}` + }); + + const subscription = lnService.subscribeToChainAddress({ + lnd, + bech32_address: process.env.ALICE_ADDRESS + }) + + subscription.on('confirmation', ({ block, transaction }) => { + console.log('confirmation block') + console.log(block) + // Fetch transaction amount + // Fetch next setblock for memberId: process.env.MEMBER_ID + // If setblock.amount < transaction.amount + setblock.paidAmount, fund block then and emit + // Else add amount to setblock.paidAmount + }) + }) + } } })() \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 898dcef..3e44157 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1129,9 +1129,9 @@ } }, "@grpc/proto-loader": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.4.0.tgz", - "integrity": "sha512-Jm6o+75uWT7E6+lt8edg4J1F/9+BedOjaMgwE14pxS/AO43/0ZqK+rCLVVrXLoExwSAZvgvOD2B0ivy3Spsspw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.1.tgz", + "integrity": "sha512-3y0FhacYAwWvyXshH18eDkUI40wT/uGio7MAegzY8lO5+wVsc19+1A7T0pPptae4kl7bdITL+0cHpnAPmryBjQ==", "requires": { "lodash.camelcase": "^4.3.0", "protobufjs": "^6.8.6" @@ -1530,11 +1530,6 @@ "@sendgrid/helpers": "^6.3.0" } }, - "@sindresorhus/is": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", - "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" - }, "@types/babel__core": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.1.tgz", @@ -2229,6 +2224,11 @@ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" }, + "asyncjs-util": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/asyncjs-util/-/asyncjs-util-1.1.1.tgz", + "integrity": "sha512-a+zTr12g6hK+2/GxnAxj2c7C+NE1bLyGXNn6qCj57h8loaAl9pXEBgu7HM5TOvWsJ73e6HI+zociDnVBqaOUnQ==" + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2699,6 +2699,14 @@ "safe-buffer": "5.1.2" } }, + "basicauth-middleware": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/basicauth-middleware/-/basicauth-middleware-3.1.0.tgz", + "integrity": "sha512-sDy0dfIxDUKrJRqmBgekGc9I+C7HkwF9+T1lRGy6W4hQjugJYMAwQCtvdPOXK77GbgwdN9ShYaXo2QknX0Yftw==", + "requires": { + "basic-auth": "^2.0.0" + } + }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -2766,6 +2774,11 @@ "file-uri-to-path": "1.0.0" } }, + "bip174": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bip174/-/bip174-1.0.0.tgz", + "integrity": "sha512-AaoWrkYtv6A2y8H+qzs6NvRWypzNbADT8PQGpM9rnP+jLzeol+uzhe3Myeuq/dwrHYtmsW8V71HmX2oXhQGagw==" + }, "bip32": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/bip32/-/bip32-1.0.4.tgz", @@ -2890,6 +2903,7 @@ "version": "1.18.3", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "dev": true, "requires": { "bytes": "3.0.0", "content-type": "~1.0.4", @@ -2907,6 +2921,7 @@ "version": "0.4.23", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -2915,6 +2930,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "dev": true, "requires": { "bytes": "3.0.0", "http-errors": "1.6.3", @@ -2925,11 +2941,18 @@ } }, "bolt07": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/bolt07/-/bolt07-1.4.0.tgz", - "integrity": "sha512-siXTIHMznKzzafI9bTbyxWXUjCrGsM8Rgcjd4vTCS8ri2ASd9yJTtGT1PM0Y54GeJ2IJ13P6srS7MYrXp6wTvw==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/bolt07/-/bolt07-1.4.2.tgz", + "integrity": "sha512-y7xTyZbdGwQPMwl91VCRj9z6Shj3Wwz1L1YyWoSRTA64k+CIBaVsH1rdvJvEPZYbon1WOvnl8nNxcQfRPP37KA==", "requires": { - "bn.js": "4.11.8" + "bn.js": "5.0.0" + }, + "dependencies": { + "bn.js": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.0.0.tgz", + "integrity": "sha512-bVwDX8AF+72fIUNuARelKAlQUNtPOfG2fRxorbVvFk4zpHbqLrPdOGfVg5vrKwVzLLePqPBiATaOZNELQzmS0A==" + } } }, "bonjour": { @@ -3220,6 +3243,25 @@ "isarray": "^1.0.0" } }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -3298,57 +3340,6 @@ "unset-value": "^1.0.0" } }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" - }, - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - } - } - }, "caller": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/caller/-/caller-0.0.1.tgz", @@ -3711,14 +3702,6 @@ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", "dev": true }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -4032,7 +4015,8 @@ "content-disposition": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true }, "content-type": { "version": "1.0.4", @@ -4802,14 +4786,6 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", @@ -4818,7 +4794,8 @@ "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true }, "deep-is": { "version": "0.1.3", @@ -5016,15 +4993,6 @@ "safe-buffer": "^5.0.1" } }, - "dns-sync": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/dns-sync/-/dns-sync-0.1.3.tgz", - "integrity": "sha1-gPcpFC513UtfSx0+Upcx7jEplHI=", - "requires": { - "debug": "^2", - "shelljs": "~0.5" - } - }, "dns-txt": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", @@ -5154,7 +5122,8 @@ "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true }, "duplexify": { "version": "3.7.1", @@ -6226,14 +6195,6 @@ } } }, - "express-basic-auth": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.1.6.tgz", - "integrity": "sha512-fRh/UU2q/YhvY0/Pkzi3VcLyjIExveW2NOOnOGgO6yO0jKXt6zcKPVPWSrL8nlhlh+YEH5LOjz+CGFML5dJQNw==", - "requires": { - "basic-auth": "^2.0.1" - } - }, "express-graphql": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.8.0.tgz", @@ -6531,6 +6492,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -7457,7 +7419,8 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true }, "get-value": { "version": "2.0.6", @@ -7617,14 +7580,14 @@ "dev": true }, "grpc": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.19.0.tgz", - "integrity": "sha512-xX+jZ1M3YXjngsRj/gTxB4EwM0WoWUr54DmyNq9xTeg1oSuVaTPD/PK9wnZKOJWTt1pkeFspXqwJPhddZNxHOA==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.22.2.tgz", + "integrity": "sha512-gaK59oAA5/mlOIn+hQO5JROPoAzsaGRpEMcrAayW5WGETS8QScpBoQ+XBxEWAAF0kbeGIELuGRCVEObKS1SLmw==", "requires": { "lodash.camelcase": "^4.3.0", "lodash.clone": "^4.5.0", - "nan": "^2.0.0", - "node-pre-gyp": "^0.12.0", + "nan": "^2.13.2", + "node-pre-gyp": "^0.13.0", "protobufjs": "^5.0.3" }, "dependencies": { @@ -7695,13 +7658,6 @@ "version": "1.0.2", "bundled": true }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, "deep-extend": { "version": "0.6.0", "bundled": true @@ -7715,7 +7671,7 @@ "bundled": true }, "fs-minipass": { - "version": "1.2.5", + "version": "1.2.6", "bundled": true, "requires": { "minipass": "^2.2.1" @@ -7739,18 +7695,6 @@ "wide-align": "^1.1.0" } }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "has-unicode": { "version": "2.0.1", "bundled": true @@ -7829,7 +7773,7 @@ } }, "minizlib": { - "version": "1.1.1", + "version": "1.2.1", "bundled": true, "requires": { "minipass": "^2.2.1" @@ -7848,21 +7792,30 @@ } } }, - "ms": { - "version": "2.0.0", - "bundled": true - }, "needle": { - "version": "2.2.4", + "version": "2.4.0", "bundled": true, "requires": { - "debug": "^2.1.2", + "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "bundled": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true + } } }, "node-pre-gyp": { - "version": "0.12.0", + "version": "0.13.0", "bundled": true, "requires": { "detect-libc": "^1.0.2", @@ -7886,11 +7839,11 @@ } }, "npm-bundled": { - "version": "1.0.5", + "version": "1.0.6", "bundled": true }, "npm-packlist": { - "version": "1.1.12", + "version": "1.4.1", "bundled": true, "requires": { "ignore-walk": "^3.0.1", @@ -7951,7 +7904,7 @@ "bundled": true }, "process-nextick-args": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true }, "protobufjs": { @@ -7989,10 +7942,24 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.1.4", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "safe-buffer": { @@ -8008,7 +7975,7 @@ "bundled": true }, "semver": { - "version": "5.6.0", + "version": "5.7.0", "bundled": true }, "set-blocking": { @@ -8016,7 +7983,7 @@ "bundled": true }, "signal-exit": { - "version": "3.0.2", + "version": "3.0.1", "bundled": true }, "string-width": { @@ -8047,16 +8014,16 @@ "bundled": true }, "tar": { - "version": "4.4.8", + "version": "4.4.10", "bundled": true, "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", + "minipass": "^2.3.5", + "minizlib": "^1.2.1", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "yallist": "^3.0.3" } }, "util-deprecate": { @@ -8216,24 +8183,11 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" - }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -8508,11 +8462,6 @@ } } }, - "http-cache-semantics": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", - "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" - }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -8523,6 +8472,7 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -8853,22 +8803,6 @@ "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "dev": true }, - "into-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", - "requires": { - "from2": "^2.1.1", - "p-is-promise": "^1.1.0" - }, - "dependencies": { - "p-is-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" - } - } - }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -8920,6 +8854,11 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-base64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-base64/-/is-base64-0.1.0.tgz", + "integrity": "sha512-WRRyllsGXJM7ZN7gPTCCQ/6wNPTRDwiWdPK66l5sJzcU/oOzcIcRRf0Rux8bkpox/1yjt0F6VJRsQOIG2qz5sg==" + }, "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", @@ -9059,6 +8998,11 @@ "is-extglob": "^1.0.0" } }, + "is-hex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-hex/-/is-hex-1.1.3.tgz", + "integrity": "sha1-RAJZwHloHgNy5SFWqmeiM8OXXe4=" + }, "is-installed-globally": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", @@ -9094,11 +9038,6 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" - }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -9126,7 +9065,8 @@ "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true }, "is-plain-object": { "version": "2.0.4", @@ -9175,7 +9115,8 @@ "is-retry-allowed": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true }, "is-stream": { "version": "1.1.0", @@ -9408,15 +9349,6 @@ "handlebars": "^4.1.2" } }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, "iterall": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", @@ -10108,11 +10040,6 @@ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -10140,16 +10067,6 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "json2csv": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-4.4.1.tgz", - "integrity": "sha512-agsrAZNNl3Ep+0HUKleuaqMDlYUwtTrjtNLW6Ja8A9Q6QSLMJ0ssowmamHryI4twUFNhFMMkX5Kcjd2B/wcx7A==", - "requires": { - "commander": "^2.15.1", - "jsonparse": "^1.3.1", - "lodash.get": "^4.4.2" - } - }, "json3": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", @@ -10177,11 +10094,6 @@ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" - }, "jsontokens": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jsontokens/-/jsontokens-1.0.0.tgz", @@ -10226,14 +10138,6 @@ "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.3.tgz", "integrity": "sha512-/PpesirAIfaklxUzp4Yb7xBper9MwP6hNRA6BGGUFCgbJ+BM5CKBtsoxinNXkLHAr+GXS1/lSlF2rP7cv5Fl+g==" }, - "keyv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", - "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", - "requires": { - "json-buffer": "3.0.0" - } - }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -10337,50 +10241,69 @@ } }, "ln-service": { - "version": "34.7.2", - "resolved": "https://registry.npmjs.org/ln-service/-/ln-service-34.7.2.tgz", - "integrity": "sha512-CfGni4sdS3nPAC4QeA+0/UjtjUZ+EKsTS2Bn/fA8ppsx7EHl9LIvOrEw+PN8AUN6FKJSajSsfS+EZriBpxrNxw==", + "version": "41.0.1", + "resolved": "https://registry.npmjs.org/ln-service/-/ln-service-41.0.1.tgz", + "integrity": "sha512-roK/YwT3zgyxuti0P33R1m6AEyhv6r6SAX8fp6M3WkGjaGcHM48QRCS1TbxAYhH0HRAjL5gQyQHFjxagke9Rlg==", "requires": { "@datastructures-js/priority-queue": "1.0.2", - "@grpc/proto-loader": "0.4.0", - "async": "2.6.2", + "@grpc/proto-loader": "0.5.1", + "async": "3.1.0", + "asyncjs-util": "1.1.1", + "basicauth-middleware": "3.1.0", "bech32": "1.1.3", - "bitcoinjs-lib": "4.0.3", - "bn.js": "4.11.8", - "body-parser": "1.18.3", - "bolt07": "1.4.0", + "bitcoinjs-lib": "5.1.1", + "bn.js": "5.0.0", + "body-parser": "1.19.0", + "bolt07": "1.4.2", "compression": "1.7.4", "cors": "2.8.5", - "dns-sync": "0.1.3", - "dotenv": "7.0.0", - "express": "4.16.4", - "express-basic-auth": "1.1.6", - "grpc": "1.19.0", - "json2csv": "4.4.1", - "lodash": "4.17.11", + "dotenv": "8.0.0", + "express": "4.17.1", + "grpc": "1.22.2", + "is-base64": "0.1.0", + "is-hex": "1.1.3", + "lodash": "4.17.15", "morgan": "1.9.1", "promptly": "3.0.3", "request": "2.88.0", - "secp256k1": "3.6.2", - "walnut": "0.0.4", - "ws": "6.2.1" + "safe-compare": "1.1.4", + "secp256k1": "3.7.1", + "ws": "7.1.1" }, "dependencies": { + "@types/node": { + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + }, "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz", + "integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==" + }, + "bip32": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.4.tgz", + "integrity": "sha512-ioPytarPDIrWckWMuK4RNUtvwhvWEc2fvuhnO0WEwu732k5OLjUXv4rXi2c/KJHw9ZMNQMkYRJrBw81RujShGQ==", "requires": { - "lodash": "^4.17.11" + "@types/node": "10.12.18", + "bs58check": "^2.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "tiny-secp256k1": "^1.1.0", + "typeforce": "^1.11.5", + "wif": "^2.0.6" } }, "bitcoinjs-lib": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-4.0.3.tgz", - "integrity": "sha512-cb5t55MYUpwQi095J+u6eyltgIU7lbhZfC6+annstncDhfH4cyctW5jmU/tac7NonZZFYH7DktWnDxUm9AWWDQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-5.1.1.tgz", + "integrity": "sha512-BrjFqv+yE9YV1edKdPMIjZMg31Q1I5b1sniIQDOuuwa5/rv6FYG/m4jH/bR8t0M0yzeeEcqF5M4zxKqK1TrVHA==", "requires": { + "@types/node": "10.12.18", "bech32": "^1.1.2", - "bip32": "^1.0.0", + "bip174": "^1.0.0", + "bip32": "^2.0.3", "bip66": "^1.1.0", "bitcoin-ops": "^1.4.0", "bs58check": "^2.0.0", @@ -10389,59 +10312,102 @@ "merkle-lib": "^2.0.10", "pushdata-bitcoin": "^1.0.1", "randombytes": "^2.0.1", - "safe-buffer": "^5.1.1", - "tiny-secp256k1": "^1.0.0", + "tiny-secp256k1": "^1.1.1", "typeforce": "^1.11.3", "varuint-bitcoin": "^1.0.4", "wif": "^2.0.1" } }, - "dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==" + "bn.js": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.0.0.tgz", + "integrity": "sha512-bVwDX8AF+72fIUNuARelKAlQUNtPOfG2fRxorbVvFk4zpHbqLrPdOGfVg5vrKwVzLLePqPBiATaOZNELQzmS0A==" }, - "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", + "bytes": "3.1.0", "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" } }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "dotenv": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.0.0.tgz", + "integrity": "sha512-30xVGqjLjiUOArT4+M5q9sYdvuR4riM6yK9wMcas9Vbp6zZa+ocC9dp6QoftuhTPhFAiLK/0C5Ni2nou/Bk8lg==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "tiny-secp256k1": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.3.tgz", + "integrity": "sha512-ZpobrhOtHP98VYEN51IYQH1YcrbFpnxFhI6ceWa3OEbJn7eHvSd8YFjGPxbedGCy7PNYU1v/+BRsdvyr5uRd4g==", + "requires": { + "bindings": "^1.3.0", + "bn.js": "^4.11.8", + "create-hmac": "^1.1.7", + "elliptic": "^6.4.0", + "nan": "^2.13.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + } + } + }, + "ws": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.1.1.tgz", + "integrity": "sha512-o41D/WmDeca0BqYhsr3nJzQyg9NF5X8l/UdnFNux9cS3lwB+swm8qGWX5rn+aD6xfBU3rGmtHij7g7x6LxFU3A==", + "requires": { + "async-limiter": "^1.0.0" + } } } }, @@ -10690,7 +10656,8 @@ "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true }, "lru-cache": { "version": "4.1.5", @@ -11020,11 +10987,6 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, "min-document": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", @@ -11772,11 +11734,6 @@ "mkdirp": "^0.5.1" } }, - "p-cancelable": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", - "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" - }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -11849,14 +11806,6 @@ "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", "dev": true }, - "p-timeout": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", - "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", - "requires": { - "p-finally": "^1.0.0" - } - }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -13095,7 +13044,8 @@ "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true }, "raw-body": { "version": "2.4.0", @@ -13141,6 +13091,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -13732,6 +13683,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "dev": true, "requires": { "rc": "^1.1.6", "safe-buffer": "^5.0.1" @@ -13741,6 +13693,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, "requires": { "rc": "^1.0.1" } @@ -13951,14 +13904,6 @@ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -14062,6 +14007,14 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-compare": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-compare/-/safe-compare-1.1.4.tgz", + "integrity": "sha512-b9wZ986HHCo/HbKrRpBJb2kqXMK9CEWIE1egeEvZsYn69ay3kdfl9nG3RyOcR+jInTDf7a86WQ1d4VJX7goSSQ==", + "requires": { + "buffer-alloc": "^1.2.0" + } + }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", @@ -14133,18 +14086,25 @@ } }, "secp256k1": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.6.2.tgz", - "integrity": "sha512-90nYt7yb0LmI4A2jJs1grglkTAXrBwxYAjP9bpeKjvJKOjG2fOeH/YI/lchDMIvjrOasd5QXwvV2jwN168xNng==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.1.tgz", + "integrity": "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==", "requires": { - "bindings": "^1.2.1", - "bip66": "^1.1.3", - "bn.js": "^4.11.3", - "create-hash": "^1.1.2", + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", "drbg.js": "^1.0.1", - "elliptic": "^6.2.3", - "nan": "^2.2.1", - "safe-buffer": "^5.1.0" + "elliptic": "^6.4.1", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + } } }, "select-hose": { @@ -14180,6 +14140,7 @@ "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -14199,7 +14160,8 @@ "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true } } }, @@ -14227,6 +14189,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -14275,7 +14238,8 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true }, "sha.js": { "version": "2.4.11", @@ -14299,11 +14263,6 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, - "shelljs": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", - "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=" - }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", @@ -14617,14 +14576,6 @@ } } }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -14877,7 +14828,8 @@ "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true }, "stealthy-require": { "version": "1.1.1", @@ -15029,7 +14981,8 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "stripe": { "version": "6.31.1", @@ -15532,7 +15485,8 @@ "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true }, "timers-browserify": { "version": "2.0.10", @@ -16137,11 +16091,6 @@ "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" - }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -16299,73 +16248,6 @@ "makeerror": "1.0.x" } }, - "walnut": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/walnut/-/walnut-0.0.4.tgz", - "integrity": "sha512-lhDcU1Vcj8nGjsl0s8IEkjVJMqQOopAdoVgeLihPaz/iiA58IjyZa2zQWCRdphDyg6cCBrO0oKqBskfA/9a7Vw==", - "requires": { - "async": "2.6.1", - "package-json": "5.0.0" - }, - "dependencies": { - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "^4.17.10" - } - }, - "got": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", - "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", - "requires": { - "@sindresorhus/is": "^0.7.0", - "cacheable-request": "^2.1.1", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "into-stream": "^3.1.0", - "is-retry-allowed": "^1.1.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "mimic-response": "^1.0.0", - "p-cancelable": "^0.4.0", - "p-timeout": "^2.0.1", - "pify": "^3.0.0", - "safe-buffer": "^5.1.1", - "timed-out": "^4.0.1", - "url-parse-lax": "^3.0.0", - "url-to-options": "^1.0.1" - } - }, - "package-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-5.0.0.tgz", - "integrity": "sha512-EeHQFFTlEmLrkIQoxbE9w0FuAWHoc1XpthDqnZ/i9keOt701cteyXwAxQFLpVqVjj3feh2TodkihjLaRUtIgLg==", - "requires": { - "got": "^8.3.1", - "registry-auth-token": "^3.3.2", - "registry-url": "^3.1.0", - "semver": "^5.5.0" - } - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - } - } - }, "warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", @@ -16946,6 +16828,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, "requires": { "async-limiter": "~1.0.0" } diff --git a/package.json b/package.json index 1315ce2..5b6d292 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "formik": "^1.3.0", "fs-extra": "^2.0.0", "graphql": "^14.2.1", - "ln-service": "^34.7.2", + "ln-service": "^41.0.1", "lodash": "^4.16.4", "moment": "^2.15.1", "mysql": "^2.11.1", diff --git a/server.js b/server.js index fd0bd40..d856d35 100644 --- a/server.js +++ b/server.js @@ -97,6 +97,8 @@ app.use('/api/v/:vid/graph', graphqlHTTP((req, res) => { const lightningNode = require('./api/modules/lightningNode') +lightningNode.subscribeToChainAddress({ user: 'ALICE' }) + app.get('/api/getWalletInfo', (req, res) => { lightningNode.getUserWalletInfo({ user: req.query.user }) .then(info => { diff --git a/web/pages/PaymentPage.js b/web/pages/PaymentPage.js index d0bf942..bbc9c92 100644 --- a/web/pages/PaymentPage.js +++ b/web/pages/PaymentPage.js @@ -28,7 +28,8 @@ class PaymentPage extends React.Component { handleBtcPayment = (event) => { console.log('handleBtcPayment') - this.props.history.push(`/stream/${setblockId}`) + console.log(this.props) + this.props.history.push(`/stream/${this.props.match.params.setblockId}`) // this.props.simulatePayment() } diff --git a/web/sagas.js b/web/sagas.js index 018aa04..35a15aa 100644 --- a/web/sagas.js +++ b/web/sagas.js @@ -31,11 +31,11 @@ function subscribe(socket) { data: event }); }; - const paymentReceivedHandler = (event) => { - console.log('payment.received'); + const setblockFundedHandler = (event) => { + console.log('setblock.funded'); console.log(event); emitter({ - event: 'payment.received', + event: 'setblock.funded', data: event }); }; @@ -45,13 +45,13 @@ function subscribe(socket) { }; socket.on('stream.started', streamStartedHandler); - socket.on('payment.received', paymentReceivedHandler); + socket.on('setblock.funded', setblockFundedHandler); socket.on('disconnect', disconnectHandler); const unsubscribe = () => { console.log('unsubscribe'); socket.off('stream.started', loginHandler); - socket.off('payment.received', paymentReceivedHandler); + socket.off('setblock.funded', setblockFundedHandler); socket.off('disconnect', disconnectHandler); };