From c30ac9a18151498ec1ecca6096eeaea247f1fb9c Mon Sep 17 00:00:00 2001 From: eturnerx Date: Tue, 23 Jan 2018 01:47:31 -0500 Subject: [PATCH 01/94] Inital documentation addtions --- doc/README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/doc/README.md b/doc/README.md index 193a56b9..d63e8c14 100644 --- a/doc/README.md +++ b/doc/README.md @@ -713,12 +713,33 @@ steem.broadcast.limitOrderCreate(wif, owner, orderid, amountToSell, minToReceive console.log(err, result); }); ``` +wif: active private key (String) +owner: account name (String). No leading @ symbol. +orderid: user defined ordernumber (int). Used to cancel orders. +amountToSell: Amount to sell (String). "X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD" +minToReceive: Amount desired (String). "X.XXX ASSET" must have 3 decimal places. e.g. "20.120 STEEM" +fillOrKill: Fill order from current order book or kill the order (Boolean). False leaves the order in the Order Book until either filled or the epiration time. +expiration: Time when order expires (int). Unit milliseconds. Zero is UNIX epoch. +function: Your callback (function). + +Possibly risky tip: If you want to place an at market order, then use the minToReceive as 0.001 and fillOrKill as true (use at own risk) + ### Limit Order Create2 ``` steem.broadcast.limitOrderCreate2(wif, owner, orderid, amountToSell, exchangeRate, fillOrKill, expiration, function(err, result) { console.log(err, result); }); + ``` +wif: active private key (String) +owner: account name (String). No leading @ symbol. +orderid: user defined ordernumber (int). Used to cancel orders. +amountToSell: Amount to sell (String). "X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD" +exchangeRate: The exchange rate (int). +fillOrKill: Fill order from current order book or kill the order (Boolean). False leaves the order in the Order Book until either filled or the epiration time. +expiration: Time when order expires (int). Unit milliseconds. Zero is UNIX epoch. +function: Your callback (function). + ### Liquidity Reward ``` steem.broadcast.liquidityReward(wif, owner, payout, function(err, result) { From d815ddbfcf0f7ff414a8efefa9bb142d82748500 Mon Sep 17 00:00:00 2001 From: eturnerx Date: Tue, 23 Jan 2018 01:57:19 -0500 Subject: [PATCH 02/94] Experiment with tables --- doc/README.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/doc/README.md b/doc/README.md index d63e8c14..25f5e2eb 100644 --- a/doc/README.md +++ b/doc/README.md @@ -713,14 +713,17 @@ steem.broadcast.limitOrderCreate(wif, owner, orderid, amountToSell, minToReceive console.log(err, result); }); ``` -wif: active private key (String) -owner: account name (String). No leading @ symbol. -orderid: user defined ordernumber (int). Used to cancel orders. -amountToSell: Amount to sell (String). "X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD" -minToReceive: Amount desired (String). "X.XXX ASSET" must have 3 decimal places. e.g. "20.120 STEEM" -fillOrKill: Fill order from current order book or kill the order (Boolean). False leaves the order in the Order Book until either filled or the epiration time. -expiration: Time when order expires (int). Unit milliseconds. Zero is UNIX epoch. -function: Your callback (function). + +|Parameter|Description|Datatype|Notes| +|---|---|---|---| +|wif|Active private key|String|| +owner|Account name.|String|No leading @ symbol.| +orderid|User defined ordernumber.|int|Used to cancel orders.| +amountToSell|Amount to sell.|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| +minToReceive|Amount desired.|String)|"X.XXX ASSET" must have 3 decimal places. e.g. "20.120 STEEM"| +fillOrKill|Fill order from current order book or kill the order.|Boolean|False leaves the order in the Order Book until either filled or the epiration time.| +expiration|Time when order expires.|int|Unit milliseconds. Zero is UNIX epoch.| +function()|Your callback.|function|| Possibly risky tip: If you want to place an at market order, then use the minToReceive as 0.001 and fillOrKill as true (use at own risk) From 4abd2af8ed2e6b99178ff90926fe94fcc3949cae Mon Sep 17 00:00:00 2001 From: eturnerx Date: Tue, 23 Jan 2018 02:02:35 -0500 Subject: [PATCH 03/94] Experiment with tables 2 --- doc/README.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/doc/README.md b/doc/README.md index 25f5e2eb..e260b996 100644 --- a/doc/README.md +++ b/doc/README.md @@ -718,11 +718,11 @@ steem.broadcast.limitOrderCreate(wif, owner, orderid, amountToSell, minToReceive |---|---|---|---| |wif|Active private key|String|| owner|Account name.|String|No leading @ symbol.| -orderid|User defined ordernumber.|int|Used to cancel orders.| +orderid|User defined ordernumber.|Integer|Used to cancel orders.| amountToSell|Amount to sell.|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| -minToReceive|Amount desired.|String)|"X.XXX ASSET" must have 3 decimal places. e.g. "20.120 STEEM"| +minToReceive|Amount desired.|String|"X.XXX ASSET" must have 3 decimal places. e.g. "20.120 STEEM"| fillOrKill|Fill order from current order book or kill the order.|Boolean|False leaves the order in the Order Book until either filled or the epiration time.| -expiration|Time when order expires.|int|Unit milliseconds. Zero is UNIX epoch.| +expiration|Time when order expires.|Integer|Unit milliseconds. Zero is UNIX epoch.| function()|Your callback.|function|| Possibly risky tip: If you want to place an at market order, then use the minToReceive as 0.001 and fillOrKill as true (use at own risk) @@ -734,14 +734,17 @@ steem.broadcast.limitOrderCreate2(wif, owner, orderid, amountToSell, exchangeRat }); ``` -wif: active private key (String) -owner: account name (String). No leading @ symbol. -orderid: user defined ordernumber (int). Used to cancel orders. -amountToSell: Amount to sell (String). "X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD" -exchangeRate: The exchange rate (int). -fillOrKill: Fill order from current order book or kill the order (Boolean). False leaves the order in the Order Book until either filled or the epiration time. -expiration: Time when order expires (int). Unit milliseconds. Zero is UNIX epoch. -function: Your callback (function). + +|Parameter|Description|Datatype|Notes| +|---|---|---|---| +|wif|Active private key|String|| +owner|Account name.|String|No leading @ symbol.| +orderid|User defined ordernumber.|Integer|Used to cancel orders.| +amountToSell|Amount to sell.|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| +exchangeRate|The exchange rate.|Integer|amountToSell is is multiplied by the exchangeRate to get a minToReceive.| +fillOrKill|Fill order from current order book or kill the order.|Boolean|False leaves the order in the Order Book until either filled or the epiration time.| +expiration|Time when order expires.|Integer|Unit milliseconds. Zero is UNIX epoch.| +function()|Your callback.|function|| ### Liquidity Reward ``` From 159af4df3e96309588c113fa61b170eae352ad42 Mon Sep 17 00:00:00 2001 From: Stormrose Date: Thu, 25 Jan 2018 06:07:25 +1300 Subject: [PATCH 04/94] Syntax highlighting Set explicit coding language tags to all code blocks to improve syntax highlighting. --- doc/README.md | 280 +++++++++++++++++++++++++------------------------- 1 file changed, 141 insertions(+), 139 deletions(-) diff --git a/doc/README.md b/doc/README.md index e260b996..b51d3818 100644 --- a/doc/README.md +++ b/doc/README.md @@ -24,7 +24,7 @@ - [Formatter](#formatter) # Install -``` +```sh $ npm install steem --save ``` @@ -46,12 +46,14 @@ steem.api.setOptions({ url: 'wss://ws.golos.io' }); // assuming websocket is wor steem.config.set('address_prefix','GLS'); steem.config.set('chain_id','782a3039b478c839e4cb0c941ff4eaeb7df40bdd68bd441afd444b9da763de12'); ``` + ### set -``` +```js steem.config.set('address_prefix','STM'); ``` + ### get -``` +```js steem.config.get('chain_id'); ``` @@ -66,25 +68,25 @@ steem.api.setOptions({ url: 'https://api.steemit.com' }); ## Subscriptions ### Set Subscribe Callback -``` +```js steem.api.setSubscribeCallback(callback, clearFilter, function(err, result) { console.log(err, result); }); ``` ### Set Pending Transaction Callback -``` +```js steem.api.setPendingTransactionCallback(cb, function(err, result) { console.log(err, result); }); ``` ### Set Block Applied Callback -``` +```js steem.api.setBlockAppliedCallback(cb, function(err, result) { console.log(err, result); }); ``` ### Cancel All Subscriptions -``` +```js steem.api.cancelAllSubscriptions(function(err, result) { console.log(err, result); }); @@ -93,73 +95,73 @@ steem.api.cancelAllSubscriptions(function(err, result) { ## Tags ### Get Trending Tags -``` +```js steem.api.getTrendingTags(afterTag, limit, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Trending -``` +```js steem.api.getDiscussionsByTrending(query, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Created -``` +```js steem.api.getDiscussionsByCreated(query, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Active -``` +```js steem.api.getDiscussionsByActive(query, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Cashout -``` +```js steem.api.getDiscussionsByCashout(query, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Payout -``` +```js steem.api.getDiscussionsByPayout(query, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Votes -``` +```js steem.api.getDiscussionsByVotes(query, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Children -``` +```js steem.api.getDiscussionsByChildren(query, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Hot -``` +```js steem.api.getDiscussionsByHot(query, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Feed -``` +```js steem.api.getDiscussionsByFeed(query, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Blog -``` +```js steem.api.getDiscussionsByBlog(query, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Comments -``` +```js steem.api.getDiscussionsByComments(query, function(err, result) { console.log(err, result); }); @@ -168,43 +170,43 @@ steem.api.getDiscussionsByComments(query, function(err, result) { ## Blocks and transactions ### Get Block Header -``` +```js steem.api.getBlockHeader(blockNum, function(err, result) { console.log(err, result); }); ``` ### Get Block -``` +```js steem.api.getBlock(blockNum, function(err, result) { console.log(err, result); }); ``` ### Get State -``` +```js steem.api.getState(path, function(err, result) { console.log(err, result); }); ``` ### Get Trending Categories -``` +```js steem.api.getTrendingCategories(after, limit, function(err, result) { console.log(err, result); }); ``` ### Get Best Categories -``` +```js steem.api.getBestCategories(after, limit, function(err, result) { console.log(err, result); }); ``` ### Get Active Categories -``` +```js steem.api.getActiveCategories(after, limit, function(err, result) { console.log(err, result); }); ``` ### Get Recent Categories -``` +```js steem.api.getRecentCategories(after, limit, function(err, result) { console.log(err, result); }); @@ -213,55 +215,55 @@ steem.api.getRecentCategories(after, limit, function(err, result) { ## Globals ### Get Config -``` +```js steem.api.getConfig(function(err, result) { console.log(err, result); }); ``` ### Get Dynamic Global Properties -``` +```js steem.api.getDynamicGlobalProperties(function(err, result) { console.log(err, result); }); ``` ### Get Chain Properties -``` +```js steem.api.getChainProperties(function(err, result) { console.log(err, result); }); ``` ### Get Feed History -``` +```js steem.api.getFeedHistory(function(err, result) { console.log(err, result); }); ``` ### Get Current Median History Price -``` +```js steem.api.getCurrentMedianHistoryPrice(function(err, result) { console.log(err, result); }); ``` ### Get Hardfork Version -``` +```js steem.api.getHardforkVersion(function(err, result) { console.log(err, result); }); ``` ### Get Next Scheduled Hardfork -``` +```js steem.api.getNextScheduledHardfork(function(err, result) { console.log(err, result); }); ``` ### Get Reward Fund -``` +```js steem.api.getRewardFund(name, function(err, result) { console.log(err, result); }); ``` ### Get Vesting Delegations -``` +```js steem.api.getVestingDelegations(account, from, limit, function(err, result) { console.log(err, result); }); @@ -270,7 +272,7 @@ steem.api.getVestingDelegations(account, from, limit, function(err, result) { ## Keys ### Get Key References -``` +```js steem.api.getKeyReferences(key, function(err, result) { console.log(err, result); }); @@ -279,55 +281,55 @@ steem.api.getKeyReferences(key, function(err, result) { ## Accounts ### Get Accounts -``` +```js steem.api.getAccounts(names, function(err, result) { console.log(err, result); }); ``` ### Get Account References -``` +```js steem.api.getAccountReferences(accountId, function(err, result) { console.log(err, result); }); ``` ### Lookup Account Names -``` +```js steem.api.lookupAccountNames(accountNames, function(err, result) { console.log(err, result); }); ``` ### Lookup Accounts -``` +```js steem.api.lookupAccounts(lowerBoundName, limit, function(err, result) { console.log(err, result); }); ``` ### Get Account Count -``` +```js steem.api.getAccountCount(function(err, result) { console.log(err, result); }); ``` ### Get Conversion Requests -``` +```js steem.api.getConversionRequests(accountName, function(err, result) { console.log(err, result); }); ``` ### Get Account History -``` +```js steem.api.getAccountHistory(account, from, limit, function(err, result) { console.log(err, result); }); ``` ### Get Owner History -``` +```js steem.api.getOwnerHistory(account, function(err, result) { console.log(err, result); }); ``` ### Get Recovery Request -``` +```js steem.api.getRecoveryRequest(account, function(err, result) { console.log(err, result); }); @@ -336,19 +338,19 @@ steem.api.getRecoveryRequest(account, function(err, result) { ## Market ### Get Order Book -``` +```js steem.api.getOrderBook(limit, function(err, result) { console.log(err, result); }); ``` ### Get Open Orders -``` +```js steem.api.getOpenOrders(owner, function(err, result) { console.log(err, result); }); ``` ### Get Liquidity Queue -``` +```js steem.api.getLiquidityQueue(startAccount, limit, function(err, result) { console.log(err, result); }); @@ -357,37 +359,37 @@ steem.api.getLiquidityQueue(startAccount, limit, function(err, result) { ## Authority / validation ### Get Transaction Hex -``` +```js steem.api.getTransactionHex(trx, function(err, result) { console.log(err, result); }); ``` ### Get Transaction -``` +```js steem.api.getTransaction(trxId, function(err, result) { console.log(err, result); }); ``` ### Get Required Signatures -``` +```js steem.api.getRequiredSignatures(trx, availableKeys, function(err, result) { console.log(err, result); }); ``` ### Get Potential Signatures -``` +```js steem.api.getPotentialSignatures(trx, function(err, result) { console.log(err, result); }); ``` ### Verify Authority -``` +```js steem.api.verifyAuthority(trx, function(err, result) { console.log(err, result); }); ``` ### Verify Account Authority -``` +```js steem.api.verifyAccountAuthority(nameOrId, signers, function(err, result) { console.log(err, result); }); @@ -396,13 +398,13 @@ steem.api.verifyAccountAuthority(nameOrId, signers, function(err, result) { ## Votes ### Get Active Votes -``` +```js steem.api.getActiveVotes(author, permlink, function(err, result) { console.log(err, result); }); ``` ### Get Account Votes -``` +```js steem.api.getAccountVotes(voter, function(err, result) { console.log(err, result); }); @@ -412,25 +414,25 @@ steem.api.getAccountVotes(voter, function(err, result) { ### Get Content -``` +```js steem.api.getContent(author, permlink, function(err, result) { console.log(err, result); }); ``` ### Get Content Replies -``` +```js steem.api.getContentReplies(author, permlink, function(err, result) { console.log(err, result); }); ``` ### Get Discussions By Author Before Date -``` +```js steem.api.getDiscussionsByAuthorBeforeDate(author, startPermlink, beforeDate, limit, function(err, result) { console.log(err, result); }); ``` ### Get Replies By Last Update -``` +```js steem.api.getRepliesByLastUpdate(startAuthor, startPermlink, limit, function(err, result) { console.log(err, result); }); @@ -440,43 +442,43 @@ steem.api.getRepliesByLastUpdate(startAuthor, startPermlink, limit, function(err ### Get Witnesses -``` +```js steem.api.getWitnesses(witnessIds, function(err, result) { console.log(err, result); }); ``` ### Get Witness By Account -``` +```js steem.api.getWitnessByAccount(accountName, function(err, result) { console.log(err, result); }); ``` ### Get Witnesses By Vote -``` +```js steem.api.getWitnessesByVote(from, limit, function(err, result) { console.log(err, result); }); ``` ### Lookup Witness Accounts -``` +```js steem.api.lookupWitnessAccounts(lowerBoundName, limit, function(err, result) { console.log(err, result); }); ``` ### Get Witness Count -``` +```js steem.api.getWitnessCount(function(err, result) { console.log(err, result); }); ``` ### Get Active Witnesses -``` +```js steem.api.getActiveWitnesses(function(err, result) { console.log(err, result); }); ``` ### Get Miner Queue -``` +```js steem.api.getMinerQueue(function(err, result) { console.log(err, result); }); @@ -488,14 +490,14 @@ steem.api.getMinerQueue(function(err, result) { /!\ It's **not safe** to use this method with your username and password. This method always return `true` and is only used in intern with empty values to enable broadcast. -``` +```js steem.api.login('', '', function(err, result) { console.log(err, result); }); ``` ### Get Api By Name -``` +```js steem.api.getApiByName(apiName, function(err, result) { console.log(err, result); }); @@ -504,19 +506,19 @@ steem.api.getApiByName(apiName, function(err, result) { ## Follow API ### Get Followers -``` +```js steem.api.getFollowers(following, startFollower, followType, limit, function(err, result) { console.log(err, result); }); ``` ### Get Following -``` +```js steem.api.getFollowing(follower, startFollowing, followType, limit, function(err, result) { console.log(err, result); }); ``` ### Get Follow Count -``` +```js steem.api.getFollowCount(account, function(err, result) { console.log(err, result); }); @@ -525,13 +527,13 @@ steem.api.getFollowCount(account, function(err, result) { ## Broadcast API ### Broadcast Transaction Synchronous -``` +```js steem.api.broadcastTransactionSynchronous(trx, function(err, result) { console.log(err, result); }); ``` ### Broadcast Block -``` +```js steem.api.broadcastBlock(b, function(err, result) { console.log(err, result); }); @@ -540,175 +542,175 @@ steem.api.broadcastBlock(b, function(err, result) { # Broadcast ### Account Create -``` +```js steem.broadcast.accountCreate(wif, fee, creator, newAccountName, owner, active, posting, memoKey, jsonMetadata, function(err, result) { console.log(err, result); }); ``` ### Account Create With Delegation -``` +```js steem.broadcast.accountCreateWithDelegation(wif, fee, delegation, creator, newAccountName, owner, active, posting, memoKey, jsonMetadata, extensions, function(err, result) { console.log(err, result); }); ``` ### Delegate Vesting Shares -``` +```js steem.broadcast.delegateVestingShares(wif, delegator, delegatee, vesting_shares, function(err, result) { console.log(err, result); }); ``` ### Account Update -``` +```js steem.broadcast.accountUpdate(wif, account, owner, active, posting, memoKey, jsonMetadata, function(err, result) { console.log(err, result); }); ``` ### Account Witness Proxy -``` +```js steem.broadcast.accountWitnessProxy(wif, account, proxy, function(err, result) { console.log(err, result); }); ``` ### Account Witness Vote -``` +```js steem.broadcast.accountWitnessVote(wif, account, witness, approve, function(err, result) { console.log(err, result); }); ``` ### Challenge Authority -``` +```js steem.broadcast.challengeAuthority(wif, challenger, challenged, requireOwner, function(err, result) { console.log(err, result); }); ``` ### Change Recovery Account -``` +```js steem.broadcast.changeRecoveryAccount(wif, accountToRecover, newRecoveryAccount, extensions, function(err, result) { console.log(err, result); }); ``` ### Comment -``` +```js steem.broadcast.comment(wif, parentAuthor, parentPermlink, author, permlink, title, body, jsonMetadata, function(err, result) { console.log(err, result); }); ``` ### Comment Options -``` +```js steem.broadcast.commentOptions(wif, author, permlink, maxAcceptedPayout, percentSteemDollars, allowVotes, allowCurationRewards, extensions, function(err, result) { console.log(err, result); }); ``` ### Comment Payout -``` +```js steem.broadcast.commentPayout(wif, author, permlink, payout, function(err, result) { console.log(err, result); }); ``` ### Comment Reward -``` +```js steem.broadcast.commentReward(wif, author, permlink, sbdPayout, vestingPayout, function(err, result) { console.log(err, result); }); ``` ### Convert -``` +```js steem.broadcast.convert(wif, owner, requestid, amount, function(err, result) { console.log(err, result); }); ``` ### Curate Reward -``` +```js steem.broadcast.curateReward(wif, curator, reward, commentAuthor, commentPermlink, function(err, result) { console.log(err, result); }); ``` ### Custom -``` +```js steem.broadcast.custom(wif, requiredAuths, id, data, function(err, result) { console.log(err, result); }); ``` ### Custom Binary -``` +```js steem.broadcast.customBinary(wif, id, data, function(err, result) { console.log(err, result); }); ``` ### Custom Json -``` +```js steem.broadcast.customJson(wif, requiredAuths, requiredPostingAuths, id, json, function(err, result) { console.log(err, result); }); ``` ### Delete Comment -``` +```js steem.broadcast.deleteComment(wif, author, permlink, function(err, result) { console.log(err, result); }); ``` ### Escrow Dispute -``` +```js steem.broadcast.escrowDispute(wif, from, to, agent, who, escrowId, function(err, result) { console.log(err, result); }); ``` ### Escrow Release -``` +```js steem.broadcast.escrowRelease(wif, from, to, agent, who, receiver, escrowId, sbdAmount, steemAmount, function(err, result) { console.log(err, result); }); ``` ### Escrow Transfer -``` +```js steem.broadcast.escrowTransfer(wif, from, to, agent, escrowId, sbdAmount, steemAmount, fee, ratificationDeadline, escrowExpiration, jsonMeta, function(err, result) { console.log(err, result); }); ``` ### Feed Publish -``` +```js steem.broadcast.feedPublish(wif, publisher, exchangeRate, function(err, result) { console.log(err, result); }); ``` ### Pow2 -``` +```js steem.broadcast.pow2(wif, work, newOwnerKey, props, function(err, result) { console.log(err, result); }); ``` ### Fill Convert Request -``` +```js steem.broadcast.fillConvertRequest(wif, owner, requestid, amountIn, amountOut, function(err, result) { console.log(err, result); }); ``` ### Fill Order -``` +```js steem.broadcast.fillOrder(wif, currentOwner, currentOrderid, currentPays, openOwner, openOrderid, openPays, function(err, result) { console.log(err, result); }); ``` ### Fill Vesting Withdraw -``` +```js steem.broadcast.fillVestingWithdraw(wif, fromAccount, toAccount, withdrawn, deposited, function(err, result) { console.log(err, result); }); ``` ### Interest -``` +```js steem.broadcast.interest(wif, owner, interest, function(err, result) { console.log(err, result); }); ``` ### Limit Order Cancel -``` +```js steem.broadcast.limitOrderCancel(wif, owner, orderid, function(err, result) { console.log(err, result); }); ``` ### Limit Order Create -``` +```js steem.broadcast.limitOrderCreate(wif, owner, orderid, amountToSell, minToReceive, fillOrKill, expiration, function(err, result) { console.log(err, result); }); @@ -728,7 +730,7 @@ function()|Your callback.|function|| Possibly risky tip: If you want to place an at market order, then use the minToReceive as 0.001 and fillOrKill as true (use at own risk) ### Limit Order Create2 -``` +```js steem.broadcast.limitOrderCreate2(wif, owner, orderid, amountToSell, exchangeRate, fillOrKill, expiration, function(err, result) { console.log(err, result); }); @@ -747,121 +749,121 @@ expiration|Time when order expires.|Integer|Unit milliseconds. Zero is UNIX epoc function()|Your callback.|function|| ### Liquidity Reward -``` +```js steem.broadcast.liquidityReward(wif, owner, payout, function(err, result) { console.log(err, result); }); ``` ### Pow -``` +```js steem.broadcast.pow(wif, worker, input, signature, work, function(err, result) { console.log(err, result); }); ``` ### Prove Authority -``` +```js steem.broadcast.proveAuthority(wif, challenged, requireOwner, function(err, result) { console.log(err, result); }); ``` ### Recover Account -``` +```js steem.broadcast.recoverAccount(wif, accountToRecover, newOwnerAuthority, recentOwnerAuthority, extensions, function(err, result) { console.log(err, result); }); ``` ### Report Over Production -``` +```js steem.broadcast.reportOverProduction(wif, reporter, firstBlock, secondBlock, function(err, result) { console.log(err, result); }); ``` ### Request Account Recovery -``` +```js steem.broadcast.requestAccountRecovery(wif, recoveryAccount, accountToRecover, newOwnerAuthority, extensions, function(err, result) { console.log(err, result); }); ``` ### Escrow Approve -``` +```js steem.broadcast.escrowApprove(wif, from, to, agent, who, escrowId, approve, function(err, result) { console.log(err, result); }); ``` ### Set Withdraw Vesting Route -``` +```js steem.broadcast.setWithdrawVestingRoute(wif, fromAccount, toAccount, percent, autoVest, function(err, result) { console.log(err, result); }); ``` ### Transfer -``` +```js steem.broadcast.transfer(wif, from, to, amount, memo, function(err, result) { console.log(err, result); }); ``` ### Transfer To Vesting -``` +```js steem.broadcast.transferToVesting(wif, from, to, amount, function(err, result) { console.log(err, result); }); ``` ### Vote -``` +```js steem.broadcast.vote(wif, voter, author, permlink, weight, function(err, result) { console.log(err, result); }); ``` ### Withdraw Vesting -``` +```js steem.broadcast.withdrawVesting(wif, account, vestingShares, function(err, result) { console.log(err, result); }); ``` ### Witness Update -``` +```js steem.broadcast.witnessUpdate(wif, owner, url, blockSigningKey, props, fee, function(err, result) { console.log(err, result); }); ``` ### Fill Vesting Withdraw -``` +```js steem.broadcast.fillVestingWithdraw(wif, fromAccount, toAccount, withdrawn, deposited, function(err, result) { console.log(err, result); }); ``` ### Fill Order -``` +```js steem.broadcast.fillOrder(wif, currentOwner, currentOrderid, currentPays, openOwner, openOrderid, openPays, function(err, result) { console.log(err, result); }); ``` ### Fill Transfer From Savings -``` +```js steem.broadcast.fillTransferFromSavings(wif, from, to, amount, requestId, memo, function(err, result) { console.log(err, result); }); ``` ### Comment Payout -``` +```js steem.broadcast.commentPayout(wif, author, permlink, payout, function(err, result) { console.log(err, result); }); ``` ### Transfer To Savings -``` +```js steem.broadcast.transferToSavings(wif, from, to, amount, memo, function(err, result) { console.log(err, result); }); ``` ### Transfer From Savings -``` +```js steem.broadcast.transferFromSavings(wif, from, requestId, to, amount, memo, function(err, result) { console.log(err, result); }); ``` ### Cancel Transfer From Savings -``` +```js steem.broadcast.cancelTransferFromSavings(wif, from, requestId, function(err, result) { console.log(err, result); }); @@ -869,7 +871,7 @@ steem.broadcast.cancelTransferFromSavings(wif, from, requestId, function(err, re ### Multisig You can use multisignature to broadcast an operation. -``` +```js steem.broadcast.send({ extensions: [], operations: [ @@ -887,56 +889,56 @@ steem.broadcast.send({ # Auth ### Verify -``` +```js steem.auth.verify(name, password, auths); ``` ### Generate Keys -``` +```js steem.auth.generateKeys(name, password, roles); ``` ### Get Private Keys -``` +```js steem.auth.getPrivateKeys(name, password, roles); ``` ### Is Wif -``` +```js steem.auth.isWif(privWif); ``` ### To Wif -``` +```js steem.auth.toWif(name, password, role); ``` ### Wif Is Valid -``` +```js steem.auth.wifIsValid(privWif, pubWif); ``` ### Wif To Public -``` +```js steem.auth.wifToPublic(privWif); ``` ### Sign Transaction -``` +```js steem.auth.signTransaction(trx, keys); ``` # Formatter ### Create Suggested Password -``` +```js var password = steem.formatter.createSuggestedPassword(); console.log(password); // => 'GAz3GYFvvQvgm7t2fQmwMDuXEzDqTzn9' ``` ### Comment Permlink -``` +```js var parentAuthor = 'ned'; var parentPermlink = 'a-selfie'; var commentPermlink = steem.formatter.commentPermlink(parentAuthor, parentPermlink); @@ -945,19 +947,19 @@ console.log(commentPermlink); ``` ### Estimate Account Value -``` +```js var steemPower = steem.formatter.estimateAccountValue(account); ``` ### Reputation -``` +```js var reputation = steem.formatter.reputation(3512485230915); console.log(reputation); // => 56 ``` ### Vest To Steem -``` +```js var steemPower = steem.formatter.vestToSteem(vestingShares, totalVestingShares, totalVestingFundSteem); console.log(steemPower); ``` @@ -965,7 +967,7 @@ console.log(steemPower); # Utils ### Validate Username -``` +```js var isValidUsername = steem.utils.validateAccountName('test1234'); console.log(isValidUsername); // => 'null' From d53877a0058acc9250a1390d652010c0a74e11b9 Mon Sep 17 00:00:00 2001 From: Stormrose Date: Thu, 25 Jan 2018 06:55:12 +1300 Subject: [PATCH 05/94] Docs for LimitOrderCreate & LimitOrderCreate2 Plus various other minor spelling improvements. --- doc/README.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/doc/README.md b/doc/README.md index b51d3818..4b7f5f28 100644 --- a/doc/README.md +++ b/doc/README.md @@ -42,7 +42,7 @@ steem.api.getAccounts(['ned', 'dan'], function(err, response){ Default config should work with steem. however you can change it to work with golos as ```js -steem.api.setOptions({ url: 'wss://ws.golos.io' }); // assuming websocket is work at ws.golos.io +steem.api.setOptions({ url: 'wss://ws.golos.io' }); // assuming websocket is working at ws.golos.io steem.config.set('address_prefix','GLS'); steem.config.set('chain_id','782a3039b478c839e4cb0c941ff4eaeb7df40bdd68bd441afd444b9da763de12'); ``` @@ -488,7 +488,7 @@ steem.api.getMinerQueue(function(err, result) { ### Login -/!\ It's **not safe** to use this method with your username and password. This method always return `true` and is only used in intern with empty values to enable broadcast. +/!\ It's **not safe** to use this method with your username and password. This method always return `true` and is only used internally with empty values to enable broadcast. ```js steem.api.login('', '', function(err, result) { @@ -710,6 +710,8 @@ steem.broadcast.limitOrderCancel(wif, owner, orderid, function(err, result) { }); ``` ### Limit Order Create +Creates a limit order on the [internal market](http://steemit.com/market) to trade one asset for another using a specified minimum. Orders can be set attempt to fill immediately and or to go to the orderbook. Orders in the order book remain until filled or the expiration time is reached. + ```js steem.broadcast.limitOrderCreate(wif, owner, orderid, amountToSell, minToReceive, fillOrKill, expiration, function(err, result) { console.log(err, result); @@ -723,13 +725,19 @@ owner|Account name.|String|No leading @ symbol.| orderid|User defined ordernumber.|Integer|Used to cancel orders.| amountToSell|Amount to sell.|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| minToReceive|Amount desired.|String|"X.XXX ASSET" must have 3 decimal places. e.g. "20.120 STEEM"| -fillOrKill|Fill order from current order book or kill the order.|Boolean|False leaves the order in the Order Book until either filled or the epiration time.| +fillOrKill|Fill order from current order book or kill the order.|Boolean|`False` places the order into the Order Book until either cancelled, filled, or the expiration time is reached.| expiration|Time when order expires.|Integer|Unit milliseconds. Zero is UNIX epoch.| function()|Your callback.|function|| -Possibly risky tip: If you want to place an at market order, then use the minToReceive as 0.001 and fillOrKill as true (use at own risk) +Tip: `expiration` time must always be in the future even if `fillOrKill` is set to `true`. + +Risky tip: The Internal Market seems to always try and get the best price from the current orderbook so, to place an at market order, then use the `minToReceive` as `0.001` and `fillOrKill` as `true` (use at own risk). + +See also: [getOrderBook](#get-order-book), [getOpenOrders](#get-open-orders), [limitOrderCancel](#limit-order-cancel), [limitOrderCreate2](#limit-order-create2) ### Limit Order Create2 +Creates a limit order on the [internal market](http://steemit.com/market) to trade one asset for another using an exchange rate. Orders can be set attempt to fill immediately and or to go to the orderbook. Orders in the order book remain until filled or the expiration time is reached. + ```js steem.broadcast.limitOrderCreate2(wif, owner, orderid, amountToSell, exchangeRate, fillOrKill, expiration, function(err, result) { console.log(err, result); @@ -744,10 +752,12 @@ owner|Account name.|String|No leading @ symbol.| orderid|User defined ordernumber.|Integer|Used to cancel orders.| amountToSell|Amount to sell.|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| exchangeRate|The exchange rate.|Integer|amountToSell is is multiplied by the exchangeRate to get a minToReceive.| -fillOrKill|Fill order from current order book or kill the order.|Boolean|False leaves the order in the Order Book until either filled or the epiration time.| +fillOrKill|Fill order from current order book or kill the order.|Boolean|`False` places the order into the Order Book until either canceled, filled, or the expiration time is reached.| expiration|Time when order expires.|Integer|Unit milliseconds. Zero is UNIX epoch.| function()|Your callback.|function|| +See also: [getOrderBook](#get-order-book), [getOpenOrders](#get-open-orders), [limitOrderCancel](#limit-order-cancel), [limitOrderCreate](#limit-order-create2) + ### Liquidity Reward ```js steem.broadcast.liquidityReward(wif, owner, payout, function(err, result) { From cf0b4758b1b38b27fd12a53fa40e6f50bc42727c Mon Sep 17 00:00:00 2001 From: Stormrose Date: Mon, 29 Jan 2018 23:28:26 +1300 Subject: [PATCH 06/94] transferToVesting and transfer Also minor formatting and spelling improvements. --- doc/README.md | 51 +++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/doc/README.md b/doc/README.md index 4b7f5f28..6a324c51 100644 --- a/doc/README.md +++ b/doc/README.md @@ -721,13 +721,13 @@ steem.broadcast.limitOrderCreate(wif, owner, orderid, amountToSell, minToReceive |Parameter|Description|Datatype|Notes| |---|---|---|---| |wif|Active private key|String|| -owner|Account name.|String|No leading @ symbol.| -orderid|User defined ordernumber.|Integer|Used to cancel orders.| -amountToSell|Amount to sell.|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| -minToReceive|Amount desired.|String|"X.XXX ASSET" must have 3 decimal places. e.g. "20.120 STEEM"| -fillOrKill|Fill order from current order book or kill the order.|Boolean|`False` places the order into the Order Book until either cancelled, filled, or the expiration time is reached.| -expiration|Time when order expires.|Integer|Unit milliseconds. Zero is UNIX epoch.| -function()|Your callback.|function|| +owner|Account name|String|No leading @ symbol| +orderid|User defined ordernumber|Integer|Used to cancel orders| +amountToSell|Amount to sell|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| +minToReceive|Amount desired|String|"X.XXX ASSET" must have 3 decimal places. e.g. "20.120 STEEM"| +fillOrKill|Fill order from current order book or kill the order|Boolean|`false` places the order into the Order Book until either cancelled, filled, or the expiration time is reached| +expiration|Time when order expires|Integer|Unit milliseconds. Zero is UNIX epoch| +function()|Your callback|function|| Tip: `expiration` time must always be in the future even if `fillOrKill` is set to `true`. @@ -748,13 +748,13 @@ steem.broadcast.limitOrderCreate2(wif, owner, orderid, amountToSell, exchangeRat |Parameter|Description|Datatype|Notes| |---|---|---|---| |wif|Active private key|String|| -owner|Account name.|String|No leading @ symbol.| -orderid|User defined ordernumber.|Integer|Used to cancel orders.| -amountToSell|Amount to sell.|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| -exchangeRate|The exchange rate.|Integer|amountToSell is is multiplied by the exchangeRate to get a minToReceive.| -fillOrKill|Fill order from current order book or kill the order.|Boolean|`False` places the order into the Order Book until either canceled, filled, or the expiration time is reached.| -expiration|Time when order expires.|Integer|Unit milliseconds. Zero is UNIX epoch.| -function()|Your callback.|function|| +owner|Account name|String|No leading @ symbol| +orderid|User defined order identifier|Integer|Used to cancel orders| +amountToSell|Amount to sell|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| +exchangeRate|The exchange rate|Integer|`amountToSell` is multiplied by the `exchangeRate` to have the same effect as `minToReceive`| +fillOrKill|Fill order from current order book or kill the order|Boolean|`false` places the order into the Order Book until either canceled, filled, or the expiration time is reached| +expiration|Time when order expires|Integer|Unit milliseconds. Zero is UNIX epoch| +function()|Your callback|function|| See also: [getOrderBook](#get-order-book), [getOpenOrders](#get-open-orders), [limitOrderCancel](#limit-order-cancel), [limitOrderCreate](#limit-order-create2) @@ -807,17 +807,40 @@ steem.broadcast.setWithdrawVestingRoute(wif, fromAccount, toAccount, percent, au }); ``` ### Transfer +Transfers assets, such as STEEM or SBD, from one account to another. ```js steem.broadcast.transfer(wif, from, to, amount, memo, function(err, result) { console.log(err, result); }); ``` +|Parameter|Description|Datatype|Notes| +|---|---|---|---| +|wif|Active private key for the `from` account|String|| +from|Account name to take asset from|String|No leading @ symbol| +to|Account name to place asset into|String|No leading @ symbol| +amount|Amount of of asset to transfer|String|"X.XXX ASSET" must have 3 decimal places. e.g. "5.150 SBD"| +function()|Your callback|function|| + +See also: [transferToVesting](#transfer-to-vesting) + ### Transfer To Vesting +Vests STEEM into STEEM POWER. This method supports powering up one account from another. ```js steem.broadcast.transferToVesting(wif, from, to, amount, function(err, result) { console.log(err, result); }); ``` + +|Parameter|Description|Datatype|Notes| +|---|---|---|---| +|wif|Active private key for the `from` account|String|| +from|Account name to take STEEM from|String|No leading @ symbol| +to|Account name to vest STEEM POWER into|String|No leading @ symbol. Can be the same account as `to`| +amount|Amount of STEEM to vest/power up|String|"X.XXX STEEM" must have 3 decimal places. e.g. "25.100 STEEM". Must be denominated in STEEM| +function()|Your callback|function|| + +See also: [transfer](#transfer) + ### Vote ```js steem.broadcast.vote(wif, voter, author, permlink, weight, function(err, result) { From eab5357b529feb7059f9bf31f51d530113633695 Mon Sep 17 00:00:00 2001 From: Stormrose Date: Wed, 31 Jan 2018 05:38:12 +1300 Subject: [PATCH 07/94] Follow API and limitOrderCancel Various other fixes --- doc/README.md | 177 +++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 154 insertions(+), 23 deletions(-) diff --git a/doc/README.md b/doc/README.md index 6a324c51..9ef00d51 100644 --- a/doc/README.md +++ b/doc/README.md @@ -504,19 +504,106 @@ steem.api.getApiByName(apiName, function(err, result) { ``` ## Follow API +The follower API queries information about follow relationships between accounts. The API is read-only and does not create changes on the blockchain. + ### Get Followers +Returns an alphabetical ordered array of the accounts that are following a particular account. + ```js steem.api.getFollowers(following, startFollower, followType, limit, function(err, result) { console.log(err, result); }); ``` + +|Parameter|Description|Datatype|Notes| +|---|---|---|---| +|following|The followers of which account|String|No leading @ symbol| +|startFollower|Start the list from which follower?|String|No leading @symbol. Use the empty string `''` to start the list. Subsequent calls can use the name of the last follower| +|followType|??|??|Set to 0 or 'blog' - either works| +|limit|The maximum number of followers to return|Integer|| +|function()|Your callback|function|Tip: use `console.log(err, result)` to see the result| + + +Call Example: +```js +steem.api.getFollowers('ned', '', 'blog', 2, function(err, result) { + console.log(err, result); +}); +``` + +Return Example: +```js +[ + { follower: 'a-0-0', following: 'ned', what: [ 'blog' ] }, + { follower: 'a-0-0-0-1abokina', following: 'ned', what: [ 'blog' ] } +] +``` + +Using the Result: +```js +// Extract followers from the result into an array of account name strings +var f = result.map(function(item) { return item.follower; }); +console.log(f); + +// Get the last follower for subsequent calls to getFollowers +// or use: f[f.length - 1] if you used the extraction code above. +var lastKnownFollower = result[result.length - 1].follower; + +// Use the last known follower to get the next group of followers +steem.api.getFollowers('ned', lastKnownFollower, 'blog', 2, function(err, result) { + console.log(err, result); +}); +``` + +See also: [getFollowing](#get-following), [getFollowCount](#get-follow-count) + + + ### Get Following +Returns an alphabetical ordered Array of the accounts that are followed by a particular account. ```js steem.api.getFollowing(follower, startFollowing, followType, limit, function(err, result) { console.log(err, result); }); ``` + +|Parameter|Description|Datatype|Notes| +|---|---|---|---| +|follower|The account to get the following for|String|No leading @ symbol| +|startFollowing|Start the list at which followed account?|String|No leading @symbol. Use the empty string `''` to start the list| +|followType|??|??|Set to 0 or 'blog' - either works| +|limit|The maximum number of items to return|Integer|| +|function()|Your callback|function|Tip: use `console.log(err, result)` to see the result| + + +Call Example: +```js +steem.api.getFollowing('dan', '', 'blog', 2, function(err, result) { + console.log(err, result); +}); +``` + +Return Example: +```js +[ + { follower: 'dan', following: 'dantheman', what: [ 'blog' ] }, + { follower: 'dan', following: 'krnel', what: [ 'blog' ] } +] +``` + +Using the Result: +```js +// Extract followed accounts from the result into an array of account name strings +var f = result.map(function(item) { return item.following; }); +``` +See the usage examples for [getFollowers](#get-followers) because the behaviour is very similar. + + +See also: [getFollowers](#get-followers), [getFollowCount](#get-follow-count) + + + ### Get Follow Count ```js steem.api.getFollowCount(account, function(err, result) { @@ -524,6 +611,29 @@ steem.api.getFollowCount(account, function(err, result) { }); ``` +|Parameter|Description|Datatype|Notes| +|---|---|---|---| +|account|The name for get the follow ccount for|String|No leading @ symbol| +|function()|Your callback|function|Tip: use `console.log(err, result)` to see the result| + + +Call Example: +```js +steem.api.getFollowCount('ned', function(err, result) { + console.log(err, result); +}); +``` + +Return Example: +```js +{ account: 'ned', follower_count: 16790, following_count: 913 } +``` + + +See also: [getFollowers](#get-followers), [getFollowing](#get-following) + + + ## Broadcast API ### Broadcast Transaction Synchronous @@ -540,6 +650,7 @@ steem.api.broadcastBlock(b, function(err, result) { ``` # Broadcast +The `steem.broadcast` methods cause permanent changes on the blockchain. ### Account Create ```js @@ -704,11 +815,26 @@ steem.broadcast.interest(wif, owner, interest, function(err, result) { }); ``` ### Limit Order Cancel +Cancels an open limit order on the [internal market](http://steemit.com/market). Be aware that the order might be filled, or partially filled, before this call completes. + ```js steem.broadcast.limitOrderCancel(wif, owner, orderid, function(err, result) { console.log(err, result); }); ``` + +|Parameter|Description|Datatype|Notes| +|---|---|---|---| +|wif|Active private key|String|| +|owner|Account name|String|No leading @ symbol| +|orderid|User defined ordernumber|Integer|The `orderid` used when the order was created| +|function()|Your callback|function|| + + +See also: [getOpenOrders](#get-open-orders), [limitOrderCancel](#limit-order-cancel), [limitOrderCreate2](#limit-order-create2) + + + ### Limit Order Create Creates a limit order on the [internal market](http://steemit.com/market) to trade one asset for another using a specified minimum. Orders can be set attempt to fill immediately and or to go to the orderbook. Orders in the order book remain until filled or the expiration time is reached. @@ -721,20 +847,23 @@ steem.broadcast.limitOrderCreate(wif, owner, orderid, amountToSell, minToReceive |Parameter|Description|Datatype|Notes| |---|---|---|---| |wif|Active private key|String|| -owner|Account name|String|No leading @ symbol| -orderid|User defined ordernumber|Integer|Used to cancel orders| -amountToSell|Amount to sell|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| -minToReceive|Amount desired|String|"X.XXX ASSET" must have 3 decimal places. e.g. "20.120 STEEM"| -fillOrKill|Fill order from current order book or kill the order|Boolean|`false` places the order into the Order Book until either cancelled, filled, or the expiration time is reached| -expiration|Time when order expires|Integer|Unit milliseconds. Zero is UNIX epoch| -function()|Your callback|function|| +|owner|Account name|String|No leading @ symbol| +|orderid|User defined ordernumber|Integer|Used to cancel orders| +|amountToSell|Amount to sell|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| +|minToReceive|Amount desired|String|"X.XXX ASSET" must have 3 decimal places. e.g. "20.120 STEEM"| +|fillOrKill|Fill order from current order book or kill the order|Boolean|`false` places the order into the Order Book until either cancelled, filled, or the expiration time is reached| +|expiration|Time when order expires|Integer|Unit milliseconds. Zero is UNIX epoch| +|function()|Your callback|function|| Tip: `expiration` time must always be in the future even if `fillOrKill` is set to `true`. Risky tip: The Internal Market seems to always try and get the best price from the current orderbook so, to place an at market order, then use the `minToReceive` as `0.001` and `fillOrKill` as `true` (use at own risk). + See also: [getOrderBook](#get-order-book), [getOpenOrders](#get-open-orders), [limitOrderCancel](#limit-order-cancel), [limitOrderCreate2](#limit-order-create2) + + ### Limit Order Create2 Creates a limit order on the [internal market](http://steemit.com/market) to trade one asset for another using an exchange rate. Orders can be set attempt to fill immediately and or to go to the orderbook. Orders in the order book remain until filled or the expiration time is reached. @@ -742,22 +871,24 @@ Creates a limit order on the [internal market](http://steemit.com/market) to tra steem.broadcast.limitOrderCreate2(wif, owner, orderid, amountToSell, exchangeRate, fillOrKill, expiration, function(err, result) { console.log(err, result); }); - ``` |Parameter|Description|Datatype|Notes| |---|---|---|---| |wif|Active private key|String|| -owner|Account name|String|No leading @ symbol| -orderid|User defined order identifier|Integer|Used to cancel orders| -amountToSell|Amount to sell|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| -exchangeRate|The exchange rate|Integer|`amountToSell` is multiplied by the `exchangeRate` to have the same effect as `minToReceive`| -fillOrKill|Fill order from current order book or kill the order|Boolean|`false` places the order into the Order Book until either canceled, filled, or the expiration time is reached| -expiration|Time when order expires|Integer|Unit milliseconds. Zero is UNIX epoch| -function()|Your callback|function|| +|owner|Account name|String|No leading @ symbol| +|orderid|User defined order identifier|Integer|Used to cancel orders| +|amountToSell|Amount to sell|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| +|exchangeRate|The exchange rate|Integer|`amountToSell` is multiplied by the `exchangeRate` to have the same effect as `minToReceive`| +|fillOrKill|Fill order from current order book or kill the order|Boolean|`false` places the order into the Order Book until either canceled, filled, or the expiration time is reached| +|expiration|Time when order expires|Integer|Unit milliseconds. Zero is UNIX epoch| +|function()|Your callback|function|| + See also: [getOrderBook](#get-order-book), [getOpenOrders](#get-open-orders), [limitOrderCancel](#limit-order-cancel), [limitOrderCreate](#limit-order-create2) + + ### Liquidity Reward ```js steem.broadcast.liquidityReward(wif, owner, payout, function(err, result) { @@ -816,10 +947,10 @@ steem.broadcast.transfer(wif, from, to, amount, memo, function(err, result) { |Parameter|Description|Datatype|Notes| |---|---|---|---| |wif|Active private key for the `from` account|String|| -from|Account name to take asset from|String|No leading @ symbol| -to|Account name to place asset into|String|No leading @ symbol| -amount|Amount of of asset to transfer|String|"X.XXX ASSET" must have 3 decimal places. e.g. "5.150 SBD"| -function()|Your callback|function|| +|from|Account name to take asset from|String|No leading @ symbol| +|to|Account name to place asset into|String|No leading @ symbol| +|amount|Amount of of asset to transfer|String|"X.XXX ASSET" must have 3 decimal places. e.g. "5.150 SBD"| +|function()|Your callback|function|| See also: [transferToVesting](#transfer-to-vesting) @@ -834,10 +965,10 @@ steem.broadcast.transferToVesting(wif, from, to, amount, function(err, result) { |Parameter|Description|Datatype|Notes| |---|---|---|---| |wif|Active private key for the `from` account|String|| -from|Account name to take STEEM from|String|No leading @ symbol| -to|Account name to vest STEEM POWER into|String|No leading @ symbol. Can be the same account as `to`| -amount|Amount of STEEM to vest/power up|String|"X.XXX STEEM" must have 3 decimal places. e.g. "25.100 STEEM". Must be denominated in STEEM| -function()|Your callback|function|| +|from|Account name to take STEEM from|String|No leading @ symbol| +|to|Account name to vest STEEM POWER into|String|No leading @ symbol. Can be the same account as `to`| +|amount|Amount of STEEM to vest/power up|String|"X.XXX STEEM" must have 3 decimal places. e.g. "25.100 STEEM". Must be denominated in STEEM| +|function()|Your callback|function|| See also: [transfer](#transfer) From a2ace773cbc4bef3c17832a58e9e573ced4d8618 Mon Sep 17 00:00:00 2001 From: Stormrose Date: Thu, 8 Feb 2018 21:42:44 +1300 Subject: [PATCH 08/94] Various additions. Documentation for: getTrendingTags, getHardforkVersion, getVestingDelegations, getWitnessByAccount Brief intro for: delegateVestingShares --- doc/README.md | 116 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 2 deletions(-) diff --git a/doc/README.md b/doc/README.md index 9ef00d51..efca0a72 100644 --- a/doc/README.md +++ b/doc/README.md @@ -95,11 +95,54 @@ steem.api.cancelAllSubscriptions(function(err, result) { ## Tags ### Get Trending Tags +Returns a list of the currently trending tags in descending order by value. + ```js steem.api.getTrendingTags(afterTag, limit, function(err, result) { console.log(err, result); }); ``` + +|Parameter|Description|Datatype|Notes| +|---|---|---|---| +|afterTag|The name of the last tag to begin from|String|Use the empty string `''` to start the list. Subsequent calls can use the last tag name| +|limit|The maximum number of tags to return|Integer|| +|function()|Your callback|function|Tip: use `console.log(err, result)` to see the result| + + +Call Example: +```js +steem.api.getTrendingTags('', 2, function(err, result) { + console.log(err, result); +}); +``` + +Return Example: +```js +[ { name: '', total_payouts: '37610793.383 SBD', net_votes: 4211122, top_posts: 411832, comments: 1344461, trending: '5549490701' }, + { name: 'life', total_payouts: '8722947.658 SBD', net_votes: 1498401, top_posts: 127103, comments: 54049, trending: '570954588' } +] +``` + +Using the Result: +```js +// Extract tags from the result into an array of tag name strings +var f = result.map(function(item) { return item.name; }); +console.log(f); + +// Get the last tag for subsequent calls to `getTrendingTags` +// or use: f[f.length - 1] if you used the extraction code above. +var lastKnownTag = result[result.length - 1].name; + +// Use the last known tag to get the next group of tags +steem.api.TrendingTags(lastKnownTag, 2, function(err, result) { + console.log(err, result); +}); +``` + +See also: [getTrendingCategories](#get-trending-categories) + + ### Get Discussions By Trending ```js steem.api.getDiscussionsByTrending(query, function(err, result) { @@ -245,11 +288,22 @@ steem.api.getCurrentMedianHistoryPrice(function(err, result) { }); ``` ### Get Hardfork Version +Gets the current hardfork version of the STEEM blockchain. ```js steem.api.getHardforkVersion(function(err, result) { console.log(err, result); }); ``` + +Return Example: +```js +'0.19.0' +``` +This returns a string and not JSON. + +See also: [getNextScheduledHardfork](#get-next-scheduled-hardfork), [getConfig](#get-config) + + ### Get Next Scheduled Hardfork ```js steem.api.getNextScheduledHardfork(function(err, result) { @@ -263,12 +317,55 @@ steem.api.getRewardFund(name, function(err, result) { }); ``` ### Get Vesting Delegations +Returns a list of delegations made from one `account`. Denominated in VESTS. ```js steem.api.getVestingDelegations(account, from, limit, function(err, result) { console.log(err, result); }); ``` +|Parameter|Description|Datatype|Notes| +|---|---|---|---| +|account|Account who is making the delegations|String|| +|from|The name of the last account to begin from|String|Use the empty string `''` to start the list. Subsequent calls can use the last delegatee's account name| +|limit|The maximum number of delegation records to return|Integer|| +|function()|Your callback|function|Tip: use `console.log(err, result)` to see the result| + + +Call Example: +```js +steem.api.getVestingDelegations('ned', '', 2, function(err, result) { + console.log(err, result); +}); +``` + +Return Example: +```js +[ + { id: 498422, delegator: 'ned', delegatee: 'spaminator', vesting_shares: '409517519.233783 VESTS', min_delegation_time: '2018-01-16T19:30:36' }, + { id: 181809, delegator: 'ned', delegatee: 'surpassinggoogle', vesting_shares: '1029059275.000000 VESTS', min_delegation_time: '2017-08-08T15:25:15' } +] +``` + +Using the Result: +```js +// Extract delegatee names from the result into an array of account name strings +var f = result.map(function(item) { return item.delegatee; }); +console.log(f); + +// Get the last tag for subsequent calls to `getVestingDelegations` +// or use: f[f.length - 1] if you used the extraction code above. +var lastKnownDelegatee = result[result.length - 1].delegatee; + +// Use the last known delegatee to get the next group of delegatees +steem.api.TrendingTags('ned', lastKnownDelegatee, 2, function(err, result) { + console.log(err, result); +}); +``` + +See also: [accountCreateWithDelegation](#account-create-with-delegation), [delegateVestingShares](#delegate-vesting-shares) + + ## Keys ### Get Key References @@ -412,7 +509,6 @@ steem.api.getAccountVotes(voter, function(err, result) { ## Content - ### Get Content ```js steem.api.getContent(author, permlink, function(err, result) { @@ -440,19 +536,34 @@ steem.api.getRepliesByLastUpdate(startAuthor, startPermlink, limit, function(err ## Witnesses - ### Get Witnesses ```js steem.api.getWitnesses(witnessIds, function(err, result) { console.log(err, result); }); ``` + ### Get Witness By Account +Returns information about a witness with the given `accountName`. ```js steem.api.getWitnessByAccount(accountName, function(err, result) { console.log(err, result); }); ``` +|Parameter|Description|Datatype|Notes| +|---|---|---|---| +|accountName|The account name of the witness to query|String|| +|function()|Your callback|function|Tip: use `console.log(err, result)` to see the result| + +Call Example: +```js +steem.api.getVestingDelegations('sircork', '', 2, function(err, result) { + console.log(err, result); +}); +``` + +See also: + ### Get Witnesses By Vote ```js steem.api.getWitnessesByVote(from, limit, function(err, result) { @@ -665,6 +776,7 @@ steem.broadcast.accountCreateWithDelegation(wif, fee, delegation, creator, newAc }); ``` ### Delegate Vesting Shares +Delegates STEEM POWER, denominated in VESTS, from a `delegator` to the `delegatee`. Requires the `delegator`'s private WIF key. Set the delegation to 0 to undelegate. ```js steem.broadcast.delegateVestingShares(wif, delegator, delegatee, vesting_shares, function(err, result) { console.log(err, result); From a50c9b3c572c42526e8bb3def338fcce76b65f6d Mon Sep 17 00:00:00 2001 From: "@justyy" Date: Thu, 8 Feb 2018 11:17:31 +0000 Subject: [PATCH 09/94] Fix ISSUE-344 Regarding https://github.com/steemit/steem-js/issues/344 Hello, the previous method has round error and failed at input 10004392664120 ``` console.log(reputation(95832978796820)); console.log(reputation(10004392664120)); console.log(reputation(30999525306309)); console.log(reputation(-37765258368568)); ``` should output ``` 69 61 65 -16 ``` --- src/formatter.js | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/formatter.js b/src/formatter.js index b794afd1..6ee5f9d6 100644 --- a/src/formatter.js +++ b/src/formatter.js @@ -150,21 +150,12 @@ module.exports = steemAPI => { return { reputation: function(reputation) { if (reputation == null) return reputation; - reputation = parseInt(reputation); + let neg = reputation < 0; let rep = String(reputation); - const neg = rep.charAt(0) === "-"; rep = neg ? rep.substring(1) : rep; - const str = rep; - const leadingDigits = parseInt(str.substring(0, 4)); - const log = Math.log(leadingDigits) / Math.log(10); - const n = str.length - 1; - let out = n + (log - parseInt(log)); - if (isNaN(out)) out = 0; - out = Math.max(out - 9, 0); - out = (neg ? -1 : 1) * out; - out = out * 9 + 25; - out = parseInt(out); - return out; + let v = (Math.log10((rep > 0 ? rep : -rep) - 10) - 9); + v = neg ? -v : v; + return parseInt(v * 9 + 25); }, vestToSteem: function( From 7a37d077a4cf1ffd2d5bbba3081533a7e78303fc Mon Sep 17 00:00:00 2001 From: Alexander Dinkov Date: Mon, 12 Feb 2018 02:23:22 +0200 Subject: [PATCH 10/94] improved doc/README.md added documentation for a lot of new methods & improved overall documentation style. --- doc/README.md | 1448 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 1385 insertions(+), 63 deletions(-) diff --git a/doc/README.md b/doc/README.md index efca0a72..e09c30c1 100644 --- a/doc/README.md +++ b/doc/README.md @@ -23,11 +23,15 @@ - [Auth](#auth) - [Formatter](#formatter) +- - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - # Install ```sh $ npm install steem --save ``` +- - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - # Browser ```html @@ -37,7 +41,7 @@ steem.api.getAccounts(['ned', 'dan'], function(err, response){ }); ``` - +- - - - - - - - - - - - - - - - - - ## Config Default config should work with steem. however you can change it to work with golos as @@ -46,54 +50,59 @@ steem.api.setOptions({ url: 'wss://ws.golos.io' }); // assuming websocket is wor steem.config.set('address_prefix','GLS'); steem.config.set('chain_id','782a3039b478c839e4cb0c941ff4eaeb7df40bdd68bd441afd444b9da763de12'); ``` - +- - - - - - - - - - - - - - - - - - ### set ```js steem.config.set('address_prefix','STM'); ``` - +- - - - - - - - - - - - - - - - - - ### get ```js steem.config.get('chain_id'); ``` - +- - - - - - - - - - - - - - - - - - ## JSON-RPC Here is how to activate JSON-RPC transport: ```js steem.api.setOptions({ url: 'https://api.steemit.com' }); ``` +- - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - # API - +- - - - - - - - - - - - - - - - - - ## Subscriptions - +- - - - - - - - - - - - - - - - - - ### Set Subscribe Callback ```js steem.api.setSubscribeCallback(callback, clearFilter, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Set Pending Transaction Callback ```js steem.api.setPendingTransactionCallback(cb, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Set Block Applied Callback ```js steem.api.setBlockAppliedCallback(cb, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Cancel All Subscriptions ```js steem.api.cancelAllSubscriptions(function(err, result) { console.log(err, result); }); ``` - +- - - - - - - - - - - - - - - - - - ## Tags - +- - - - - - - - - - - - - - - - - - ### Get Trending Tags Returns a list of the currently trending tags in descending order by value. @@ -141,152 +150,694 @@ steem.api.TrendingTags(lastKnownTag, 2, function(err, result) { ``` See also: [getTrendingCategories](#get-trending-categories) +- - - - - - - - - - - - - - - - - - +### Get Blog +Gets the last [limit] number of posts of [account] before the post with index [entryId] + +```js +steem.api.getBlog(account, entryId, limit, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|account|string|a steem username| +|entryId|number|a positive number - the index from which to start counting (the index is zero based)| +|limit|number|a positive number - the max count of posts to be returned| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getBlog("username", 10, 3, function(err, data){ + console.log(err, data); +}); + +// In this case we have a call to get [3] posts, the newest of which is the one with index [10] +// (that's the 11-th post, because the post indexes are zero based) +// That means that the results will be posts [10, 9 and 8] +``` + +Return Example: +```js +[ + { + blog:"username" + comment: { /* Omited for simplicity */ } + entry_id: 10 + reblog_on:"1970-01-01T00:00:00" + }, + { + blog:"username" + comment: { /* Omited for simplicity */ } + entry_id: 9 + reblog_on:"1970-01-01T00:00:00" + }, + { + blog:"username" + comment: { /* Omited for simplicity */ } + entry_id: 8 + reblog_on:"1970-01-01T00:00:00" + + } +] +``` +- - - - - - - - - - - - - - - - - - +### Get Blog Authors +Gets a list of all people who wrote in someones blog, along with how many times they wrote in that blog. + + +```js +steem.api.getBlogAuthors(blogAccount, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|blogAccount|string|a steem username| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getBlogAuthors("username", function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js +[ [ 'username1', 1 ], + [ 'username2', 1 ], + [ 'username3', 3 ], + [ 'username4', 2 ], + [ 'username5', 1 ] ] +``` +- - - - - - - - - - - - - - - - - - +### Get Blog Entries +Gets the last [limit] number of posts of [account] before the post with index [entryId] +Very similar to steem.api.getBlog but with much simpler result objects + +```js +steem.api.getBlogEntries(account, entryId, limit, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|account|string|a steem username| +|entryId|number|a positive number - the index from which to start counting (the index is zero based)| +|limit|number|a positive number - the max count of posts to be returned| +|callback|function|function(err, data) {/*code*/}| + +Call Example: +```js +steem.api.getBlogEntries("username", 10, 3, function(err, data){ + console.log(err, data); +}); +// In this case we have a call to get [3] posts, the newest of which is the one with index [10] +// (that's the 11-th post, because the post indexes are zero based) +// That means that the results will be posts [10, 9 and 8] +``` + +Return Example: +```js +[ { author: 'username', + permlink: 'post-permlink-10', + blog: 'username', + reblog_on: '1970-01-01T00:00:00', + entry_id: 10 }, + { author: 'username', + permlink: 'post-permlink-9', + blog: 'username', + reblog_on: '1970-01-01T00:00:00', + entry_id: 9 }, + { author: 'username', + permlink: 'post-permlink-8', + blog: 'username', + reblog_on: '1970-01-01T00:00:00', + entry_id: 8 } ] +``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Trending +Gets the steem posts as they would be shown in the trending tab of [steemit.com] + ```js -steem.api.getDiscussionsByTrending(query, function(err, result) { - console.log(err, result); +steem.api.getDiscussionsByTrending30(query, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|query|object|an object containing different options for querying, like 'limit' and 'tag'| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +var query = { limit : 3, tag : "steem" }; +steem.api.getDiscussionsByTrending30(query, function(err, data){ + console.log(err, data); }); + +// NOTE! The default limit is 0. Not setting a limit will get you an empty result. +``` + +Return Example: +```js +// the result is an array of big objects representing the comments + + [ { /* ommited for simplicity */ }, + { /* ommited for simplicity */ }, + { /* ommited for simplicity */ } ] ``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Created ```js steem.api.getDiscussionsByCreated(query, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Active ```js steem.api.getDiscussionsByActive(query, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Cashout ```js steem.api.getDiscussionsByCashout(query, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Payout ```js steem.api.getDiscussionsByPayout(query, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Votes ```js steem.api.getDiscussionsByVotes(query, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Children ```js steem.api.getDiscussionsByChildren(query, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Hot ```js steem.api.getDiscussionsByHot(query, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Feed ```js steem.api.getDiscussionsByFeed(query, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Blog ```js steem.api.getDiscussionsByBlog(query, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Comments ```js steem.api.getDiscussionsByComments(query, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Get Discussions By Promoted +Gets the recent posts ordered by how much was spent to promote them -## Blocks and transactions +```js +steem.api.getDiscussionsByPromoted(query, callback); +``` +|Parameter|Datatype|Description| +|---------|--------|-----------| +|query|object|an object containing different options for querying, like 'limit' and 'tag'| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +var query = { limit : 3, tag : "steem" }; +steem.api.getDiscussionsByPromoted(query, function(err, data){ + console.log(err, data); +}); + +// NOTE! The default limit is 0. Not setting a limit will get you an empty result. +``` + +Return Example: +```js +// the result is an array of big objects representing the comments + + [ { /* ommited for simplicity */ }, + { /* ommited for simplicity */ }, + { /* ommited for simplicity */ } ] +``` +- - - - - - - - - - - - - - - - - - +### Get Comment Discussions By Payout +Gets the recent comments (not posts) ordered by their pending payout. + +```js +steem.api.getCommentDiscussionsByPayout(query, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|query|object|an object containing different options for querying, like 'limit' and 'tag'| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +var query = { limit : 3, tag : "steem" }; +steem.api.getCommentDiscussionsByPayout(query, function(err, data) +{ + console.log(err, data); +}); + +// NOTE! The default limit is 0. Not setting a limit will get you an empty result. +``` + +Return Example: +```js +// the result is an array of big objects representing the comments + + [ { /* ommited for simplicity */ }, + { /* ommited for simplicity */ }, + { /* ommited for simplicity */ } ] +``` +- - - - - - - - - - - - - - - - - - +### Get Post Discussions By Payout +Gets the recent posts ordered by their pending payout. + +```js +steem.api.getPostDiscussionsByPayout(query, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|query|object|an object containing different options for querying, like 'limit' and 'tag'| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +var query = { limit : 3, tag : "collorchallenge" }; +steem.api.getPostDiscussionsByPayout(query, function(err, data) +{ + console.log(err, data); +}); + +// NOTE! The default limit is 0. Not setting a limit will get you an empty result. +``` + +Return Example: +```js +// the result is an array of big objects representing the comments + + [ { /* ommited for simplicity */ }, + { /* ommited for simplicity */ }, + { /* ommited for simplicity */ } ] +``` +- - - - - - - - - - - - - - - - - - +## Blocks and transactions +- - - - - - - - - - - - - - - - - - ### Get Block Header ```js steem.api.getBlockHeader(blockNum, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Block ```js steem.api.getBlock(blockNum, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Get Ops In Block +Gets all operations in a given block + +```js +steem.api.getOpsInBlock(blockNum, onlyVirtual, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|blockNum|number|A positive number| +|onlyVirtual|bool|'false' to get all operations. 'true' to only get virtual operations| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getOpsInBlock(10000001, false, function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js +[ { trx_id: '4b688c13940fd5b4bb11356286ef12061f71976c', + block: 10000001, + trx_in_block: 0, + op_in_trx: 0, + virtual_op: 0, + timestamp: '2017-03-08T17:34:24', + op: [ 'vote', [Object] ] }, + { trx_id: 'a450debc8332c3b27935b3307891dfc509669edc', + block: 10000001, + trx_in_block: 2, + op_in_trx: 0, + virtual_op: 0, + timestamp: '2017-03-08T17:34:24', + op: [ 'vote', [Object] ] } ] + +``` +- - - - - - - - - - - - - - - - - - ### Get State +Gets a lot of information about the state of [path] + ```js -steem.api.getState(path, function(err, result) { - console.log(err, result); +steem.api.getStateWith(path, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|path|string| like "/@username". This is the extension from the Steem URL. It can be used on users, posts, comments, comments-by-user, replies-to-user and so on| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getState("/@username", function(err, data){ + console.log(err, data); }); + +// Here are some valid calls: + +steem.api.getState("/@username", function(err, data){ console.log(data); }); + +steem.api.getState("/@username/permlink-of-post", function(err, data){ console.log(data); }); + +steem.api.getState("/@username/comments", function(err, data){ console.log(data); }); + +steem.api.getState("/@username/recent-replies", function(err, data){ console.log(data); }); + +steem.api.getState("/trending", function(err, data){ console.log(data); }); + +steem.api.getState("/trending/collorchallenge", function(err, data){ console.log(data); }); + +// and others.... +``` + +Return Example: +```js + // The result is huge, and can have many variations, depending on what you are getting the state of. It simply can't be documented properly. Here are some pointers though: +{ accounts: {username: {...}} + content: { + username/permlink1: {...}, + username/permlink2: {...}, + username/permlink3: {...} …} + current_route:"/@username" + discussion_idx: {...} + error:"" + feed_price: {base: "3.889 SBD", quote: "1.000 STEEM"} + pow_queue: [] + props: {...} + tag_idx: { trending: [...] } + tags:{...} + witness_schedule: {...} + witnesses: {...} } ``` +- - - - - - - - - - - - - - - - - - +### Get State With Options + +```js +steem.api.getStateWith(options, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|options|object|like { path : "/@username"} where the path is an extension from a Steem URL. It can be used on users, posts, comments, comments-by-user, replies-to-user and so on| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getStateWith({ path : "/@username" }, function(err, data){ + console.log(err, data); +}); +``` +See `steem.api.getState` for more examples... +- - - - - - - - - - - - - - - - - - ### Get Trending Categories ```js steem.api.getTrendingCategories(after, limit, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Best Categories ```js steem.api.getBestCategories(after, limit, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Active Categories ```js steem.api.getActiveCategories(after, limit, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Recent Categories ```js steem.api.getRecentCategories(after, limit, function(err, result) { console.log(err, result); }); ``` - +- - - - - - - - - - - - - - - - - - ## Globals - +- - - - - - - - - - - - - - - - - - ### Get Config ```js steem.api.getConfig(function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Dynamic Global Properties ```js steem.api.getDynamicGlobalProperties(function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Chain Properties ```js steem.api.getChainProperties(function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Get Feed Entries +Gets the posts in the feed of a user. +The feed displays posts of followed users, as well as what they resteemed. + +```js +steem.api.getFeedEntries(account, entryId, limit, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|account|string|a steem username| +|entryId|number|the post id from which to start counting. Write '0' to start from newest post| +|limit|number|a positive number| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getFeedEntries("username", 0, 2, function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js +[ { author: 'otherusername', + permlink: 'permlink', + reblog_by: [ 'resteembot' ], //full when post is in feed because it's resteemed + reblog_on: '2018-02-11T18:42:54', + entry_id: 10260 }, + { author: 'otherusername', + permlink: 'permlink', + reblog_by: [ ], // false when post is in feed because user follows it's author + reblog_on: '2018-02-11T18:39:24', + entry_id: 10259 } ] +``` +- - - - - - - - - - - - - - - - - - ### Get Feed History ```js steem.api.getFeedHistory(function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Current Median History Price ```js steem.api.getCurrentMedianHistoryPrice(function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Get Ticker +Gets the lates summorized data from the steem market. + +```js +steem.api.getTicker(callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getTicker(function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js +{ latest: '0.89732142857142860', + lowest_ask: '0.89684014869888484', + highest_bid: '0.89600000000000002', + percent_change: '-14.56712923228768730', + steem_volume: '7397.697 STEEM', + sbd_volume: '6662.316 SBD' } +``` +- - - - - - - - - - - - - - - - - - +### Get Trade History +Gets the trade history for a given period between a [start] date and an [end] date + +```js +steem.api.getTradeHistory(start, end, limit, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|start|string|Datetime string in the format "2018-01-01T00:00:00"| +|end|string|Datetime string in the format "2018-01-01T00:00:00"| +|limit|number|a positive number| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +var start = "2018-01-01T00:00:00"; +var end = "2018-01-02T00:00:00"; + +steem.api.getTradeHistory(start, end, 5, function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js + [ { date: '2018-01-01T00:00:09', + current_pays: '10.192 SBD', + open_pays: '25.650 STEEM' }, + { date: '2018-01-01T00:00:09', + current_pays: '2.000 SBD', + open_pays: '5.033 STEEM' }, + { date: '2018-01-01T00:00:12', + current_pays: '13.560 SBD', + open_pays: '34.128 STEEM' }, + { date: '2018-01-01T00:00:12', + current_pays: '3.057 SBD', + open_pays: '7.690 STEEM' }, + { date: '2018-01-01T00:00:12', + current_pays: '6.908 SBD', + open_pays: '17.375 STEEM' } ] +``` +- - - - - - - - - - - - - - - - - - +### Get Version +Gets the version of the Steem blockchain you are connected to. + +```js +steem.api.getVersion(callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getVersion(function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js +{ blockchain_version: '0.19.2', + steem_revision: '07be64314ce9d277eb7da921b459c993c2e2412c', + fc_revision: '8dd1fd1ec0906509eb722fa7c8d280d59bcca23d' } +``` +- - - - - - - - - - - - - - - - - - +### Get Volume +Gets the Steem and Steem Dollar volumes + +```js +steem.api.getVolume(callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getVolume(function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js +{ + steem_volume: '8101.888 STEEM', + sbd_volume: '7287.268 SBD' +} +``` +- - - - - - - - - - - - - - - - - - ### Get Hardfork Version Gets the current hardfork version of the STEEM blockchain. ```js @@ -303,19 +854,100 @@ This returns a string and not JSON. See also: [getNextScheduledHardfork](#get-next-scheduled-hardfork), [getConfig](#get-config) - +- - - - - - - - - - - - - - - - - - ### Get Next Scheduled Hardfork ```js steem.api.getNextScheduledHardfork(function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Reward Fund ```js steem.api.getRewardFund(name, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Claim Reward Balance +Claims pending rewards, be they Steem, SBD or Vests. + +```js +steem.broadcast.claimRewardBalance(wif, account, reward_steem, reward_sbd, reward_vests, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|wif|string|Use steem.auth.toWif(user, pass, type)| +|account|string|a steem username| +|reward_steem|string|balance like "0.000 STEEM"| +|reward_sbd|string|balance like "0.000 SBD"| +|reward_vests|string|balance like "0.000006 VESTS"| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.broadcast.claimRewardBalance("5Hupd....pp7vGY", "username", "0.000 STEEM", "0.000 SBD", "0.000006 VESTS", function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js +{ id: '052f.......c6c2f', + block_num: 19756287, + trx_num: 40, + expired: false, + ref_block_num: 29928, + ref_block_prefix: 808836877, + expiration: '2018-02-10T20:12:15', + operations: [ [ 'claim_reward_balance', [Object] ] ], + extensions: [], + signatures: [ '205......614e' ] } +``` +- - - - - - - - - - - - - - - - - - +### Claim Reward Balance With Options +Claims pending rewards, be they Steem, SBD or Vests. + +```js +steem.broadcast.claimRewardBalanceWith(wif, options, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|wif|string|Use < steem.auth.toWif(user, pass, type) >| +|options|object|an object containing the calim parameters. Look at the example below.| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +var options = { + account:"username", + reward_sbd:"0.000 SBD", + reward_steem:"0.000 STEEM", + reward_vests:"0.000006 VESTS" +} +steem.broadcast.claimRewardBalanceWith("5Hupd....pp7vGY", options, function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js + { id: '4b7b........034c7', + block_num: 19756322, + trx_num: 3, + expired: false, + ref_block_num: 29965, + ref_block_prefix: 4245658614, + expiration: '2018-02-10T20:14:00', + operations: [ [ 'claim_reward_balance', [Object] ] ], + extensions: [], + signatures: [ '1f61a..........4f3d7' ] } +``` +- - - - - - - - - - - - - - - - - - ### Get Vesting Delegations Returns a list of delegations made from one `account`. Denominated in VESTS. ```js @@ -365,184 +997,445 @@ steem.api.TrendingTags('ned', lastKnownDelegatee, 2, function(err, result) { See also: [accountCreateWithDelegation](#account-create-with-delegation), [delegateVestingShares](#delegate-vesting-shares) - +- - - - - - - - - - - - - - - - - - ## Keys - +- - - - - - - - - - - - - - - - - - ### Get Key References ```js steem.api.getKeyReferences(key, function(err, result) { console.log(err, result); }); ``` - +- - - - - - - - - - - - - - - - - - ## Accounts - +- - - - - - - - - - - - - - - - - - ### Get Accounts ```js steem.api.getAccounts(names, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Account References ```js steem.api.getAccountReferences(accountId, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Lookup Account Names ```js steem.api.lookupAccountNames(accountNames, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Lookup Accounts ```js steem.api.lookupAccounts(lowerBoundName, limit, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Account Count ```js steem.api.getAccountCount(function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Conversion Requests ```js steem.api.getConversionRequests(accountName, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Account History ```js steem.api.getAccountHistory(account, from, limit, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Owner History ```js steem.api.getOwnerHistory(account, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Recovery Request ```js -steem.api.getRecoveryRequest(account, function(err, result) { - console.log(err, result); -}); +steem.api.getRecoveryRequest(account, function(err, result) { + console.log(err, result); +}); +``` +- - - - - - - - - - - - - - - - - - +### Get Account Bandwidth +Get the bandwidth of the [account]. +The bandwidth is the limit of data that can be uploaded to the blockchain. +To have bigger bandwidth - power up your steem. + +```js +steem.api.getAccountBandwidth(account, bandwidthType, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|account|string|a steem username| +|bandwidthType|number|This is a value from an enumeration of predefined values. '1' is for the "Forum" bandwidth, and '2' is for "Market" bandwidth| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +const forumBandwidthType = 1; +const marketBandwidthType = 2; + +steem.api.getAccountBandwidth("username", 1, function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js +{ id: 23638, + account: 'username', + type: 'forum', + average_bandwidth: 260815714, + lifetime_bandwidth: '125742000000', + last_bandwidth_update: '2018-02-07T22:30:42' } +``` +- - - - - - - - - - - - - - - - - - +### Get Account Bandwidth With Options +Get the bandwidth of the user specified in the options. + +```js +steem.api.getAccountBandwidthWith(options, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|options|object|like { account: "username", bandwidthType: 1 } where bandwidthType is the value of an enumeration. 1 is "forum" and 2 is "market". They represent the bandwidths for posting and trading respectively| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +var options = { + account: "username", + bandwidthType: 2 +} +steem.api.getAccountBandwidthWith(options , function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js +{ id: 23675, + account: 'username', + type: 'market', + average_bandwidth: 2608157142, + lifetime_bandwidth: '94940000000', + last_bandwidth_update: '2018-02-07T22:30:42' } +``` +- - - - - - - - - - - - - - - - - - +### Get Account Reputations +Gets the reputation points of [limit] accounts with names most similar to [lowerBoundName]. + +```js +steem.api.getAccountReputations(lowerBoundName, limit, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|lowerBoundName|string|a steem username query| +|limit|number|a positive number| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getAccountReputations("username", 5, function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js + [ { account: 'username', reputation: '26727073581' }, + { account: 'username-taken', reputation: 0 }, + { account: 'username01', reputation: 0 }, + { account: 'username1998', reputation: 0 }, + { account: 'username404', reputation: 0 } ] +``` +- - - - - - - - - - - - - - - - - - +## Market +- - - - - - - - - - - - - - - - - - +### Get Order Book +```js +steem.api.getOrderBook(limit, function(err, result) { + console.log(err, result); +}); +``` +- - - - - - - - - - - - - - - - - - +### Get Market Order Book +Takes the top-most [limit] entries in the market order book for both buy and sell orders. + +```js +steem.api.getMarketOrderBook(limit, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|limit|number|a positive number| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getMarketOrderBook(3, function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js + { bids: + [ { price: '0.91116173120728938', steem: 2195, sbd: 2000 }, + { price: '0.91089965397923878', steem: 1156, sbd: 1053 }, + { price: '0.91083253129468766', steem: 2032, sbd: 1851 } ], + asks: + [ { price: '0.91145625249700357', steem: 9053, sbd: 8251 }, + { price: '0.91159226975214813', steem: 16184, sbd: 14753 }, + { price: '0.91190953857377344', steem: 18676, sbd: 17030 } ] } +``` +- - - - - - - - - - - - - - - - - - +### Get Market Order Book With Options +Takes the top-most [limit] entries in the market order book for both buy and sell orders. + +```js +steem.api.getMarketOrderBookWith(options, callback); ``` -## Market +|Parameter|Datatype|Description| +|---------|--------|-----------| +|options|object|like { limit:number }| +|callback|function|function(err, data) {/*code*/}| -### Get Order Book + +Call Example: ```js -steem.api.getOrderBook(limit, function(err, result) { - console.log(err, result); +steem.api.getMarketOrderBookWith({ limit: 3 }, function(err, data){ + console.log(err, data); }); ``` + +Return Example: +```js + { bids: + [ { price: '0.90160333845815954', steem: 9106, sbd: 8210 }, + { price: '0.90152855993563952', steem: 12430, sbd: 11206 }, + { price: '0.89992800575953924', steem: 5556, sbd: 5000 } ], + asks: + [ { price: '0.91004578507945044', steem: 5055, sbd: 4600 }, + { price: '0.91103965702036438', steem: 15853, sbd: 14442 }, + { price: '0.91112433075550281', steem: 5874, sbd: 5351 } ] } +``` +- - - - - - - - - - - - - - - - - - ### Get Open Orders ```js steem.api.getOpenOrders(owner, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Liquidity Queue ```js steem.api.getLiquidityQueue(startAccount, limit, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Get Market History Buckets -## Authority / validation +```js +steem.api.getMarketHistoryBuckets(callback); +``` +|Parameter|Datatype|Description| +|---------|--------|-----------| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getMarketHistoryBuckets(function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js + [ 15, 60, 300, 3600, 86400 ] +``` +- - - - - - - - - - - - - - - - - - +## Authority / validation +- - - - - - - - - - - - - - - - - - ### Get Transaction Hex ```js steem.api.getTransactionHex(trx, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Transaction ```js steem.api.getTransaction(trxId, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Required Signatures ```js steem.api.getRequiredSignatures(trx, availableKeys, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Potential Signatures ```js steem.api.getPotentialSignatures(trx, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Verify Authority ```js steem.api.verifyAuthority(trx, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Verify Account Authority ```js steem.api.verifyAccountAuthority(nameOrId, signers, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Get Tags Used By Author +Gets tags used by a steem user. Most users have no tags yet, but some do. + +```js +steem.api.getTagsUsedByAuthor(author, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|author|string|a steem username| +|callback|function|function(err, data) {/*code*/}| -## Votes +Call Example: +```js +steem.api.getTagsUsedByAuthor("good-karma", function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js + [ [ 'challenge', 0 ] ] +``` +- - - - - - - - - - - - - - - - - - +## Votes +- - - - - - - - - - - - - - - - - - ### Get Active Votes ```js steem.api.getActiveVotes(author, permlink, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Account Votes ```js steem.api.getAccountVotes(voter, function(err, result) { console.log(err, result); }); ``` - +- - - - - - - - - - - - - - - - - - ## Content - +- - - - - - - - - - - - - - - - - - ### Get Content ```js steem.api.getContent(author, permlink, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Content Replies ```js steem.api.getContentReplies(author, permlink, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Discussions By Author Before Date ```js steem.api.getDiscussionsByAuthorBeforeDate(author, startPermlink, beforeDate, limit, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Get Reblogged By +Gives a list of the users that reblogged (resteemed) a given post + +```js +steem.api.getRebloggedBy(author, permlink, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|author|string|a steem username| +|permlink|string|a permalink of comment or post| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getRebloggedBy("author", "example-permlink", function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js + [ 'author', + 'user1' , + 'user2', + 'user3', + 'user4' ] +``` +- - - - - - - - - - - - - - - - - - ### Get Replies By Last Update ```js steem.api.getRepliesByLastUpdate(startAuthor, startPermlink, limit, function(err, result) { console.log(err, result); }); ``` - +- - - - - - - - - - - - - - - - - - ## Witnesses - +- - - - - - - - - - - - - - - - - - ### Get Witnesses ```js steem.api.getWitnesses(witnessIds, function(err, result) { console.log(err, result); }); ``` - +- - - - - - - - - - - - - - - - - - ### Get Witness By Account Returns information about a witness with the given `accountName`. ```js @@ -563,40 +1456,86 @@ steem.api.getVestingDelegations('sircork', '', 2, function(err, result) { ``` See also: - +- - - - - - - - - - - - - - - - - - ### Get Witnesses By Vote ```js steem.api.getWitnessesByVote(from, limit, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Lookup Witness Accounts ```js steem.api.lookupWitnessAccounts(lowerBoundName, limit, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Witness Count ```js steem.api.getWitnessCount(function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Get Active Witnesses ```js steem.api.getActiveWitnesses(function(err, result) { console.log(err, result); }); + +``` +- - - - - - - - - - - - - - - - - - +### Get Witness Schedule +Gets some general information about the witnesses. + +```js +steem.api.getWitnessSchedule(callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getWitnessSchedule(function(err, data){ + console.log(err,data); +} ``` + +Return Example: +```js +{ id: 0, + current_virtual_time: '292589412128104496649868821', + next_shuffle_block_num: 19756485, + current_shuffled_witnesses: '31797..................00000000', + num_scheduled_witnesses: 21, + top19_weight: 1, + timeshare_weight: 5, + miner_weight: 1, + witness_pay_normalization_factor: 25, + median_props: + { account_creation_fee: '0.100 STEEM', + maximum_block_size: 65536, + sbd_interest_rate: 0 }, + majority_version: '0.19.2', + max_voted_witnesses: 20, + max_miner_witnesses: 0, + max_runner_witnesses: 1, + hardfork_required_witnesses: 17 } +``` +- - - - - - - - - - - - - - - - - - ### Get Miner Queue ```js steem.api.getMinerQueue(function(err, result) { console.log(err, result); }); ``` - +- - - - - - - - - - - - - - - - - - ## Login API - +- - - - - - - - - - - - - - - - - - ### Login /!\ It's **not safe** to use this method with your username and password. This method always return `true` and is only used internally with empty values to enable broadcast. @@ -606,18 +1545,18 @@ steem.api.login('', '', function(err, result) { console.log(err, result); }); ``` - +- - - - - - - - - - - - - - - - - - ### Get Api By Name ```js steem.api.getApiByName(apiName, function(err, result) { console.log(err, result); }); ``` - +- - - - - - - - - - - - - - - - - - ## Follow API The follower API queries information about follow relationships between accounts. The API is read-only and does not create changes on the blockchain. - +- - - - - - - - - - - - - - - - - - ### Get Followers Returns an alphabetical ordered array of the accounts that are following a particular account. @@ -670,7 +1609,7 @@ steem.api.getFollowers('ned', lastKnownFollower, 'blog', 2, function(err, result See also: [getFollowing](#get-following), [getFollowCount](#get-follow-count) - +- - - - - - - - - - - - - - - - - - ### Get Following Returns an alphabetical ordered Array of the accounts that are followed by a particular account. ```js @@ -714,7 +1653,7 @@ See the usage examples for [getFollowers](#get-followers) because the behaviour See also: [getFollowers](#get-followers), [getFollowCount](#get-follow-count) - +- - - - - - - - - - - - - - - - - - ### Get Follow Count ```js steem.api.getFollowCount(account, function(err, result) { @@ -744,15 +1683,50 @@ Return Example: See also: [getFollowers](#get-followers), [getFollowing](#get-following) - +- - - - - - - - - - - - - - - - - - ## Broadcast API +- - - - - - - - - - - - - - - - - - +### Broadcast Block With Options +Broadcast a new block on the steem blockchain. + +```js +steem.api.broadcastBlockWith(options, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|options|object|like { b: blockObject } where blockObject contains the information on the block you are trying to broadcast| +|callback|function|function(err, data) {/*code*/}| + +Call Example: +```js +var options = { + b: { + previous:"0000000000000000000000000000000000000000", + timestamp:"1970-01-01T00:00:00", + witness:"", + transaction_merkle_root:"0000000000000000000000000000000000000000", + extensions:[], + witness_signature: + "00000000000000000000000000000000000000000000000000000000000000000"+ + "00000000000000000000000000000000000000000000000000000000000000000", + transactions: [] + } +}; + +steem.api.broadcastBlockWith(options, function(err, data){ + console.log(err, data); +}); +``` +- - - - - - - - - - - - - - - - - - ### Broadcast Transaction Synchronous ```js steem.api.broadcastTransactionSynchronous(trx, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Broadcast Block ```js steem.api.broadcastBlock(b, function(err, result) { @@ -760,21 +1734,25 @@ steem.api.broadcastBlock(b, function(err, result) { }); ``` +- - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - # Broadcast The `steem.broadcast` methods cause permanent changes on the blockchain. - +- - - - - - - - - - - - - - - - - - ### Account Create ```js steem.broadcast.accountCreate(wif, fee, creator, newAccountName, owner, active, posting, memoKey, jsonMetadata, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Account Create With Delegation ```js steem.broadcast.accountCreateWithDelegation(wif, fee, delegation, creator, newAccountName, owner, active, posting, memoKey, jsonMetadata, extensions, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Delegate Vesting Shares Delegates STEEM POWER, denominated in VESTS, from a `delegator` to the `delegatee`. Requires the `delegator`'s private WIF key. Set the delegation to 0 to undelegate. ```js @@ -782,150 +1760,225 @@ steem.broadcast.delegateVestingShares(wif, delegator, delegatee, vesting_shares, console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Account Update ```js steem.broadcast.accountUpdate(wif, account, owner, active, posting, memoKey, jsonMetadata, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Account Witness Proxy ```js steem.broadcast.accountWitnessProxy(wif, account, proxy, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Account Witness Vote ```js steem.broadcast.accountWitnessVote(wif, account, witness, approve, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Challenge Authority ```js steem.broadcast.challengeAuthority(wif, challenger, challenged, requireOwner, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Change Recovery Account ```js steem.broadcast.changeRecoveryAccount(wif, accountToRecover, newRecoveryAccount, extensions, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Comment ```js steem.broadcast.comment(wif, parentAuthor, parentPermlink, author, permlink, title, body, jsonMetadata, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Comment Options ```js steem.broadcast.commentOptions(wif, author, permlink, maxAcceptedPayout, percentSteemDollars, allowVotes, allowCurationRewards, extensions, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Comment Payout ```js steem.broadcast.commentPayout(wif, author, permlink, payout, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Comment Reward ```js steem.broadcast.commentReward(wif, author, permlink, sbdPayout, vestingPayout, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Convert ```js steem.broadcast.convert(wif, owner, requestid, amount, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Curate Reward ```js steem.broadcast.curateReward(wif, curator, reward, commentAuthor, commentPermlink, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Custom ```js steem.broadcast.custom(wif, requiredAuths, id, data, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Custom Binary ```js steem.broadcast.customBinary(wif, id, data, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Custom Json ```js steem.broadcast.customJson(wif, requiredAuths, requiredPostingAuths, id, json, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Delete Comment ```js steem.broadcast.deleteComment(wif, author, permlink, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Escrow Dispute ```js steem.broadcast.escrowDispute(wif, from, to, agent, who, escrowId, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Escrow Release ```js steem.broadcast.escrowRelease(wif, from, to, agent, who, receiver, escrowId, sbdAmount, steemAmount, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Escrow Transfer ```js steem.broadcast.escrowTransfer(wif, from, to, agent, escrowId, sbdAmount, steemAmount, fee, ratificationDeadline, escrowExpiration, jsonMeta, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Get Escrow +[ Description of that method ] + +```js +steem.api.getEscrow(from, escrowId, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|from|string|a steem username| +|escrowId|number|id of the specific escrow transfer| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getEscrow("username", 23456789, function(err, data){ + console.log(err, data); +}); +``` +- - - - - - - - - - - - - - - - - - ### Feed Publish ```js steem.broadcast.feedPublish(wif, publisher, exchangeRate, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Pow2 ```js steem.broadcast.pow2(wif, work, newOwnerKey, props, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Fill Convert Request ```js steem.broadcast.fillConvertRequest(wif, owner, requestid, amountIn, amountOut, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Fill Order ```js steem.broadcast.fillOrder(wif, currentOwner, currentOrderid, currentPays, openOwner, openOrderid, openPays, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Fill Vesting Withdraw ```js steem.broadcast.fillVestingWithdraw(wif, fromAccount, toAccount, withdrawn, deposited, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Get Withdraw Routes +Gets withdraw routes (steem power withdraws). + +```js +steem.api.getWithdrawRoutes(account, withdrawRouteType, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|account|string|a steem username| +|withdrawRouteType|number|a number representing a value from an enumeration. Must be 0, 1 or 2| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getWithdrawRoutes("username", 1, function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js +[ { from_account: 'username', + to_account: 'receiver', + percent: 10000, + auto_vest: false } ] +``` +- - - - - - - - - - - - - - - - - - ### Interest ```js steem.broadcast.interest(wif, owner, interest, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Limit Order Cancel Cancels an open limit order on the [internal market](http://steemit.com/market). Be aware that the order might be filled, or partially filled, before this call completes. @@ -946,7 +1999,7 @@ steem.broadcast.limitOrderCancel(wif, owner, orderid, function(err, result) { See also: [getOpenOrders](#get-open-orders), [limitOrderCancel](#limit-order-cancel), [limitOrderCreate2](#limit-order-create2) - +- - - - - - - - - - - - - - - - - - ### Limit Order Create Creates a limit order on the [internal market](http://steemit.com/market) to trade one asset for another using a specified minimum. Orders can be set attempt to fill immediately and or to go to the orderbook. Orders in the order book remain until filled or the expiration time is reached. @@ -975,7 +2028,7 @@ Risky tip: The Internal Market seems to always try and get the best price from t See also: [getOrderBook](#get-order-book), [getOpenOrders](#get-open-orders), [limitOrderCancel](#limit-order-cancel), [limitOrderCreate2](#limit-order-create2) - +- - - - - - - - - - - - - - - - - - ### Limit Order Create2 Creates a limit order on the [internal market](http://steemit.com/market) to trade one asset for another using an exchange rate. Orders can be set attempt to fill immediately and or to go to the orderbook. Orders in the order book remain until filled or the expiration time is reached. @@ -1000,55 +2053,92 @@ steem.broadcast.limitOrderCreate2(wif, owner, orderid, amountToSell, exchangeRat See also: [getOrderBook](#get-order-book), [getOpenOrders](#get-open-orders), [limitOrderCancel](#limit-order-cancel), [limitOrderCreate](#limit-order-create2) - +- - - - - - - - - - - - - - - - - - ### Liquidity Reward ```js steem.broadcast.liquidityReward(wif, owner, payout, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Pow ```js steem.broadcast.pow(wif, worker, input, signature, work, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Prove Authority ```js steem.broadcast.proveAuthority(wif, challenged, requireOwner, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Recover Account ```js steem.broadcast.recoverAccount(wif, accountToRecover, newOwnerAuthority, recentOwnerAuthority, extensions, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Set Reset Account +Changes the [current_reset_account] of the [account] to a new [reset_account] + +```js +steem.broadcast.setResetAccount(wif, account, current_reset_account, reset_account, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|wif|string|Use < steem.auth.toWif(user, pass, type) >| +|account|string|a steem username| +|current_reset_account|string|a steem username| +|reset_account|string|a steem username| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.broadcast.setResetAccount(wif, "username", "oldresetaccount", "newresetaccount", function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js + AssertException + `false: Set Reset Account Operation is currently disabled.` +``` +- - - - - - - - - - - - - - - - - - ### Report Over Production ```js steem.broadcast.reportOverProduction(wif, reporter, firstBlock, secondBlock, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Request Account Recovery ```js steem.broadcast.requestAccountRecovery(wif, recoveryAccount, accountToRecover, newOwnerAuthority, extensions, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Escrow Approve ```js steem.broadcast.escrowApprove(wif, from, to, agent, who, escrowId, approve, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Set Withdraw Vesting Route ```js steem.broadcast.setWithdrawVestingRoute(wif, fromAccount, toAccount, percent, autoVest, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Transfer Transfers assets, such as STEEM or SBD, from one account to another. ```js @@ -1065,7 +2155,7 @@ steem.broadcast.transfer(wif, from, to, amount, memo, function(err, result) { |function()|Your callback|function|| See also: [transferToVesting](#transfer-to-vesting) - +- - - - - - - - - - - - - - - - - - ### Transfer To Vesting Vests STEEM into STEEM POWER. This method supports powering up one account from another. ```js @@ -1083,68 +2173,166 @@ steem.broadcast.transferToVesting(wif, from, to, amount, function(err, result) { |function()|Your callback|function|| See also: [transfer](#transfer) - +- - - - - - - - - - - - - - - - - - ### Vote ```js steem.broadcast.vote(wif, voter, author, permlink, weight, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Withdraw Vesting ```js steem.broadcast.withdrawVesting(wif, account, vestingShares, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Witness Update ```js steem.broadcast.witnessUpdate(wif, owner, url, blockSigningKey, props, fee, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Fill Vesting Withdraw ```js steem.broadcast.fillVestingWithdraw(wif, fromAccount, toAccount, withdrawn, deposited, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Fill Order ```js steem.broadcast.fillOrder(wif, currentOwner, currentOrderid, currentPays, openOwner, openOrderid, openPays, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Get Recent Trades +Gets a list of the last [limit] trades from the market. + +```js +steem.api.getRecentTrades(limit, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|limit|number|a positive number| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getRecentTrades(5, function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js + [ { date: '2018-02-10T20:38:39', + current_pays: '0.306 SBD', + open_pays: '0.340 STEEM' }, + { date: '2018-02-10T20:36:48', + current_pays: '8.982 SBD', + open_pays: '9.995 STEEM' }, + { date: '2018-02-10T20:36:33', + current_pays: '10.486 SBD', + open_pays: '11.668 STEEM' }, + { date: '2018-02-10T20:34:42', + current_pays: '11.017 SBD', + open_pays: '12.276 STEEM' }, + { date: '2018-02-10T20:34:39', + current_pays: '0.833 SBD', + open_pays: '0.928 STEEM' } ] +``` +- - - - - - - - - - - - - - - - - - ### Fill Transfer From Savings ```js steem.broadcast.fillTransferFromSavings(wif, from, to, amount, requestId, memo, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - +### Get Savings Withdraw From +Gets a list of savings withdraws from [account]. + +```js +steem.api.getSavingsWithdrawFrom(account, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|account|string|a steem username| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getSavingsWithdrawFrom("username", function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js + [ /* list of withdraws from savings */ ] +``` +- - - - - - - - - - - - - - - - - - +### Get Savings Withdraw To +Gets a list of savings withdraws from [account]. + +```js +steem.api.getSavingsWithdrawTo(account, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|account|string|a steem username| +|callback|function|function(err, data) {/*code*/}| + + +Call Example: +```js +steem.api.getSavingsWithdrawTo("username", function(err, data){ + console.log(err, data); +}); +``` + +Return Example: +```js + [ /* list of withdraws from savings */ ] +``` +- - - - - - - - - - - - - - - - - - ### Comment Payout ```js steem.broadcast.commentPayout(wif, author, permlink, payout, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Transfer To Savings ```js steem.broadcast.transferToSavings(wif, from, to, amount, memo, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Transfer From Savings ```js steem.broadcast.transferFromSavings(wif, from, requestId, to, amount, memo, function(err, result) { console.log(err, result); }); ``` +- - - - - - - - - - - - - - - - - - ### Cancel Transfer From Savings ```js steem.broadcast.cancelTransferFromSavings(wif, from, requestId, function(err, result) { console.log(err, result); }); ``` - +- - - - - - - - - - - - - - - - - - ### Multisig You can use multisignature to broadcast an operation. ```js @@ -1162,57 +2350,167 @@ steem.broadcast.send({ }); ``` +- - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - # Auth - +- - - - - - - - - - - - - - - - - - ### Verify ```js steem.auth.verify(name, password, auths); ``` - +- - - - - - - - - - - - - - - - - - ### Generate Keys ```js steem.auth.generateKeys(name, password, roles); ``` - +- - - - - - - - - - - - - - - - - - ### Get Private Keys ```js steem.auth.getPrivateKeys(name, password, roles); ``` - +- - - - - - - - - - - - - - - - - - ### Is Wif ```js steem.auth.isWif(privWif); ``` - +- - - - - - - - - - - - - - - - - - ### To Wif ```js steem.auth.toWif(name, password, role); ``` - +- - - - - - - - - - - - - - - - - - ### Wif Is Valid ```js steem.auth.wifIsValid(privWif, pubWif); ``` - +- - - - - - - - - - - - - - - - - - ### Wif To Public ```js steem.auth.wifToPublic(privWif); ``` - +- - - - - - - - - - - - - - - - - - ### Sign Transaction ```js steem.auth.signTransaction(trx, keys); ``` +- - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - # Formatter +- - - - - - - - - - - - - - - - - - +### Amount +Formats number and currency to the valid way for sending (for example - it trims the number's floating point remainer to 3 digits only). + +```js +steem.formatter.amount(_amount, asset); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|_amount|number|A positive number| +|asset|string|The name of a steem asset (steem, sbd)| + + +Call Example: +```js +steem.formatter.amount(53.442346, "STEEM"); +``` +Return Example: +```js + "53.442 STEEM" +``` +- - - - - - - - - - - - - - - - - - +### Vesting Steem +Converts the vests of [account] into the number of Steem they represent. + +```js +steem.formatter.vestingSteem(account, gprops, callback); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|account|object|a steem user object| +|groups|object|the properties object of the state of "/@username"| + + +Call Example: +```js +steem.api.getAccounts(["username"], function(e1, accounts){ + steem.api.getState("/@username", function (e2, state) { + + var vestingSteem = steem.formatter.vestingSteem(accounts[0], state.props); + + }); +}); +``` + +Return Example: +```js + 7.42431235 +``` +- - - - - - - - - - - - - - - - - - +### Number With Commas +Formats a big number, by adding a comma on every 3 digits. +Attention - only works on strings. No numbers can be passed directly. + +```js +steem.formatter.numberWithCommas(x); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|x|string|Number to format as string| + + +Call Example: +```js +steem.formatter.numberWithCommas(53304432342.432.toString()); + //or +steem.formatter.numberWithCommas("53304432342.432"); +``` + +Return Example: +```js + "53,304,432,342.432" +``` +- - - - - - - - - - - - - - - - - - +### Estimate Account Value +Gets the estimated dollar value of the assets of [account] + +```js +steem.formatter.estimateAccountValue(account); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|account|object|a steem user object| + + +Call Example: +```js +steem.api.getAccounts(["username"], function(e1, accounts){ + + var accountValueInUSD = steem.formatter.estimateAccountValue(accounts[0]) + .catch(function (err) { console.log(err); }) + .then(function (data) { console.log(data); }); + +}); +``` + +Return Example: +```js + // The method returns a promise object, that later returns a number as result + 32.25 +``` +- - - - - - - - - - - - - - - - - - ### Create Suggested Password ```js var password = steem.formatter.createSuggestedPassword(); console.log(password); // => 'GAz3GYFvvQvgm7t2fQmwMDuXEzDqTzn9' ``` - +- - - - - - - - - - - - - - - - - - ### Comment Permlink ```js var parentAuthor = 'ned'; @@ -1221,27 +2519,29 @@ var commentPermlink = steem.formatter.commentPermlink(parentAuthor, parentPermli console.log(commentPermlink); // => 're-ned-a-selfie-20170621t080403765z' ``` - +- - - - - - - - - - - - - - - - - - ### Estimate Account Value ```js var steemPower = steem.formatter.estimateAccountValue(account); ``` - +- - - - - - - - - - - - - - - - - - ### Reputation ```js var reputation = steem.formatter.reputation(3512485230915); console.log(reputation); // => 56 ``` - +- - - - - - - - - - - - - - - - - - ### Vest To Steem ```js var steemPower = steem.formatter.vestToSteem(vestingShares, totalVestingShares, totalVestingFundSteem); console.log(steemPower); ``` +- - - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - # Utils - +- - - - - - - - - - - - - - - - - - ### Validate Username ```js var isValidUsername = steem.utils.validateAccountName('test1234'); @@ -1252,3 +2552,25 @@ var isValidUsername = steem.utils.validateAccountName('a1'); console.log(isValidUsername); // => 'Account name should be longer.' ``` +- - - - - - - - - - - - - - - - - - +### Camel Case +Formats a string with '_' characters to follow the CamelCase notation instead. + +```js +steem.utils.camelCase(str); +``` + +|Parameter|Datatype|Description| +|---------|--------|-----------| +|str|string|the string will be converted to camelCase like "exampleString"| + + +Call Example: +```js +steem.utils.camelCase("example_string"); +``` + +Return Example: +```js + "exampleString" +``` From 444decdd182a136d066c0e0fd9ac81be974bdc88 Mon Sep 17 00:00:00 2001 From: Stormrose Date: Tue, 13 Feb 2018 00:34:07 +1300 Subject: [PATCH 11/94] Minor changes to improve formatting. --- doc/README.md | 91 ++++++++++++++++++--------------------------------- 1 file changed, 32 insertions(+), 59 deletions(-) diff --git a/doc/README.md b/doc/README.md index e09c30c1..fe00f34c 100644 --- a/doc/README.md +++ b/doc/README.md @@ -152,7 +152,7 @@ steem.api.TrendingTags(lastKnownTag, 2, function(err, result) { See also: [getTrendingCategories](#get-trending-categories) - - - - - - - - - - - - - - - - - - ### Get Blog -Gets the last [limit] number of posts of [account] before the post with index [entryId] +Gets the last `limit` number of posts of `account` before the post with index `entryId` ```js steem.api.getBlog(account, entryId, limit, callback); @@ -205,7 +205,6 @@ Return Example: ### Get Blog Authors Gets a list of all people who wrote in someones blog, along with how many times they wrote in that blog. - ```js steem.api.getBlogAuthors(blogAccount, callback); ``` @@ -233,7 +232,7 @@ Return Example: ``` - - - - - - - - - - - - - - - - - - ### Get Blog Entries -Gets the last [limit] number of posts of [account] before the post with index [entryId] +Gets the last `limit` number of posts of `account` before the post with index `entryId` Very similar to steem.api.getBlog but with much simpler result objects ```js @@ -279,7 +278,7 @@ Return Example: ``` - - - - - - - - - - - - - - - - - - ### Get Discussions By Trending -Gets the steem posts as they would be shown in the trending tab of [steemit.com] +Gets the steem posts as they would be shown in the trending tab of steemit.com. ```js steem.api.getDiscussionsByTrending30(query, callback); @@ -535,7 +534,7 @@ Return Example: ``` - - - - - - - - - - - - - - - - - - ### Get State -Gets a lot of information about the state of [path] +Gets a lot of information about the state of `path` ```js steem.api.getStateWith(path, callback); @@ -742,7 +741,7 @@ Return Example: ``` - - - - - - - - - - - - - - - - - - ### Get Trade History -Gets the trade history for a given period between a [start] date and an [end] date +Gets the trade history for a given period between a `start` date and an `end` date ```js steem.api.getTradeHistory(start, end, limit, callback); @@ -973,10 +972,8 @@ steem.api.getVestingDelegations('ned', '', 2, function(err, result) { Return Example: ```js -[ - { id: 498422, delegator: 'ned', delegatee: 'spaminator', vesting_shares: '409517519.233783 VESTS', min_delegation_time: '2018-01-16T19:30:36' }, - { id: 181809, delegator: 'ned', delegatee: 'surpassinggoogle', vesting_shares: '1029059275.000000 VESTS', min_delegation_time: '2017-08-08T15:25:15' } -] +[ { id: 498422, delegator: 'ned', delegatee: 'spaminator', vesting_shares: '409517519.233783 VESTS', min_delegation_time: '2018-01-16T19:30:36' }, + { id: 181809, delegator: 'ned', delegatee: 'surpassinggoogle', vesting_shares: '1029059275.000000 VESTS', min_delegation_time: '2017-08-08T15:25:15' } ] ``` Using the Result: @@ -1073,7 +1070,7 @@ steem.api.getRecoveryRequest(account, function(err, result) { ``` - - - - - - - - - - - - - - - - - - ### Get Account Bandwidth -Get the bandwidth of the [account]. +Get the bandwidth of the `account`. The bandwidth is the limit of data that can be uploaded to the blockchain. To have bigger bandwidth - power up your steem. @@ -1127,7 +1124,7 @@ var options = { account: "username", bandwidthType: 2 } -steem.api.getAccountBandwidthWith(options , function(err, data){ +steem.api.getAccountBandwidthWith(options, function(err, data){ console.log(err, data); }); ``` @@ -1143,7 +1140,7 @@ Return Example: ``` - - - - - - - - - - - - - - - - - - ### Get Account Reputations -Gets the reputation points of [limit] accounts with names most similar to [lowerBoundName]. +Gets the reputation points of `limit` accounts with names most similar to `lowerBoundName`. ```js steem.api.getAccountReputations(lowerBoundName, limit, callback); @@ -1158,7 +1155,7 @@ steem.api.getAccountReputations(lowerBoundName, limit, callback); Call Example: ```js -steem.api.getAccountReputations("username", 5, function(err, data){ +steem.api.getAccountReputations("username", 2, function(err, data){ console.log(err, data); }); ``` @@ -1166,10 +1163,7 @@ steem.api.getAccountReputations("username", 5, function(err, data){ Return Example: ```js [ { account: 'username', reputation: '26727073581' }, - { account: 'username-taken', reputation: 0 }, - { account: 'username01', reputation: 0 }, - { account: 'username1998', reputation: 0 }, - { account: 'username404', reputation: 0 } ] + { account: 'username-taken', reputation: 0 } ] ``` - - - - - - - - - - - - - - - - - - ## Market @@ -1182,7 +1176,7 @@ steem.api.getOrderBook(limit, function(err, result) { ``` - - - - - - - - - - - - - - - - - - ### Get Market Order Book -Takes the top-most [limit] entries in the market order book for both buy and sell orders. +Takes the top-most `limit` entries in the market order book for both buy and sell orders. ```js steem.api.getMarketOrderBook(limit, callback); @@ -1196,7 +1190,7 @@ steem.api.getMarketOrderBook(limit, callback); Call Example: ```js -steem.api.getMarketOrderBook(3, function(err, data){ +steem.api.getMarketOrderBook(2, function(err, data){ console.log(err, data); }); ``` @@ -1205,16 +1199,14 @@ Return Example: ```js { bids: [ { price: '0.91116173120728938', steem: 2195, sbd: 2000 }, - { price: '0.91089965397923878', steem: 1156, sbd: 1053 }, - { price: '0.91083253129468766', steem: 2032, sbd: 1851 } ], + { price: '0.91089965397923878', steem: 1156, sbd: 1053 } ], asks: [ { price: '0.91145625249700357', steem: 9053, sbd: 8251 }, - { price: '0.91159226975214813', steem: 16184, sbd: 14753 }, - { price: '0.91190953857377344', steem: 18676, sbd: 17030 } ] } + { price: '0.91159226975214813', steem: 16184, sbd: 14753 } ] } ``` - - - - - - - - - - - - - - - - - - ### Get Market Order Book With Options -Takes the top-most [limit] entries in the market order book for both buy and sell orders. +Takes the top-most `limit` entries in the market order book for both buy and sell orders. ```js steem.api.getMarketOrderBookWith(options, callback); @@ -1414,7 +1406,7 @@ steem.api.getRebloggedBy("author", "example-permlink", function(err, data){ Return Example: ```js [ 'author', - 'user1' , + 'user1', 'user2', 'user3', 'user4' ] @@ -1584,10 +1576,8 @@ steem.api.getFollowers('ned', '', 'blog', 2, function(err, result) { Return Example: ```js -[ - { follower: 'a-0-0', following: 'ned', what: [ 'blog' ] }, - { follower: 'a-0-0-0-1abokina', following: 'ned', what: [ 'blog' ] } -] +[ { follower: 'a-0-0', following: 'ned', what: [ 'blog' ] }, + { follower: 'a-0-0-0-1abokina', following: 'ned', what: [ 'blog' ] } ] ``` Using the Result: @@ -1636,10 +1626,8 @@ steem.api.getFollowing('dan', '', 'blog', 2, function(err, result) { Return Example: ```js -[ - { follower: 'dan', following: 'dantheman', what: [ 'blog' ] }, - { follower: 'dan', following: 'krnel', what: [ 'blog' ] } -] +[ { follower: 'dan', following: 'dantheman', what: [ 'blog' ] }, + { follower: 'dan', following: 'krnel', what: [ 'blog' ] } ] ``` Using the Result: @@ -1888,8 +1876,6 @@ steem.broadcast.escrowTransfer(wif, from, to, agent, escrowId, sbdAmount, steemA ``` - - - - - - - - - - - - - - - - - - ### Get Escrow -[ Description of that method ] - ```js steem.api.getEscrow(from, escrowId, callback); ``` @@ -2083,7 +2069,7 @@ steem.broadcast.recoverAccount(wif, accountToRecover, newOwnerAuthority, recentO ``` - - - - - - - - - - - - - - - - - - ### Set Reset Account -Changes the [current_reset_account] of the [account] to a new [reset_account] +Changes the `current_reset_account` of the `account` to a new `reset_account` ```js steem.broadcast.setResetAccount(wif, account, current_reset_account, reset_account, callback); @@ -2210,7 +2196,7 @@ steem.broadcast.fillOrder(wif, currentOwner, currentOrderid, currentPays, openOw ``` - - - - - - - - - - - - - - - - - - ### Get Recent Trades -Gets a list of the last [limit] trades from the market. +Gets a list of the last `limit` trades from the market. ```js steem.api.getRecentTrades(limit, callback); @@ -2224,7 +2210,7 @@ steem.api.getRecentTrades(limit, callback); Call Example: ```js -steem.api.getRecentTrades(5, function(err, data){ +steem.api.getRecentTrades(2, function(err, data){ console.log(err, data); }); ``` @@ -2236,16 +2222,7 @@ Return Example: open_pays: '0.340 STEEM' }, { date: '2018-02-10T20:36:48', current_pays: '8.982 SBD', - open_pays: '9.995 STEEM' }, - { date: '2018-02-10T20:36:33', - current_pays: '10.486 SBD', - open_pays: '11.668 STEEM' }, - { date: '2018-02-10T20:34:42', - current_pays: '11.017 SBD', - open_pays: '12.276 STEEM' }, - { date: '2018-02-10T20:34:39', - current_pays: '0.833 SBD', - open_pays: '0.928 STEEM' } ] + open_pays: '9.995 STEEM' } ] ``` - - - - - - - - - - - - - - - - - - ### Fill Transfer From Savings @@ -2256,7 +2233,7 @@ steem.broadcast.fillTransferFromSavings(wif, from, to, amount, requestId, memo, ``` - - - - - - - - - - - - - - - - - - ### Get Savings Withdraw From -Gets a list of savings withdraws from [account]. +Gets a list of savings withdraws from `account`. ```js steem.api.getSavingsWithdrawFrom(account, callback); @@ -2281,7 +2258,7 @@ Return Example: ``` - - - - - - - - - - - - - - - - - - ### Get Savings Withdraw To -Gets a list of savings withdraws from [account]. +Gets a list of savings withdraws from `account`. ```js steem.api.getSavingsWithdrawTo(account, callback); @@ -2422,7 +2399,7 @@ Return Example: ``` - - - - - - - - - - - - - - - - - - ### Vesting Steem -Converts the vests of [account] into the number of Steem they represent. +Converts the vests of `account` into the number of Steem they represent. ```js steem.formatter.vestingSteem(account, gprops, callback); @@ -2437,10 +2414,8 @@ steem.formatter.vestingSteem(account, gprops, callback); Call Example: ```js steem.api.getAccounts(["username"], function(e1, accounts){ - steem.api.getState("/@username", function (e2, state) { - - var vestingSteem = steem.formatter.vestingSteem(accounts[0], state.props); - + steem.api.getState("/@username", function (e2, state) { + var vestingSteem = steem.formatter.vestingSteem(accounts[0], state.props); }); }); ``` @@ -2476,7 +2451,7 @@ Return Example: ``` - - - - - - - - - - - - - - - - - - ### Estimate Account Value -Gets the estimated dollar value of the assets of [account] +Gets the estimated dollar value of the assets of `account` ```js steem.formatter.estimateAccountValue(account); @@ -2490,11 +2465,9 @@ steem.formatter.estimateAccountValue(account); Call Example: ```js steem.api.getAccounts(["username"], function(e1, accounts){ - var accountValueInUSD = steem.formatter.estimateAccountValue(accounts[0]) .catch(function (err) { console.log(err); }) .then(function (data) { console.log(data); }); - }); ``` From 527b4c955669043dfa0af4bd08bcdcaf6ad1337f Mon Sep 17 00:00:00 2001 From: Stormrose Date: Sun, 25 Feb 2018 05:21:10 +1300 Subject: [PATCH 12/94] Minor spacing updates Updates to fix minor issues with whitespace. --- doc/README.md | 136 ++++++++++++++++++++++++-------------------------- 1 file changed, 64 insertions(+), 72 deletions(-) diff --git a/doc/README.md b/doc/README.md index fe00f34c..22c6e2bb 100644 --- a/doc/README.md +++ b/doc/README.md @@ -36,7 +36,7 @@ $ npm install steem --save ```html @@ -129,8 +129,7 @@ steem.api.getTrendingTags('', 2, function(err, result) { Return Example: ```js [ { name: '', total_payouts: '37610793.383 SBD', net_votes: 4211122, top_posts: 411832, comments: 1344461, trending: '5549490701' }, - { name: 'life', total_payouts: '8722947.658 SBD', net_votes: 1498401, top_posts: 127103, comments: 54049, trending: '570954588' } -] + { name: 'life', total_payouts: '8722947.658 SBD', net_votes: 1498401, top_posts: 127103, comments: 54049, trending: '570954588' } ] ``` Using the Result: @@ -168,7 +167,7 @@ steem.api.getBlog(account, entryId, limit, callback); Call Example: ```js -steem.api.getBlog("username", 10, 3, function(err, data){ +steem.api.getBlog("username", 10, 3, function(err, data) { console.log(err, data); }); @@ -179,8 +178,7 @@ steem.api.getBlog("username", 10, 3, function(err, data){ Return Example: ```js -[ - { +[ { blog:"username" comment: { /* Omited for simplicity */ } entry_id: 10 @@ -197,9 +195,7 @@ Return Example: comment: { /* Omited for simplicity */ } entry_id: 8 reblog_on:"1970-01-01T00:00:00" - - } -] + } ] ``` - - - - - - - - - - - - - - - - - - ### Get Blog Authors @@ -217,7 +213,7 @@ steem.api.getBlogAuthors(blogAccount, callback); Call Example: ```js -steem.api.getBlogAuthors("username", function(err, data){ +steem.api.getBlogAuthors("username", function(err, data) { console.log(err, data); }); ``` @@ -249,7 +245,7 @@ steem.api.getBlogEntries(account, entryId, limit, callback); Call Example: ```js -steem.api.getBlogEntries("username", 10, 3, function(err, data){ +steem.api.getBlogEntries("username", 10, 3, function(err, data) { console.log(err, data); }); @@ -293,7 +289,7 @@ steem.api.getDiscussionsByTrending30(query, callback); Call Example: ```js var query = { limit : 3, tag : "steem" }; -steem.api.getDiscussionsByTrending30(query, function(err, data){ +steem.api.getDiscussionsByTrending30(query, function(err, data) { console.log(err, data); }); @@ -395,7 +391,7 @@ steem.api.getDiscussionsByPromoted(query, callback); Call Example: ```js var query = { limit : 3, tag : "steem" }; -steem.api.getDiscussionsByPromoted(query, function(err, data){ +steem.api.getDiscussionsByPromoted(query, function(err, data) { console.log(err, data); }); @@ -427,8 +423,7 @@ steem.api.getCommentDiscussionsByPayout(query, callback); Call Example: ```js var query = { limit : 3, tag : "steem" }; -steem.api.getCommentDiscussionsByPayout(query, function(err, data) -{ +steem.api.getCommentDiscussionsByPayout(query, function(err, data) { console.log(err, data); }); @@ -460,8 +455,7 @@ steem.api.getPostDiscussionsByPayout(query, callback); Call Example: ```js var query = { limit : 3, tag : "collorchallenge" }; -steem.api.getPostDiscussionsByPayout(query, function(err, data) -{ +steem.api.getPostDiscussionsByPayout(query, function(err, data) { console.log(err, data); }); @@ -509,7 +503,7 @@ steem.api.getOpsInBlock(blockNum, onlyVirtual, callback); Call Example: ```js -steem.api.getOpsInBlock(10000001, false, function(err, data){ +steem.api.getOpsInBlock(10000001, false, function(err, data) { console.log(err, data); }); ``` @@ -537,7 +531,7 @@ Return Example: Gets a lot of information about the state of `path` ```js -steem.api.getStateWith(path, callback); +steem.api.getStateWith(path, callback); ``` |Parameter|Datatype|Description| @@ -548,30 +542,30 @@ steem.api.getStateWith(path, callback); Call Example: ```js -steem.api.getState("/@username", function(err, data){ +steem.api.getState("/@username", function(err, data) { console.log(err, data); }); // Here are some valid calls: -steem.api.getState("/@username", function(err, data){ console.log(data); }); +steem.api.getState("/@username", function(err, data) { console.log(data); }); -steem.api.getState("/@username/permlink-of-post", function(err, data){ console.log(data); }); +steem.api.getState("/@username/permlink-of-post", function(err, data) { console.log(data); }); -steem.api.getState("/@username/comments", function(err, data){ console.log(data); }); +steem.api.getState("/@username/comments", function(err, data) { console.log(data); }); -steem.api.getState("/@username/recent-replies", function(err, data){ console.log(data); }); +steem.api.getState("/@username/recent-replies", function(err, data) { console.log(data); }); -steem.api.getState("/trending", function(err, data){ console.log(data); }); +steem.api.getState("/trending", function(err, data) { console.log(data); }); -steem.api.getState("/trending/collorchallenge", function(err, data){ console.log(data); }); +steem.api.getState("/trending/collorchallenge", function(err, data) { console.log(data); }); // and others.... ``` Return Example: ```js - // The result is huge, and can have many variations, depending on what you are getting the state of. It simply can't be documented properly. Here are some pointers though: +// The result is huge, and can have many variations depending on what you are getting the state of. It can't be documented briefly. Here is some basic information: { accounts: {username: {...}} content: { username/permlink1: {...}, @@ -603,7 +597,7 @@ steem.api.getStateWith(options, callback); Call Example: ```js -steem.api.getStateWith({ path : "/@username" }, function(err, data){ +steem.api.getStateWith({ path : "/@username" }, function(err, data) { console.log(err, data); }); ``` @@ -678,7 +672,7 @@ steem.api.getFeedEntries(account, entryId, limit, callback); Call Example: ```js -steem.api.getFeedEntries("username", 0, 2, function(err, data){ +steem.api.getFeedEntries("username", 0, 2, function(err, data) { console.log(err, data); }); ``` @@ -725,7 +719,7 @@ steem.api.getTicker(callback); Call Example: ```js -steem.api.getTicker(function(err, data){ +steem.api.getTicker(function(err, data) { console.log(err, data); }); ``` @@ -760,7 +754,7 @@ Call Example: var start = "2018-01-01T00:00:00"; var end = "2018-01-02T00:00:00"; -steem.api.getTradeHistory(start, end, 5, function(err, data){ +steem.api.getTradeHistory(start, end, 5, function(err, data) { console.log(err, data); }); ``` @@ -798,7 +792,7 @@ steem.api.getVersion(callback); Call Example: ```js -steem.api.getVersion(function(err, data){ +steem.api.getVersion(function(err, data) { console.log(err, data); }); ``` @@ -824,17 +818,15 @@ steem.api.getVolume(callback); Call Example: ```js -steem.api.getVolume(function(err, data){ +steem.api.getVolume(function(err, data) { console.log(err, data); }); ``` Return Example: ```js -{ - steem_volume: '8101.888 STEEM', - sbd_volume: '7287.268 SBD' -} +{ steem_volume: '8101.888 STEEM', + sbd_volume: '7287.268 SBD' } ``` - - - - - - - - - - - - - - - - - - ### Get Hardfork Version @@ -887,7 +879,7 @@ steem.broadcast.claimRewardBalance(wif, account, reward_steem, reward_sbd, rewar Call Example: ```js -steem.broadcast.claimRewardBalance("5Hupd....pp7vGY", "username", "0.000 STEEM", "0.000 SBD", "0.000006 VESTS", function(err, data){ +steem.broadcast.claimRewardBalance("5Hupd....pp7vGY", "username", "0.000 STEEM", "0.000 SBD", "0.000006 VESTS", function(err, data) { console.log(err, data); }); ``` @@ -910,7 +902,7 @@ Return Example: Claims pending rewards, be they Steem, SBD or Vests. ```js -steem.broadcast.claimRewardBalanceWith(wif, options, callback); +steem.broadcast.claimRewardBalanceWith(wif, options, callback); ``` |Parameter|Datatype|Description| @@ -928,7 +920,7 @@ var options = { reward_steem:"0.000 STEEM", reward_vests:"0.000006 VESTS" } -steem.broadcast.claimRewardBalanceWith("5Hupd....pp7vGY", options, function(err, data){ +steem.broadcast.claimRewardBalanceWith("5Hupd....pp7vGY", options, function(err, data) { console.log(err, data); }); ``` @@ -1090,7 +1082,7 @@ Call Example: const forumBandwidthType = 1; const marketBandwidthType = 2; -steem.api.getAccountBandwidth("username", 1, function(err, data){ +steem.api.getAccountBandwidth("username", forumBandwidthType, function(err, data) { console.log(err, data); }); ``` @@ -1109,7 +1101,7 @@ Return Example: Get the bandwidth of the user specified in the options. ```js -steem.api.getAccountBandwidthWith(options, callback); +steem.api.getAccountBandwidthWith(options, callback); ``` |Parameter|Datatype|Description| @@ -1124,7 +1116,7 @@ var options = { account: "username", bandwidthType: 2 } -steem.api.getAccountBandwidthWith(options, function(err, data){ +steem.api.getAccountBandwidthWith(options, function(err, data) { console.log(err, data); }); ``` @@ -1155,7 +1147,7 @@ steem.api.getAccountReputations(lowerBoundName, limit, callback); Call Example: ```js -steem.api.getAccountReputations("username", 2, function(err, data){ +steem.api.getAccountReputations("username", 2, function(err, data) { console.log(err, data); }); ``` @@ -1190,7 +1182,7 @@ steem.api.getMarketOrderBook(limit, callback); Call Example: ```js -steem.api.getMarketOrderBook(2, function(err, data){ +steem.api.getMarketOrderBook(2, function(err, data) { console.log(err, data); }); ``` @@ -1209,7 +1201,7 @@ Return Example: Takes the top-most `limit` entries in the market order book for both buy and sell orders. ```js -steem.api.getMarketOrderBookWith(options, callback); +steem.api.getMarketOrderBookWith(options, callback); ``` |Parameter|Datatype|Description| @@ -1220,7 +1212,7 @@ steem.api.getMarketOrderBookWith(options, callback); Call Example: ```js -steem.api.getMarketOrderBookWith({ limit: 3 }, function(err, data){ +steem.api.getMarketOrderBookWith({ limit: 3 }, function(err, data) { console.log(err, data); }); ``` @@ -1264,7 +1256,7 @@ steem.api.getMarketHistoryBuckets(callback); Call Example: ```js -steem.api.getMarketHistoryBuckets(function(err, data){ +steem.api.getMarketHistoryBuckets(function(err, data) { console.log(err, data); }); ``` @@ -1333,7 +1325,7 @@ steem.api.getTagsUsedByAuthor(author, callback); Call Example: ```js -steem.api.getTagsUsedByAuthor("good-karma", function(err, data){ +steem.api.getTagsUsedByAuthor("good-karma", function(err, data) { console.log(err, data); }); ``` @@ -1398,7 +1390,7 @@ steem.api.getRebloggedBy(author, permlink, callback); Call Example: ```js -steem.api.getRebloggedBy("author", "example-permlink", function(err, data){ +steem.api.getRebloggedBy("author", "example-permlink", function(err, data) { console.log(err, data); }); ``` @@ -1492,8 +1484,8 @@ steem.api.getWitnessSchedule(callback); Call Example: ```js -steem.api.getWitnessSchedule(function(err, data){ - console.log(err,data); +steem.api.getWitnessSchedule(function(err, data) { + console.log(err,data); } ``` @@ -1678,7 +1670,7 @@ See also: [getFollowers](#get-followers), [getFollowing](#get-following) Broadcast a new block on the steem blockchain. ```js -steem.api.broadcastBlockWith(options, callback); +steem.api.broadcastBlockWith(options, callback); ``` |Parameter|Datatype|Description| @@ -1703,7 +1695,7 @@ var options = { } }; -steem.api.broadcastBlockWith(options, function(err, data){ +steem.api.broadcastBlockWith(options, function(err, data) { console.log(err, data); }); ``` @@ -1889,7 +1881,7 @@ steem.api.getEscrow(from, escrowId, callback); Call Example: ```js -steem.api.getEscrow("username", 23456789, function(err, data){ +steem.api.getEscrow("username", 23456789, function(err, data) { console.log(err, data); }); ``` @@ -1945,7 +1937,7 @@ steem.api.getWithdrawRoutes(account, withdrawRouteType, callback); Call Example: ```js -steem.api.getWithdrawRoutes("username", 1, function(err, data){ +steem.api.getWithdrawRoutes("username", 1, function(err, data) { console.log(err, data); }); ``` @@ -2086,7 +2078,7 @@ steem.broadcast.setResetAccount(wif, account, current_reset_account, reset_accou Call Example: ```js -steem.broadcast.setResetAccount(wif, "username", "oldresetaccount", "newresetaccount", function(err, data){ +steem.broadcast.setResetAccount(wif, "username", "oldresetaccount", "newresetaccount", function(err, data) { console.log(err, data); }); ``` @@ -2210,7 +2202,7 @@ steem.api.getRecentTrades(limit, callback); Call Example: ```js -steem.api.getRecentTrades(2, function(err, data){ +steem.api.getRecentTrades(2, function(err, data) { console.log(err, data); }); ``` @@ -2247,7 +2239,7 @@ steem.api.getSavingsWithdrawFrom(account, callback); Call Example: ```js -steem.api.getSavingsWithdrawFrom("username", function(err, data){ +steem.api.getSavingsWithdrawFrom("username", function(err, data) { console.log(err, data); }); ``` @@ -2272,7 +2264,7 @@ steem.api.getSavingsWithdrawTo(account, callback); Call Example: ```js -steem.api.getSavingsWithdrawTo("username", function(err, data){ +steem.api.getSavingsWithdrawTo("username", function(err, data) { console.log(err, data); }); ``` @@ -2379,7 +2371,7 @@ steem.auth.signTransaction(trx, keys); Formats number and currency to the valid way for sending (for example - it trims the number's floating point remainer to 3 digits only). ```js -steem.formatter.amount(_amount, asset); +steem.formatter.amount(_amount, asset); ``` |Parameter|Datatype|Description| @@ -2402,7 +2394,7 @@ Return Example: Converts the vests of `account` into the number of Steem they represent. ```js -steem.formatter.vestingSteem(account, gprops, callback); +steem.formatter.vestingSteem(account, gprops, callback); ``` |Parameter|Datatype|Description| @@ -2413,10 +2405,10 @@ steem.formatter.vestingSteem(account, gprops, callback); Call Example: ```js -steem.api.getAccounts(["username"], function(e1, accounts){ - steem.api.getState("/@username", function (e2, state) { - var vestingSteem = steem.formatter.vestingSteem(accounts[0], state.props); - }); +steem.api.getAccounts(["username"], function(e1, accounts) { + steem.api.getState("/@username", function (e2, state) { + var vestingSteem = steem.formatter.vestingSteem(accounts[0], state.props); + }); }); ``` @@ -2441,7 +2433,7 @@ steem.formatter.numberWithCommas(x); Call Example: ```js steem.formatter.numberWithCommas(53304432342.432.toString()); - //or +// or steem.formatter.numberWithCommas("53304432342.432"); ``` @@ -2464,10 +2456,10 @@ steem.formatter.estimateAccountValue(account); Call Example: ```js -steem.api.getAccounts(["username"], function(e1, accounts){ - var accountValueInUSD = steem.formatter.estimateAccountValue(accounts[0]) - .catch(function (err) { console.log(err); }) - .then(function (data) { console.log(data); }); +steem.api.getAccounts(["username"], function(e1, accounts) { + var accountValueInUSD = steem.formatter.estimateAccountValue(accounts[0]) + .catch(function (err) { console.log(err); }) + .then(function (data) { console.log(data); }); }); ``` @@ -2545,5 +2537,5 @@ steem.utils.camelCase("example_string"); Return Example: ```js - "exampleString" +"exampleString" ``` From 274ebbfc427e1668efe325e66c48699065e82db9 Mon Sep 17 00:00:00 2001 From: Stormrose Date: Sun, 25 Feb 2018 05:29:56 +1300 Subject: [PATCH 13/94] Tickle the Circle.CI tests --- doc/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/README.md b/doc/README.md index 22c6e2bb..33eaf0b6 100644 --- a/doc/README.md +++ b/doc/README.md @@ -105,7 +105,6 @@ steem.api.cancelAllSubscriptions(function(err, result) { - - - - - - - - - - - - - - - - - - ### Get Trending Tags Returns a list of the currently trending tags in descending order by value. - ```js steem.api.getTrendingTags(afterTag, limit, function(err, result) { console.log(err, result); From 493fae7810946bc88c1484300a13d2eca0f95168 Mon Sep 17 00:00:00 2001 From: Stormrose Date: Sun, 25 Feb 2018 11:01:53 +1300 Subject: [PATCH 14/94] Tickle the tests again --- doc/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/README.md b/doc/README.md index 33eaf0b6..aeb11775 100644 --- a/doc/README.md +++ b/doc/README.md @@ -43,8 +43,7 @@ steem.api.getAccounts(['ned', 'dan'], function(err, response) { ``` - - - - - - - - - - - - - - - - - - ## Config -Default config should work with steem. however you can change it to work with golos -as +Default config should work with steem. however you can change it to work with golos by ```js steem.api.setOptions({ url: 'wss://ws.golos.io' }); // assuming websocket is working at ws.golos.io steem.config.set('address_prefix','GLS'); From 0400e5f4415e54a9f9df8f61ff7177ce2931ccd2 Mon Sep 17 00:00:00 2001 From: "@justyy" Date: Tue, 15 May 2018 00:46:17 +0100 Subject: [PATCH 15/94] expose memo ? memo is missing in steem.min.js --- src/browser.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/browser.js b/src/browser.js index b3640595..9a948e79 100644 --- a/src/browser.js +++ b/src/browser.js @@ -1,5 +1,6 @@ const api = require("./api"); const auth = require("./auth"); +const memo = require("./auth/memo"); const broadcast = require("./broadcast"); const config = require("./config"); const formatter = require("./formatter")(api); @@ -8,6 +9,7 @@ const utils = require("./utils"); const steem = { api, auth, + memo, broadcast, config, formatter, From f051b0b714b98d560b7dbe38009396dc68d3d3e9 Mon Sep 17 00:00:00 2001 From: "Andrew Chaney (netuoso)" Date: Thu, 21 Jun 2018 12:08:04 -0500 Subject: [PATCH 16/94] small fix when sending STM1111111111111111111111111111111114T1Anm to disable witness --- src/auth/ecc/src/key_public.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/auth/ecc/src/key_public.js b/src/auth/ecc/src/key_public.js index 57233188..30024220 100644 --- a/src/auth/ecc/src/key_public.js +++ b/src/auth/ecc/src/key_public.js @@ -20,10 +20,20 @@ class PublicKey { } static fromBuffer(buffer) { - return new PublicKey(ecurve.Point.decodeFrom(secp256k1, buffer)); - } - - toBuffer(compressed = this.Q.compressed) { + if ( + buffer.toString("hex") === + "000000000000000000000000000000000000000000000000000000000000000000" + ) + return new PublicKey(null); + return new PublicKey(Point.decodeFrom(secp256k1, buffer)); + } + + toBuffer(compressed = this.Q ? this.Q.compressed : null) { + if (this.Q === null) + return Buffer.from( + "000000000000000000000000000000000000000000000000000000000000000000", + "hex" + ); return this.Q.getEncoded(compressed); } From ea40b3ad21c027e24a5ec74f3083cf989025f5f1 Mon Sep 17 00:00:00 2001 From: "Andrew Chaney (netuoso)" Date: Thu, 21 Jun 2018 13:16:23 -0500 Subject: [PATCH 17/94] Fix typo that removed call to ecurve --- src/auth/ecc/src/key_public.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/auth/ecc/src/key_public.js b/src/auth/ecc/src/key_public.js index 30024220..81791b08 100644 --- a/src/auth/ecc/src/key_public.js +++ b/src/auth/ecc/src/key_public.js @@ -25,7 +25,7 @@ class PublicKey { "000000000000000000000000000000000000000000000000000000000000000000" ) return new PublicKey(null); - return new PublicKey(Point.decodeFrom(secp256k1, buffer)); + return new PublicKey(ecurve.Point.decodeFrom(secp256k1, buffer)); } toBuffer(compressed = this.Q ? this.Q.compressed : null) { From 7418a74e744d0eedcfc5894332118072d62bece7 Mon Sep 17 00:00:00 2001 From: roadscape Date: Tue, 17 Jul 2018 14:42:42 -0500 Subject: [PATCH 18/94] add null key tests --- test/KeyFormats.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/test/KeyFormats.js b/test/KeyFormats.js index 530e2fee..a96b7d97 100644 --- a/test/KeyFormats.js +++ b/test/KeyFormats.js @@ -70,6 +70,16 @@ var test = function(key) { var address = Address.fromPublic(public_key, true, 56); assert.equal(key.Compressed_PTS, address.toString()); }); + + it("null hex to pubkey", function() { + var public_key = PublicKey.fromHex(key.null_hex); + assert.equal(key.null_address, public_key.toPublicKeyString()); + }); + + it("null pubkey to hex", function() { + var public_key = PublicKey.fromString(key.null_address); + assert.equal(key.null_hex, public_key.toHex()); + }); }); }; @@ -87,6 +97,9 @@ test({ Uncompressed_BTC: "STMLAFmEtM8as1mbmjVcj5dphLdPguXquimn", Compressed_BTC: "STMANNTSEaUviJgWLzJBersPmyFZBY4jJETY", Uncompressed_PTS: "STMEgj7RM6FBwSoccGaESJLC3Mi18785bM3T", - Compressed_PTS: "STMD5rYtofD6D4UHJH6mo953P5wpBfMhdMEi" + Compressed_PTS: "STMD5rYtofD6D4UHJH6mo953P5wpBfMhdMEi", + // https://github.com/steemit/steem-js/issues/267 + null_hex: "000000000000000000000000000000000000000000000000000000000000000000", + null_address: "STM1111111111111111111111111111111114T1Anm" }); From 733332d09582e95c0ea868a6ac5b6ee8a1f115ee Mon Sep 17 00:00:00 2001 From: roadscape Date: Fri, 7 Sep 2018 12:12:07 -0500 Subject: [PATCH 19/94] HF20 account creation ops --- src/auth/serializer/src/ChainTypes.js | 4 ++-- src/auth/serializer/src/operations.js | 28 ++++++++++++++++----------- src/broadcast/operations.js | 22 +++++++++++++-------- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/auth/serializer/src/ChainTypes.js b/src/auth/serializer/src/ChainTypes.js index ca49e2a6..b7a7737f 100644 --- a/src/auth/serializer/src/ChainTypes.js +++ b/src/auth/serializer/src/ChainTypes.js @@ -31,8 +31,8 @@ ChainTypes.operations= { comment_options: 19, set_withdraw_vesting_route: 20, limit_order_create2: 21, - challenge_authority: 22, - prove_authority: 23, + claim_account: 22, + create_claimed_account: 23, request_account_recovery: 24, recover_account: 25, change_recovery_account: 26, diff --git a/src/auth/serializer/src/operations.js b/src/auth/serializer/src/operations.js index b34d9fad..c6cf5b4a 100644 --- a/src/auth/serializer/src/operations.js +++ b/src/auth/serializer/src/operations.js @@ -377,18 +377,24 @@ let limit_order_create2 = new Serializer( } ); -let challenge_authority = new Serializer( - "challenge_authority", { - challenger: string, - challenged: string, - require_owner: bool +let claim_account = new Serializer( + "claim_account", { + creator: string, + fee: asset, + extensions: set(future_extensions) } ); -let prove_authority = new Serializer( - "prove_authority", { - challenged: string, - require_owner: bool +let create_claimed_account = new Serializer( + "create_claimed_account", { + creator: string, + new_account_name: string, + owner: authority, + active: authority, + posting: authority, + memo_key: public_key, + json_metadata: string, + extensions: set(future_extensions) } ); @@ -728,8 +734,8 @@ operation.st_operations = [ comment_options, set_withdraw_vesting_route, limit_order_create2, - challenge_authority, - prove_authority, + claim_account, + create_claimed_account, request_account_recovery, recover_account, change_recovery_account, diff --git a/src/broadcast/operations.js b/src/broadcast/operations.js index 0834f98b..aed1e99e 100644 --- a/src/broadcast/operations.js +++ b/src/broadcast/operations.js @@ -221,20 +221,26 @@ module.exports = [ ] }, { - "roles": ["posting", "active", "owner"], - "operation": "challenge_authority", + "roles": ["active", "owner"], + "operation": "claim_account", "params": [ - "challenger", - "challenged", - "require_owner" + "creator", + "fee", + "extensions" ] }, { "roles": ["active", "owner"], - "operation": "prove_authority", + "operation": "create_claimed_account", "params": [ - "challenged", - "require_owner" + "creator", + "new_account_name", + "owner", + "active", + "posting", + "memo_key", + "json_metadata", + "extensions" ] }, { From cda6c6f8dda96e991c0594406d069e392cfd7734 Mon Sep 17 00:00:00 2001 From: roadscape Date: Wed, 12 Sep 2018 15:33:25 -0500 Subject: [PATCH 20/94] testnet tests adjust --- test/Crypto.js | 4 +++- test/api.test.js | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/test/Crypto.js b/test/Crypto.js index 05280781..d35c6ee2 100644 --- a/test/Crypto.js +++ b/test/Crypto.js @@ -1,3 +1,4 @@ +import config from "../src/config" import { Aes, PrivateKey, PublicKey, Signature } from "../src/auth/ecc" import assert from "assert" @@ -28,8 +29,9 @@ describe("steem.auth: Crypto", function() { describe("steem.auth: derives", ()=> { + let prefix = config.get("address_prefix") let one_time_private = PrivateKey.fromHex("8fdfdde486f696fd7c6313325e14d3ff0c34b6e2c390d1944cbfe150f4457168") - let to_public = PublicKey.fromStringOrThrow("STM7vbxtK1WaZqXsiCHPcjVFBewVj8HFRd5Z5XZDpN6Pvb2dZcMqK") + let to_public = PublicKey.fromStringOrThrow(prefix + "7vbxtK1WaZqXsiCHPcjVFBewVj8HFRd5Z5XZDpN6Pvb2dZcMqK") let secret = one_time_private.get_shared_secret( to_public ) let child = hash.sha256( secret ) diff --git a/test/api.test.js b/test/api.test.js index fad95fe0..2d68884c 100644 --- a/test/api.test.js +++ b/test/api.test.js @@ -9,7 +9,9 @@ describe('steem.api:', function () { describe('setOptions', () => { it('works', () => { - steem.api.setOptions({ url: steem.config.get('websocket') }); + let url = steem.config.get('websocket'); + if(! url) url = steem.config.get('uri'); + steem.api.setOptions({ url: url, useAppbaseApi: true }); }); }); From 8ccaa94234c143b579d90f8757774f7782fa178d Mon Sep 17 00:00:00 2001 From: roadscape Date: Thu, 13 Sep 2018 14:56:16 -0500 Subject: [PATCH 21/94] add HF20 claim_account tests --- test/hf20-accounts.test.js | 78 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 test/hf20-accounts.test.js diff --git a/test/hf20-accounts.test.js b/test/hf20-accounts.test.js new file mode 100644 index 00000000..43945b2b --- /dev/null +++ b/test/hf20-accounts.test.js @@ -0,0 +1,78 @@ +import Promise from 'bluebird'; +import should from 'should'; +import steem from '../src'; + +const username = process.env.STEEM_USERNAME || 'guest123'; +const password = process.env.STEEM_PASSWORD; +const activeWif = steem.auth.toWif(username, password, 'active'); + +describe('steem.hf20-accounts:', () => { + it('has generated methods', () => { + should.exist(steem.broadcast.claimAccount); + should.exist(steem.broadcast.createClaimedAccount); + }); + + it('has promise methods', () => { + should.exist(steem.broadcast.claimAccountAsync); + should.exist(steem.broadcast.createClaimedAccountAsync); + }); + + + describe('claimAccount', () => { + + it('signs and verifies auth', function(done) { + let tx = { + 'operations': [[ + 'claim_account', { + 'creator': username, + 'fee': '0.000 TESTS'}]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + result.should.have.property('blockchain_version'); + if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP */ + result.should.have.property('blockchain_version', '0.21.0') + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + + }); + + it('claims and creates account', function(done) { + this.skip(); // (!) need test account with enough RC + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + result.should.have.property('blockchain_version'); + if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP */ + result.should.have.property('blockchain_version', '0.21.0') + + steem.broadcast.claimAccountAsync(activeWif, username, '0.000 TESTS', []).then((result) => { + let newAccountName = username + '-' + Math.floor(Math.random() * 10000); + let keys = steem.auth.generateKeys( + username, password, ['posting', 'active', 'owner', 'memo']); + + steem.broadcast.createClaimedAccountAsync( + activeWif, + username, + newAccountName, + keys['owner'], + keys['active'], + keys['posting'], + keys['memo'], + {}, [] + ).then((result) => { + should.exist(result); + done(); + }, (err) => {done(err)}); + }, (err) => {done(err)}); + }); + }); + + }); +}); From 5fd9dd5d2cb9d080b48c685f176880158feb1bd7 Mon Sep 17 00:00:00 2001 From: roadscape Date: Thu, 13 Sep 2018 16:32:32 -0500 Subject: [PATCH 22/94] bump version to 0.7.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 83e34c12..c2d2b31b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@steemit/steem-js", - "version": "0.7.1", + "version": "0.7.2", "description": "Steem.js the JavaScript API for Steem blockchain", "main": "lib/index.js", "scripts": { From 8f0e71de25e6e7d59e9b6ecb2eeb377030d309ee Mon Sep 17 00:00:00 2001 From: roadscape Date: Fri, 14 Sep 2018 09:47:06 -0500 Subject: [PATCH 23/94] use uri by default, ws as fallback --- test/api.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/api.test.js b/test/api.test.js index 2d68884c..833d9df7 100644 --- a/test/api.test.js +++ b/test/api.test.js @@ -9,8 +9,8 @@ describe('steem.api:', function () { describe('setOptions', () => { it('works', () => { - let url = steem.config.get('websocket'); - if(! url) url = steem.config.get('uri'); + let url = steem.config.get('uri'); + if(! url) url = steem.config.get('websocket'); steem.api.setOptions({ url: url, useAppbaseApi: true }); }); }); From 94054da83c1f225c90dedbe678ce6d7e79f932fd Mon Sep 17 00:00:00 2001 From: Donovan Walker Date: Fri, 23 Nov 2018 17:47:24 -0600 Subject: [PATCH 24/94] #418 correct price feed ratio. Version bump 0.7.3 --- package.json | 2 +- src/formatter.js | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index c2d2b31b..f3ef3791 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@steemit/steem-js", - "version": "0.7.2", + "version": "0.7.3", "description": "Steem.js the JavaScript API for Steem blockchain", "main": "lib/index.js", "scripts": { diff --git a/src/formatter.js b/src/formatter.js index b794afd1..f0538d6f 100644 --- a/src/formatter.js +++ b/src/formatter.js @@ -51,6 +51,15 @@ module.exports = steemAPI => { return { savings_pending, savings_sbd_pending }; } + function pricePerSteem(feed_price) { + let price_per_steem = undefined; + const { base, quote } = feed_price; + if (/ SBD$/.test(base) && / STEEM$/.test(quote)) { + price_per_steem = parseFloat(base.split(" ")[0]) / parseFloat(quote.split(" ")[0]); + } + return price_per_steem; + } + function estimateAccountValue( account, { gprops, feed_price, open_orders, savings_withdraws, vesting_steem } = {} @@ -97,10 +106,8 @@ module.exports = steemAPI => { } return Promise.all(promises).then(() => { - let price_per_steem = undefined; - const { base, quote } = feed_price; - if (/ SBD$/.test(base) && / STEEM$/.test(quote)) - price_per_steem = parseFloat(base.split(" ")[0]); + let price_per_steem = pricePerSteem(feed_price); + const savings_balance = account.savings_balance; const savings_sbd_balance = account.savings_sbd_balance; const balance_steem = parseFloat(account.balance.split(" ")[0]); @@ -193,6 +200,7 @@ module.exports = steemAPI => { numberWithCommas, vestingSteem, estimateAccountValue, - createSuggestedPassword + createSuggestedPassword, + pricePerSteem }; }; From de2244a87efe89baee0fec94f42ab878a4ca2e37 Mon Sep 17 00:00:00 2001 From: Roger Jungemann Date: Mon, 7 Jan 2019 22:43:02 -0800 Subject: [PATCH 25/94] Opt-in retriability for HTTP transport --- package.json | 1 + src/api/transports/base.js | 1 - src/api/transports/http.js | 46 ++++++++-- test/api.test.js | 176 +++++++++++++++++++++++++++++++++++++ 4 files changed, 218 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index f3ef3791..284d9ed4 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "detect-node": "^2.0.3", "ecurve": "^1.0.5", "lodash": "^4.16.4", + "retry": "^0.12.0", "secure-random": "^1.1.1", "ws": "^3.3.2" }, diff --git a/src/api/transports/base.js b/src/api/transports/base.js index 860c2e9a..15bb7afb 100644 --- a/src/api/transports/base.js +++ b/src/api/transports/base.js @@ -27,7 +27,6 @@ export default class Transport extends EventEmitter { send() {} start() {} stop() {} - } Promise.promisifyAll(Transport.prototype); diff --git a/src/api/transports/http.js b/src/api/transports/http.js index 70c9139d..5d5bce3c 100644 --- a/src/api/transports/http.js +++ b/src/api/transports/http.js @@ -1,5 +1,6 @@ import fetch from 'cross-fetch'; import newDebug from 'debug'; +import retry from 'retry'; import Transport from './base'; const debug = newDebug('steem:http'); @@ -13,9 +14,9 @@ class RPCError extends Error { } } -export function jsonRpc(uri, {method, id, params}) { +export function jsonRpc(uri, {method, id, params, fetchMethod}) { const payload = {id, jsonrpc: '2.0', method, params}; - return fetch(uri, { + return (fetchMethod || fetch)(uri, { body: JSON.stringify(payload), method: 'post', mode: 'cors', @@ -42,12 +43,47 @@ export function jsonRpc(uri, {method, id, params}) { export default class HttpTransport extends Transport { send(api, data, callback) { if (this.options.useAppbaseApi) { - api = 'condenser_api'; + api = 'condenser_api'; } debug('Steem::send', api, data); const id = data.id || this.id++; const params = [api, data.method, data.params]; - jsonRpc(this.options.uri, {method: 'call', id, params}) - .then(res => { callback(null, res) }, err => { callback(err) }) + const retriable = this.retriable(api, data); + const fetchMethod = this.options.fetchMethod; + retriable.attempt((currentAttempt) => { + jsonRpc(this.options.uri, { method: 'call', id, params, fetchMethod }).then( + res => { callback(null, res); }, + err => { + if (retriable.retry(err)) return; + callback(retriable.mainError()); + } + ); + }); + } + + get nonRetriableOperations() { + return this.options.nonRetriableOperations || [ + 'broadcast_transaction', + 'broadcast_transaction_with_callback', + 'broadcast_transaction_synchronous', + 'broadcast_block', + ]; + } + + // An object which can be used to track retries. + retriable(api, data) { + if (this.nonRetriableOperations.some((o) => o === data.method)) { + // Do not retry if the operation is non-retriable. + return retry.operation({ retries: 0 }); + } else if (this.options.retry) { + // If `this.options.retry` is a map of options, use it. If + // `this.options.retry` is `true`, use default options. + return (Object(this.options.retry) === this.options.retry) ? + retry.operation(this.options.retry) : + retry.operation(); + } else { + // Otherwise, don't retry. + return retry.operation({ retries: 0 }); + } } } diff --git a/test/api.test.js b/test/api.test.js index 833d9df7..6c1b9c0f 100644 --- a/test/api.test.js +++ b/test/api.test.js @@ -150,4 +150,180 @@ describe('steem.api:', function () { }); }); + describe('with retry', () => { + afterEach(() => { + // NOTE: We should reset `steem.api.options` after *every* test. + steem.api.setOptions({ + url: 'https://api.steemit.com', + retry: null, + fetchMethod: null, + }); + }); + + it('works by default', async function() { + let attempts = 0; + steem.api.setOptions({ + url: 'https://api.steemit.com', + fetchMethod: (uri, req) => new Promise((res, rej) => { + const data = JSON.parse(req.body); + res({ + ok: true, + json: () => Promise.resolve({ + jsonrpc: '2.0', + id: data.id, + result: ['ned'], + }), + }); + attempts++; + }), + }); + const result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5) + assert.equal(attempts, 1); + assert.deepEqual(result, ['ned']); + }); + + it('does not retry by default', async() => { + let attempts = 0; + steem.api.setOptions({ + url: 'https://api.steemit.com', + fetchMethod: (uri, req) => new Promise((res, rej) => { + rej(new Error('Bad request')); + attempts++; + }), + }); + + let result; + let errored = false; + try { + result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5) + } catch (e) { + errored = true; + } + assert.equal(attempts, 1); + assert.equal(errored, true); + }); + + it('works with retry passed as a boolean', async() => { + let attempts = 0; + steem.api.setOptions({ + url: 'https://api.steemit.com', + fetchMethod: (uri, req) => new Promise((res, rej) => { + const data = JSON.parse(req.body); + res({ + ok: true, + json: () => Promise.resolve({ + jsonrpc: '2.0', + id: data.id, + result: ['ned'], + }), + }); + attempts++; + }), + }); + + const result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5) + assert.equal(attempts, 1); + assert.deepEqual(result, ['ned']); + }); + + it('retries with retry passed as a boolean', async() => { + let attempts = 0; + steem.api.setOptions({ + url: 'https://api.steemit.com', + retry: true, + fetchMethod: (uri, req) => new Promise((res, rej) => { + if (attempts < 1) { + rej(new Error('Bad request')); + } else { + const data = JSON.parse(req.body); + res({ + ok: true, + json: () => Promise.resolve({ + jsonrpc: '2.0', + id: data.id, + result: ['ned'], + }), + }); + } + attempts++; + }), + }); + + let result; + let errored = false; + try { + result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5); + } catch (e) { + errored = true; + } + assert.equal(attempts, 2); + assert.equal(errored, false); + assert.deepEqual(result, ['ned']); + }); + + it('works with retry passed as an object', async() => { + steem.api.setOptions({ + url: 'https://api.steemit.com', + retry: { + retries: 3, + minTimeout: 1, // 1ms + }, + fetchMethod: (uri, req) => new Promise((res, rej) => { + const data = JSON.parse(req.body); + res({ + ok: 'true', + json: () => Promise.resolve({ + jsonrpc: '2.0', + id: data.id, + result: ['ned'], + }), + }); + }), + }); + + const result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5); + assert.deepEqual(result, ['ned']); + }); + + it('retries with retry passed as an object', async() => { + let attempts = 0; + steem.api.setOptions({ + url: 'https://api.steemit.com', + retry: { + retries: 3, + minTimeout: 1, + }, + fetchMethod: (uri, req) => new Promise((res, rej) => { + if (attempts < 1) { + rej(new Error('Bad request')); + } else { + const data = JSON.parse(req.body); + res({ + ok: true, + json: () => Promise.resolve({ + jsonrpc: '2.0', + id: data.id, + result: ['ned'], + }), + }); + } + attempts++; + }), + }); + + let result; + let errored = false; + try { + result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5); + } catch (e) { + errored = true; + } + assert.equal(attempts, 2); + assert.equal(errored, false); + assert.deepEqual(result, ['ned']); + }); + + it('does not retry non-retriable operations'); + }); + }); From 84a8ff8c54bf8504daa96c76d117be31a0b9832a Mon Sep 17 00:00:00 2001 From: Roger Jungemann Date: Tue, 8 Jan 2019 09:38:30 -0800 Subject: [PATCH 26/94] Add some temporary logging --- src/api/transports/http.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/api/transports/http.js b/src/api/transports/http.js index 5d5bce3c..b623a3cb 100644 --- a/src/api/transports/http.js +++ b/src/api/transports/http.js @@ -54,7 +54,11 @@ export default class HttpTransport extends Transport { jsonRpc(this.options.uri, { method: 'call', id, params, fetchMethod }).then( res => { callback(null, res); }, err => { - if (retriable.retry(err)) return; + console.error('An error occurred hitting the Steem API:', err); + if (retriable.retry(err)) { + console.errror('Retrying...'); + return; + } callback(retriable.mainError()); } ); From 8d50e59e777c779de7b564b929e1f8e12b01f054 Mon Sep 17 00:00:00 2001 From: Roger Jungemann Date: Tue, 8 Jan 2019 14:28:06 -0800 Subject: [PATCH 27/94] Re-run CircleCI From ee425374fe2875d0cdce3c83fc945447bcf53c81 Mon Sep 17 00:00:00 2001 From: Roger Jungemann Date: Tue, 8 Jan 2019 14:57:03 -0800 Subject: [PATCH 28/94] Try and fix flaky tests --- test/api.test.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/api.test.js b/test/api.test.js index 6c1b9c0f..12978f5b 100644 --- a/test/api.test.js +++ b/test/api.test.js @@ -1,6 +1,7 @@ require('babel-polyfill'); import assert from 'assert'; import should from 'should'; +import lodash from 'lodash'; import testPost from './test-post.json'; import steem from '../src'; @@ -151,10 +152,15 @@ describe('steem.api:', function () { }); describe('with retry', () => { - afterEach(() => { + let oldUrl; + before(() => { + oldUrl = steem.api.options.url; + }); + + after(() => { // NOTE: We should reset `steem.api.options` after *every* test. steem.api.setOptions({ - url: 'https://api.steemit.com', + url: oldUrl, retry: null, fetchMethod: null, }); From ecffc3be1ae4554e9f2406b14eb8642ca0b1a278 Mon Sep 17 00:00:00 2001 From: Roger Jungemann Date: Tue, 8 Jan 2019 15:23:04 -0800 Subject: [PATCH 29/94] Try and fix flaky tests --- src/api/transports/http.js | 31 +++++++++++++++++----------- test/api.test.js | 41 +++++++++++++++----------------------- 2 files changed, 35 insertions(+), 37 deletions(-) diff --git a/src/api/transports/http.js b/src/api/transports/http.js index b623a3cb..e14a7eff 100644 --- a/src/api/transports/http.js +++ b/src/api/transports/http.js @@ -50,19 +50,26 @@ export default class HttpTransport extends Transport { const params = [api, data.method, data.params]; const retriable = this.retriable(api, data); const fetchMethod = this.options.fetchMethod; - retriable.attempt((currentAttempt) => { + if (retriable) { + retriable.attempt((currentAttempt) => { + jsonRpc(this.options.uri, { method: 'call', id, params, fetchMethod }).then( + res => { callback(null, res); }, + err => { + console.error('An error occurred hitting the Steem API:', err); + if (retriable.retry(err)) { + console.errror('Retrying...'); + return; + } + callback(retriable.mainError()); + } + ); + }); + } else { jsonRpc(this.options.uri, { method: 'call', id, params, fetchMethod }).then( res => { callback(null, res); }, - err => { - console.error('An error occurred hitting the Steem API:', err); - if (retriable.retry(err)) { - console.errror('Retrying...'); - return; - } - callback(retriable.mainError()); - } + err => { callback(err); } ); - }); + } } get nonRetriableOperations() { @@ -78,7 +85,7 @@ export default class HttpTransport extends Transport { retriable(api, data) { if (this.nonRetriableOperations.some((o) => o === data.method)) { // Do not retry if the operation is non-retriable. - return retry.operation({ retries: 0 }); + return null; } else if (this.options.retry) { // If `this.options.retry` is a map of options, use it. If // `this.options.retry` is `true`, use default options. @@ -87,7 +94,7 @@ export default class HttpTransport extends Transport { retry.operation(); } else { // Otherwise, don't retry. - return retry.operation({ retries: 0 }); + return null; } } } diff --git a/test/api.test.js b/test/api.test.js index 12978f5b..574a07bc 100644 --- a/test/api.test.js +++ b/test/api.test.js @@ -1,9 +1,9 @@ require('babel-polyfill'); import assert from 'assert'; import should from 'should'; -import lodash from 'lodash'; import testPost from './test-post.json'; import steem from '../src'; +import api from '../src/api'; describe('steem.api:', function () { this.timeout(30 * 1000); @@ -152,23 +152,14 @@ describe('steem.api:', function () { }); describe('with retry', () => { - let oldUrl; - before(() => { - oldUrl = steem.api.options.url; - }); - - after(() => { - // NOTE: We should reset `steem.api.options` after *every* test. - steem.api.setOptions({ - url: oldUrl, - retry: null, - fetchMethod: null, - }); + let steemApi; + beforeEach(() => { + steemApi = new api.Steem({}); }); it('works by default', async function() { let attempts = 0; - steem.api.setOptions({ + steemApi.setOptions({ url: 'https://api.steemit.com', fetchMethod: (uri, req) => new Promise((res, rej) => { const data = JSON.parse(req.body); @@ -183,14 +174,14 @@ describe('steem.api:', function () { attempts++; }), }); - const result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5) + const result = await steemApi.getFollowersAsync('ned', 0, 'blog', 5) assert.equal(attempts, 1); assert.deepEqual(result, ['ned']); }); it('does not retry by default', async() => { let attempts = 0; - steem.api.setOptions({ + steemApi.setOptions({ url: 'https://api.steemit.com', fetchMethod: (uri, req) => new Promise((res, rej) => { rej(new Error('Bad request')); @@ -201,7 +192,7 @@ describe('steem.api:', function () { let result; let errored = false; try { - result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5) + result = await steemApi.getFollowersAsync('ned', 0, 'blog', 5) } catch (e) { errored = true; } @@ -211,7 +202,7 @@ describe('steem.api:', function () { it('works with retry passed as a boolean', async() => { let attempts = 0; - steem.api.setOptions({ + steemApi.setOptions({ url: 'https://api.steemit.com', fetchMethod: (uri, req) => new Promise((res, rej) => { const data = JSON.parse(req.body); @@ -227,14 +218,14 @@ describe('steem.api:', function () { }), }); - const result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5) + const result = await steemApi.getFollowersAsync('ned', 0, 'blog', 5) assert.equal(attempts, 1); assert.deepEqual(result, ['ned']); }); it('retries with retry passed as a boolean', async() => { let attempts = 0; - steem.api.setOptions({ + steemApi.setOptions({ url: 'https://api.steemit.com', retry: true, fetchMethod: (uri, req) => new Promise((res, rej) => { @@ -258,7 +249,7 @@ describe('steem.api:', function () { let result; let errored = false; try { - result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5); + result = await steemApi.getFollowersAsync('ned', 0, 'blog', 5); } catch (e) { errored = true; } @@ -268,7 +259,7 @@ describe('steem.api:', function () { }); it('works with retry passed as an object', async() => { - steem.api.setOptions({ + steemApi.setOptions({ url: 'https://api.steemit.com', retry: { retries: 3, @@ -287,13 +278,13 @@ describe('steem.api:', function () { }), }); - const result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5); + const result = await steemApi.getFollowersAsync('ned', 0, 'blog', 5); assert.deepEqual(result, ['ned']); }); it('retries with retry passed as an object', async() => { let attempts = 0; - steem.api.setOptions({ + steemApi.setOptions({ url: 'https://api.steemit.com', retry: { retries: 3, @@ -320,7 +311,7 @@ describe('steem.api:', function () { let result; let errored = false; try { - result = await steem.api.getFollowersAsync('ned', 0, 'blog', 5); + result = await steemApi.getFollowersAsync('ned', 0, 'blog', 5); } catch (e) { errored = true; } From 7cb1e294a06b4fee6030158ee9030dfb40416742 Mon Sep 17 00:00:00 2001 From: Roger Jungemann Date: Tue, 8 Jan 2019 15:35:40 -0800 Subject: [PATCH 30/94] Bump @steemit/rpc-auth --- package.json | 2 +- yarn.lock | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 284d9ed4..d75111a7 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ }, "homepage": "https://github.com/steemit/steem-js#readme", "dependencies": { - "@steemit/rpc-auth": "^1.1.0", + "@steemit/rpc-auth": "^1.1.1", "bigi": "^1.4.2", "bluebird": "^3.4.6", "browserify-aes": "^1.0.6", diff --git a/yarn.lock b/yarn.lock index 26d01555..448ab403 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6,9 +6,10 @@ version "1.0.1" resolved "https://registry.yarnpkg.com/@steemit/libcrypto/-/libcrypto-1.0.1.tgz#c31ab3e5deb667628169b3d54d746b015de31a79" -"@steemit/rpc-auth@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@steemit/rpc-auth/-/rpc-auth-1.1.0.tgz#4170c04d928ef37af5bdbde3f517ef74909480bd" +"@steemit/rpc-auth@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@steemit/rpc-auth/-/rpc-auth-1.1.1.tgz#8f6239e89783d2b251b49e9e1b9486b5d167f944" + integrity sha512-Eb8BW3O1y4+/+Dbf+LqGVmgXYqyfHxP9mBlmzkpjXiIepTpxoK90NIGrneqcnEGq0TR2nSt4BVv9Ur9c+hxoig== dependencies: "@steemit/libcrypto" "^1.0.1" @@ -2776,6 +2777,11 @@ restore-cursor@^1.0.1: exit-hook "^1.0.0" onetime "^1.0.0" +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" From 545c15d8b2763cb2e3a19e0f26f95fe83962171d Mon Sep 17 00:00:00 2001 From: Roger Jungemann Date: Tue, 8 Jan 2019 16:41:23 -0800 Subject: [PATCH 31/94] Bump package version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d75111a7..ac4ce7e0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@steemit/steem-js", - "version": "0.7.3", + "version": "0.7.4", "description": "Steem.js the JavaScript API for Steem blockchain", "main": "lib/index.js", "scripts": { From 6df505b0697099838bf666ba2aa4174859672e9b Mon Sep 17 00:00:00 2001 From: Roger Jungemann Date: Wed, 9 Jan 2019 12:28:31 -0800 Subject: [PATCH 32/94] Address PR comments --- src/api/transports/http.js | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/api/transports/http.js b/src/api/transports/http.js index e14a7eff..4853daa9 100644 --- a/src/api/transports/http.js +++ b/src/api/transports/http.js @@ -14,9 +14,20 @@ class RPCError extends Error { } } -export function jsonRpc(uri, {method, id, params, fetchMethod}) { +/** + * Makes a JSON-RPC request using `fetch` or a user-provided `fetchMethod`. + * + * @param {string} uri - The URI to the JSON-RPC endpoint. + * @param {string} options.method - The remote JSON-RPC method to call. + * @param {string} options.id - ID for the request, for matching to a response. + * @param {*} options.params - The params for the remote method. + * @param {function} [options.fetchMethod=fetch] - A function with the same + * signature as `fetch`, which can be used to make the network request, or for + * stubbing in tests. + */ +export function jsonRpc(uri, {method, id, params, fetchMethod=fetch}) { const payload = {id, jsonrpc: '2.0', method, params}; - return (fetchMethod || fetch)(uri, { + return fetchMethod(uri, { body: JSON.stringify(payload), method: 'post', mode: 'cors', @@ -55,9 +66,7 @@ export default class HttpTransport extends Transport { jsonRpc(this.options.uri, { method: 'call', id, params, fetchMethod }).then( res => { callback(null, res); }, err => { - console.error('An error occurred hitting the Steem API:', err); if (retriable.retry(err)) { - console.errror('Retrying...'); return; } callback(retriable.mainError()); @@ -86,12 +95,12 @@ export default class HttpTransport extends Transport { if (this.nonRetriableOperations.some((o) => o === data.method)) { // Do not retry if the operation is non-retriable. return null; + } else if (Object(this.options.retry) === this.options.retry) { + // If `this.options.retry` is a map of options, pass those to operation. + return retry.operation(this.options.retry); } else if (this.options.retry) { - // If `this.options.retry` is a map of options, use it. If - // `this.options.retry` is `true`, use default options. - return (Object(this.options.retry) === this.options.retry) ? - retry.operation(this.options.retry) : - retry.operation(); + // If `this.options.retry` is `true`, use default options. + return retry.operation(); } else { // Otherwise, don't retry. return null; From 9fd0c264897c4633cea5762afe1dd4f8949e814e Mon Sep 17 00:00:00 2001 From: roadscape Date: Wed, 9 Jan 2019 15:48:22 -0600 Subject: [PATCH 33/94] bump ci From d243d18dd0ede173e7194ef679d08c882e4ec238 Mon Sep 17 00:00:00 2001 From: Steffen Date: Fri, 1 Feb 2019 09:27:02 +0100 Subject: [PATCH 34/94] Fix wrong usage of string template (fixes #423) This causes an exception when trying to get `estimateAccountValue` for a user that is not yet cached. --- src/formatter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/formatter.js b/src/formatter.js index f0538d6f..987c0b39 100644 --- a/src/formatter.js +++ b/src/formatter.js @@ -72,7 +72,7 @@ module.exports = steemAPI => { if (!vesting_steem || !feed_price) { if (!gprops || !feed_price) { promises.push( - steemAPI.getStateAsync(`/@{username}`).then(data => { + steemAPI.getStateAsync(`/@${username}`).then(data => { gprops = data.props; feed_price = data.feed_price; vesting_steem = vestingSteem(account, gprops); From f1adf8144f8db87d2b395df25f5be2a0c6c0694f Mon Sep 17 00:00:00 2001 From: Roger Jungemann Date: Sun, 14 Apr 2019 14:40:16 -0700 Subject: [PATCH 35/94] Allow for transaction against a currently-empty chain --- package-lock.json | 0 src/broadcast/index.js | 2 +- test/broadcast.test.js | 61 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..e69de29b diff --git a/src/broadcast/index.js b/src/broadcast/index.js index 81ecfe22..4b79ebc9 100644 --- a/src/broadcast/index.js +++ b/src/broadcast/index.js @@ -55,7 +55,7 @@ steemBroadcast._prepareTransaction = function steemBroadcast$_prepareTransaction const chainDate = new Date(properties.time + 'Z'); const refBlockNum = (properties.last_irreversible_block_num - 1) & 0xFFFF; return steemApi.getBlockAsync(properties.last_irreversible_block_num).then((block) => { - const headBlockId = block.previous; + const headBlockId = block ? block.previous : '0000000000000000000000000000000000000000'; return Object.assign({ ref_block_num: refBlockNum, ref_block_prefix: new Buffer(headBlockId, 'hex').readUInt32LE(4), diff --git a/test/broadcast.test.js b/test/broadcast.test.js index 7fe02325..abecac65 100644 --- a/test/broadcast.test.js +++ b/test/broadcast.test.js @@ -51,6 +51,67 @@ describe('steem.broadcast:', () => { }); }); + describe('no blocks on chain', () => { + it('works', async () => { + const newAccountName = username + '-' + Math.floor(Math.random() * 10000); + const keys = steem.auth.generateKeys( + username, password, ['posting', 'active', 'owner', 'memo']); + + const oldGetDynamicGlobalProperties = steem.api.getDynamicGlobalPropertiesAsync; + steem.api.getDynamicGlobalPropertiesAsync = () => Promise.resolve({ + time: '2019-04-14T21:30:56', + last_irreversible_block_num: 32047459, + }); + + // If the block returned is `null`, then no blocks are on the chain yet. + const oldGetBlockAsync = steem.api.getBlockAsync; + steem.api.getBlockAsync = () => Promise.resolve(null); + + try { + const tx = await steem.broadcast._prepareTransaction({ + extensions: [], + operations: [[ + 'account_create', + { + fee: '0.000 TESTS', + creator: username, + new_account_name: newAccountName, + owner: { + weight_threshold: 1, + account_auths: [], + key_auths: [[keys.owner, 1]], + }, + active: { + weight_threshold: 1, + account_auths: [], + key_auths: [[keys.active, 1]], + }, + posting: { + weight_threshold: 1, + account_auths: [], + key_auths: [[keys.posting, 1]], + }, + memo_key: keys.memo, + json_metadata: '', + extensions: [], + } + ]], + }); + + tx.should.have.properties([ + 'expiration', + 'ref_block_num', + 'ref_block_prefix', + 'extensions', + 'operations', + ]); + } finally { + steem.api.getDynamicGlobalPropertiesAsync = oldGetDynamicGlobalProperties; + steem.api.getBlockAsync = oldGetBlockAsync; + } + }); + }); + describe('downvoting', () => { it('works', async () => { const tx = await steem.broadcast.voteAsync( From acf513e829bdc748bf33a87c93b6e62d07582528 Mon Sep 17 00:00:00 2001 From: Justin Welch Date: Wed, 8 May 2019 14:01:11 -0400 Subject: [PATCH 36/94] switch to get_block_header for obtaining previous block id --- src/broadcast/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/broadcast/index.js b/src/broadcast/index.js index 81ecfe22..7a2f322d 100644 --- a/src/broadcast/index.js +++ b/src/broadcast/index.js @@ -54,7 +54,7 @@ steemBroadcast._prepareTransaction = function steemBroadcast$_prepareTransaction // Set defaults on the transaction const chainDate = new Date(properties.time + 'Z'); const refBlockNum = (properties.last_irreversible_block_num - 1) & 0xFFFF; - return steemApi.getBlockAsync(properties.last_irreversible_block_num).then((block) => { + return steemApi.getBlockHeaderAsync(properties.last_irreversible_block_num).then((block) => { const headBlockId = block.previous; return Object.assign({ ref_block_num: refBlockNum, From 76d4cb610a4e41d9fb123d43da73b8b09a59937c Mon Sep 17 00:00:00 2001 From: justinw Date: Thu, 9 May 2019 13:13:17 -0400 Subject: [PATCH 37/94] Add circle ci 2.0 config file --- .circleci/config.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..a7529592 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,23 @@ +version: 2 +jobs: + build: + docker: + - image: docker:17-git + steps: + - checkout + - setup_remote_docker + - run: + name: Build Docker image + command: docker build -f node-6.dockerfile -t steemjs . + - run: + name: Save Docker image + command: docker save -o steemjs.tar steemjs + - persist_to_workspace: + root: . + paths: + - steemjs.tar +workflows: + version: 2 + condenser: + jobs: + - build From 5649ba7ef5ca13fdf869b70df2ffab7f4f66c949 Mon Sep 17 00:00:00 2001 From: Justin Welch Date: Thu, 9 May 2019 15:35:51 -0400 Subject: [PATCH 38/94] Bump version (#440) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ac4ce7e0..1151e7fc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@steemit/steem-js", - "version": "0.7.4", + "version": "0.7.5", "description": "Steem.js the JavaScript API for Steem blockchain", "main": "lib/index.js", "scripts": { From 38d8eb364ce7e5221354b31032789c473d05c6a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wiktor=20Tkaczy=C5=84ski?= Date: Thu, 23 May 2019 12:26:26 +0200 Subject: [PATCH 39/94] fix: update secure-random. fixes #398 --- package.json | 2 +- yarn.lock | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 1151e7fc..a0319d23 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "ecurve": "^1.0.5", "lodash": "^4.16.4", "retry": "^0.12.0", - "secure-random": "^1.1.1", + "secure-random": "^1.1.2", "ws": "^3.3.2" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 448ab403..7e5e097c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2823,9 +2823,10 @@ samsam@1.1.2, samsam@~1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" -secure-random@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/secure-random/-/secure-random-1.1.1.tgz#0880f2d8c5185f4bcb4684058c836b4ddb07145a" +secure-random@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/secure-random/-/secure-random-1.1.2.tgz#ed103b460a851632d420d46448b2a900a41e7f7c" + integrity sha512-H2bdSKERKdBV1SwoqYm6C0y+9EA94v6SUBOWO8kDndc4NoUih7Dv6Tsgma7zO1lv27wIvjlD0ZpMQk7um5dheQ== semver@^5.3.0: version "5.4.1" From 791c7930a952415a0ee45855142e52ee0c657f8e Mon Sep 17 00:00:00 2001 From: motrebski Date: Mon, 4 Mar 2019 14:00:25 +0100 Subject: [PATCH 40/94] Sps proposal system adjustment --- src/api/methods.js | 1002 +++++++++++++------------ src/api/transports/ws.js | 8 +- src/auth/serializer/src/ChainTypes.js | 31 +- src/auth/serializer/src/operations.js | 288 +++---- src/broadcast/operations.js | 30 + 5 files changed, 719 insertions(+), 640 deletions(-) diff --git a/src/api/methods.js b/src/api/methods.js index fa2b4252..fa1afa04 100644 --- a/src/api/methods.js +++ b/src/api/methods.js @@ -1,495 +1,511 @@ export default [ - { - "api": "database_api", - "method": "set_subscribe_callback", - "params": ["callback", "clearFilter"] - }, - { - "api": "database_api", - "method": "set_pending_transaction_callback", - "params": ["cb"] - }, - { - "api": "database_api", - "method": "set_block_applied_callback", - "params": ["cb"] - }, - { - "api": "database_api", - "method": "cancel_all_subscriptions" - }, - { - "api": "database_api", - "method": "get_trending_tags", - "params": ["afterTag", "limit"] - }, - { - "api": "database_api", - "method": "get_tags_used_by_author", - "params": ["author"] - }, - { - "api": "database_api", - "method": "get_post_discussions_by_payout", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_comment_discussions_by_payout", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_trending", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_trending30", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_created", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_active", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_cashout", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_payout", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_votes", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_children", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_hot", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_feed", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_blog", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_comments", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_discussions_by_promoted", - "params": ["query"] - }, - { - "api": "database_api", - "method": "get_block_header", - "params": ["blockNum"] - }, - { - "api": "database_api", - "method": "get_block", - "params": ["blockNum"] - }, - { - "api": "database_api", - "method": "get_ops_in_block", - "params": ["blockNum", "onlyVirtual"] - }, - { - "api": "database_api", - "method": "get_state", - "params": ["path"] - }, - { - "api": "database_api", - "method": "get_trending_categories", - "params": ["after", "limit"] - }, - { - "api": "database_api", - "method": "get_best_categories", - "params": ["after", "limit"] - }, - { - "api": "database_api", - "method": "get_active_categories", - "params": ["after", "limit"] - }, - { - "api": "database_api", - "method": "get_recent_categories", - "params": ["after", "limit"] - }, - { - "api": "database_api", - "method": "get_config" - }, - { - "api": "database_api", - "method": "get_dynamic_global_properties" - }, - { - "api": "database_api", - "method": "get_chain_properties" - }, - { - "api": "database_api", - "method": "get_feed_history" - }, - { - "api": "database_api", - "method": "get_current_median_history_price" - }, - { - "api": "database_api", - "method": "get_witness_schedule" - }, - { - "api": "database_api", - "method": "get_hardfork_version" - }, - { - "api": "database_api", - "method": "get_next_scheduled_hardfork" - }, - { - "api": "account_by_key_api", - "method": "get_key_references", - "params": ["key"] - }, - { - "api": "database_api", - "method": "get_accounts", - "params": ["names"] - }, - { - "api": "database_api", - "method": "get_account_references", - "params": ["accountId"] - }, - { - "api": "database_api", - "method": "lookup_account_names", - "params": ["accountNames"] - }, - { - "api": "database_api", - "method": "lookup_accounts", - "params": ["lowerBoundName", "limit"] - }, - { - "api": "database_api", - "method": "get_account_count" - }, - { - "api": "database_api", - "method": "get_conversion_requests", - "params": ["accountName"] - }, - { - "api": "database_api", - "method": "get_account_history", - "params": ["account", "from", "limit"] - }, - { - "api": "database_api", - "method": "get_owner_history", - "params": ["account"] - }, - { - "api": "database_api", - "method": "get_recovery_request", - "params": ["account"] - }, - { - "api": "database_api", - "method": "get_escrow", - "params": ["from", "escrowId"] - }, - { - "api": "database_api", - "method": "get_withdraw_routes", - "params": ["account", "withdrawRouteType"] - }, - { - "api": "database_api", - "method": "get_account_bandwidth", - "params": ["account", "bandwidthType"] - }, - { - "api": "database_api", - "method": "get_savings_withdraw_from", - "params": ["account"] - }, - { - "api": "database_api", - "method": "get_savings_withdraw_to", - "params": ["account"] - }, - { - "api": "database_api", - "method": "get_order_book", - "params": ["limit"] - }, - { - "api": "database_api", - "method": "get_open_orders", - "params": ["owner"] - }, - { - "api": "database_api", - "method": "get_liquidity_queue", - "params": ["startAccount", "limit"] - }, - { - "api": "database_api", - "method": "get_transaction_hex", - "params": ["trx"] - }, - { - "api": "database_api", - "method": "get_transaction", - "params": ["trxId"] - }, - { - "api": "database_api", - "method": "get_required_signatures", - "params": ["trx", "availableKeys"] - }, - { - "api": "database_api", - "method": "get_potential_signatures", - "params": ["trx"] - }, - { - "api": "database_api", - "method": "verify_authority", - "params": ["trx"] - }, - { - "api": "database_api", - "method": "verify_account_authority", - "params": ["nameOrId", "signers"] - }, - { - "api": "database_api", - "method": "get_active_votes", - "params": ["author", "permlink"] - }, - { - "api": "database_api", - "method": "get_account_votes", - "params": ["voter"] - }, - { - "api": "database_api", - "method": "get_content", - "params": ["author", "permlink"] - }, - { - "api": "database_api", - "method": "get_content_replies", - "params": ["author", "permlink"] - }, - { - "api": "database_api", - "method": "get_discussions_by_author_before_date", - "params": ["author", "startPermlink", "beforeDate", "limit"] - }, - { - "api": "database_api", - "method": "get_replies_by_last_update", - "params": ["startAuthor", "startPermlink", "limit"] - }, - { - "api": "database_api", - "method": "get_witnesses", - "params": ["witnessIds"] - }, - { - "api": "database_api", - "method": "get_witness_by_account", - "params": ["accountName"] - }, - { - "api": "database_api", - "method": "get_witnesses_by_vote", - "params": ["from", "limit"] - }, - { - "api": "database_api", - "method": "lookup_witness_accounts", - "params": ["lowerBoundName", "limit"] - }, - { - "api": "database_api", - "method": "get_witness_count" - }, - { - "api": "database_api", - "method": "get_active_witnesses" - }, - { - "api": "database_api", - "method": "get_miner_queue" - }, - { - "api": "database_api", - "method": "get_reward_fund", - "params": ["name"] - }, - { - "api": "database_api", - "method": "get_vesting_delegations", - "params": ["account", "from", "limit"] - }, - { - "api": "login_api", - "method": "login", - "params": ["username", "password"] - }, - { - "api": "login_api", - "method": "get_api_by_name", - "params": ["database_api"] - }, - { - "api": "login_api", - "method": "get_version" - }, - { - "api": "follow_api", - "method": "get_followers", - "params": ["following", "startFollower", "followType", "limit"] - }, - { - "api": "follow_api", - "method": "get_following", - "params": ["follower", "startFollowing", "followType", "limit"] - }, - { - "api": "follow_api", - "method": "get_follow_count", - "params": ["account"] - }, - { - "api": "follow_api", - "method": "get_feed_entries", - "params": ["account", "entryId", "limit" - ] - }, - { - "api": "follow_api", - "method": "get_feed", - "params": ["account", "entryId", "limit"] - }, - { - "api": "follow_api", - "method": "get_blog_entries", - "params": ["account", "entryId", "limit"] - }, - { - "api": "follow_api", - "method": "get_blog", - "params": ["account", "entryId", "limit"] - }, - { - "api": "follow_api", - "method": "get_account_reputations", - "params": ["lowerBoundName", "limit"] - }, - { - "api": "follow_api", - "method": "get_reblogged_by", - "params": ["author", "permlink"] - }, - { - "api": "follow_api", - "method": "get_blog_authors", - "params": ["blogAccount"] - }, - { - "api": "network_broadcast_api", - "method": "broadcast_transaction", - "params": ["trx"] - }, - { - "api": "network_broadcast_api", - "method": "broadcast_transaction_with_callback", - "params": ["confirmationCallback", "trx"] - }, - { - "api": "network_broadcast_api", - "method": "broadcast_transaction_synchronous", - "params": ["trx"] - }, - { - "api": "network_broadcast_api", - "method": "broadcast_block", - "params": ["b"] - }, - { - "api": "network_broadcast_api", - "method": "set_max_block_age", - "params": ["maxBlockAge"] - }, - { - "api": "market_history_api", - "method": "get_ticker", - "params": [] - }, - { - "api": "market_history_api", - "method": "get_volume", - "params": [] - }, - { - "api": "market_history_api", - "method": "get_order_book", - "method_name": "getMarketOrderBook", - "params": ["limit"] - }, - { - "api": "market_history_api", - "method": "get_trade_history", - "params": ["start", "end", "limit"] - }, - { - "api": "market_history_api", - "method": "get_recent_trades", - "params": ["limit"] - }, - { - "api": "market_history_api", - "method": "get_market_history", - "params": ["bucket_seconds" , "start", "end"] - }, - { - "api": "market_history_api", - "method": "get_market_history_buckets", - "params": [] - } + { + api: "database_api", + method: "set_subscribe_callback", + params: ["callback", "clearFilter"] + }, + { + api: "database_api", + method: "set_pending_transaction_callback", + params: ["cb"] + }, + { + api: "database_api", + method: "set_block_applied_callback", + params: ["cb"] + }, + { + api: "database_api", + method: "cancel_all_subscriptions" + }, + { + api: "database_api", + method: "get_trending_tags", + params: ["afterTag", "limit"] + }, + { + api: "database_api", + method: "get_tags_used_by_author", + params: ["author"] + }, + { + api: "database_api", + method: "get_post_discussions_by_payout", + params: ["query"] + }, + { + api: "database_api", + method: "get_comment_discussions_by_payout", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_trending", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_trending30", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_created", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_active", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_cashout", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_payout", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_votes", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_children", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_hot", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_feed", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_blog", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_comments", + params: ["query"] + }, + { + api: "database_api", + method: "get_discussions_by_promoted", + params: ["query"] + }, + { + api: "database_api", + method: "get_block_header", + params: ["blockNum"] + }, + { + api: "database_api", + method: "get_block", + params: ["blockNum"] + }, + { + api: "database_api", + method: "get_ops_in_block", + params: ["blockNum", "onlyVirtual"] + }, + { + api: "database_api", + method: "get_state", + params: ["path"] + }, + { + api: "database_api", + method: "get_trending_categories", + params: ["after", "limit"] + }, + { + api: "database_api", + method: "get_best_categories", + params: ["after", "limit"] + }, + { + api: "database_api", + method: "get_active_categories", + params: ["after", "limit"] + }, + { + api: "database_api", + method: "get_recent_categories", + params: ["after", "limit"] + }, + { + api: "database_api", + method: "get_config" + }, + { + api: "database_api", + method: "get_dynamic_global_properties" + }, + { + api: "database_api", + method: "get_chain_properties" + }, + { + api: "database_api", + method: "get_feed_history" + }, + { + api: "database_api", + method: "get_current_median_history_price" + }, + { + api: "database_api", + method: "get_witness_schedule" + }, + { + api: "database_api", + method: "get_hardfork_version" + }, + { + api: "database_api", + method: "get_next_scheduled_hardfork" + }, + { + api: "account_by_key_api", + method: "get_key_references", + params: ["key"] + }, + { + api: "database_api", + method: "get_accounts", + params: ["names"] + }, + { + api: "database_api", + method: "get_account_references", + params: ["accountId"] + }, + { + api: "database_api", + method: "lookup_account_names", + params: ["accountNames"] + }, + { + api: "database_api", + method: "lookup_accounts", + params: ["lowerBoundName", "limit"] + }, + { + api: "database_api", + method: "get_account_count" + }, + { + api: "database_api", + method: "get_conversion_requests", + params: ["accountName"] + }, + { + api: "database_api", + method: "get_account_history", + params: ["account", "from", "limit"] + }, + { + api: "database_api", + method: "get_owner_history", + params: ["account"] + }, + { + api: "database_api", + method: "get_recovery_request", + params: ["account"] + }, + { + api: "database_api", + method: "get_escrow", + params: ["from", "escrowId"] + }, + { + api: "database_api", + method: "get_withdraw_routes", + params: ["account", "withdrawRouteType"] + }, + { + api: "database_api", + method: "get_account_bandwidth", + params: ["account", "bandwidthType"] + }, + { + api: "database_api", + method: "get_savings_withdraw_from", + params: ["account"] + }, + { + api: "database_api", + method: "get_savings_withdraw_to", + params: ["account"] + }, + { + api: "database_api", + method: "get_order_book", + params: ["limit"] + }, + { + api: "database_api", + method: "get_open_orders", + params: ["owner"] + }, + { + api: "database_api", + method: "get_liquidity_queue", + params: ["startAccount", "limit"] + }, + { + api: "database_api", + method: "get_transaction_hex", + params: ["trx"] + }, + { + api: "database_api", + method: "get_transaction", + params: ["trxId"] + }, + { + api: "database_api", + method: "get_required_signatures", + params: ["trx", "availableKeys"] + }, + { + api: "database_api", + method: "get_potential_signatures", + params: ["trx"] + }, + { + api: "database_api", + method: "verify_authority", + params: ["trx"] + }, + { + api: "database_api", + method: "verify_account_authority", + params: ["nameOrId", "signers"] + }, + { + api: "database_api", + method: "get_active_votes", + params: ["author", "permlink"] + }, + { + api: "database_api", + method: "get_account_votes", + params: ["voter"] + }, + { + api: "database_api", + method: "get_content", + params: ["author", "permlink"] + }, + { + api: "database_api", + method: "get_content_replies", + params: ["author", "permlink"] + }, + { + api: "database_api", + method: "get_discussions_by_author_before_date", + params: ["author", "startPermlink", "beforeDate", "limit"] + }, + { + api: "database_api", + method: "get_replies_by_last_update", + params: ["startAuthor", "startPermlink", "limit"] + }, + { + api: "database_api", + method: "get_witnesses", + params: ["witnessIds"] + }, + { + api: "database_api", + method: "get_witness_by_account", + params: ["accountName"] + }, + { + api: "database_api", + method: "get_witnesses_by_vote", + params: ["from", "limit"] + }, + { + api: "database_api", + method: "lookup_witness_accounts", + params: ["lowerBoundName", "limit"] + }, + { + api: "database_api", + method: "get_witness_count" + }, + { + api: "database_api", + method: "get_active_witnesses" + }, + { + api: "database_api", + method: "get_miner_queue" + }, + { + api: "database_api", + method: "get_reward_fund", + params: ["name"] + }, + { + api: "database_api", + method: "get_vesting_delegations", + params: ["account", "from", "limit"] + }, + { + api: "login_api", + method: "login", + params: ["username", "password"] + }, + { + api: "login_api", + method: "get_api_by_name", + params: ["database_api"] + }, + { + api: "login_api", + method: "get_version" + }, + { + api: "follow_api", + method: "get_followers", + params: ["following", "startFollower", "followType", "limit"] + }, + { + api: "follow_api", + method: "get_following", + params: ["follower", "startFollowing", "followType", "limit"] + }, + { + api: "follow_api", + method: "get_follow_count", + params: ["account"] + }, + { + api: "follow_api", + method: "get_feed_entries", + params: ["account", "entryId", "limit"] + }, + { + api: "follow_api", + method: "get_feed", + params: ["account", "entryId", "limit"] + }, + { + api: "follow_api", + method: "get_blog_entries", + params: ["account", "entryId", "limit"] + }, + { + api: "follow_api", + method: "get_blog", + params: ["account", "entryId", "limit"] + }, + { + api: "follow_api", + method: "get_account_reputations", + params: ["lowerBoundName", "limit"] + }, + { + api: "follow_api", + method: "get_reblogged_by", + params: ["author", "permlink"] + }, + { + api: "follow_api", + method: "get_blog_authors", + params: ["blogAccount"] + }, + { + api: "network_broadcast_api", + method: "broadcast_transaction", + params: ["trx"] + }, + { + api: "network_broadcast_api", + method: "broadcast_transaction_with_callback", + params: ["confirmationCallback", "trx"] + }, + { + api: "network_broadcast_api", + method: "broadcast_transaction_synchronous", + params: ["trx"] + }, + { + api: "network_broadcast_api", + method: "broadcast_block", + params: ["b"] + }, + { + api: "network_broadcast_api", + method: "set_max_block_age", + params: ["maxBlockAge"] + }, + { + api: "market_history_api", + method: "get_ticker", + params: [] + }, + { + api: "market_history_api", + method: "get_volume", + params: [] + }, + { + api: "market_history_api", + method: "get_order_book", + method_name: "getMarketOrderBook", + params: ["limit"] + }, + { + api: "market_history_api", + method: "get_trade_history", + params: ["start", "end", "limit"] + }, + { + api: "market_history_api", + method: "get_recent_trades", + params: ["limit"] + }, + { + api: "market_history_api", + method: "get_market_history", + params: ["bucket_seconds", "start", "end"] + }, + { + api: "market_history_api", + method: "get_market_history_buckets", + params: [] + }, + // condenser_api is wrapper among others below three methods (sps_api, + // where "params" is object instead of array) + { + api: "condenser_api", + method: "find_proposals", + params: ["id_set"] + }, + { + api: "condenser_api", + method: "list_proposals", + params: ["start", "order_by", "order_direction", "limit", "status"] + }, + { + api: "condenser_api", + method: "list_voter_proposals", + params: ["voter", "order_by", "order_direction", "limit", "status"] + } ]; diff --git a/src/api/transports/ws.js b/src/api/transports/ws.js index 863ec4f5..1475a941 100644 --- a/src/api/transports/ws.js +++ b/src/api/transports/ws.js @@ -29,12 +29,12 @@ export default class WsTransport extends Transport { if (this.startPromise) { return this.startPromise; } - + this.startPromise = new Promise((resolve, reject) => { this.ws = new WebSocket(this.options.websocket); this.ws.onerror = (err) => { this.startPromise = null; - reject(err); + reject(err); }; this.ws.onopen = () => { this.isOpen = true; @@ -43,7 +43,7 @@ export default class WsTransport extends Transport { this.ws.onclose = this.onClose.bind(this); resolve(); }; - }); + }); return this.startPromise; } @@ -87,7 +87,7 @@ export default class WsTransport extends Transport { id: data.id || this.id++, method: 'call', jsonrpc: '2.0', - params: [api, data.method, data.params] + params: [api, data.method, data.params] } }; this.inFlight++; diff --git a/src/auth/serializer/src/ChainTypes.js b/src/auth/serializer/src/ChainTypes.js index b7a7737f..1b5cadeb 100644 --- a/src/auth/serializer/src/ChainTypes.js +++ b/src/auth/serializer/src/ChainTypes.js @@ -51,20 +51,23 @@ ChainTypes.operations= { claim_reward_balance: 39, delegate_vesting_shares: 40, account_create_with_delegation: 41, - fill_convert_request: 42, - author_reward: 43, - curation_reward: 44, - comment_reward: 45, - liquidity_reward: 46, - interest: 47, - fill_vesting_withdraw: 48, - fill_order: 49, - shutdown_witness: 50, - fill_transfer_from_savings: 51, - hardfork: 52, - comment_payout_update: 53, - return_vesting_delegation: 54, - comment_benefactor_reward: 55 + create_proposal: 42, + update_proposal_votes: 43, + remove_proposal: 44, + fill_convert_request: 45, + author_reward: 46, + curation_reward: 47, + comment_reward: 48, + liquidity_reward: 49, + interest: 50, + fill_vesting_withdraw: 51, + fill_order: 52, + shutdown_witness: 53, + fill_transfer_from_savings: 54, + hardfork: 55, + comment_payout_update: 56, + return_vesting_delegation: 57, + comment_benefactor_reward: 58 }; //types.hpp diff --git a/src/auth/serializer/src/operations.js b/src/auth/serializer/src/operations.js index c6cf5b4a..d737b68a 100644 --- a/src/auth/serializer/src/operations.js +++ b/src/auth/serializer/src/operations.js @@ -82,12 +82,12 @@ Replace: var operation = static_variant([ with: operation.st_operations = [ Delete (these are custom types instead): -let public_key = new Serializer( +let public_key = new Serializer( "public_key", {key_data: bytes(33)} ); -let asset = new Serializer( +let asset = new Serializer( "asset", {amount: int64, symbol: uint64} @@ -96,7 +96,7 @@ let asset = new Serializer( Replace: authority.prototype.account_authority_map With: map((string), (uint16)) */ -let signed_transaction = new Serializer( +let signed_transaction = new Serializer( "signed_transaction", { ref_block_num: uint16, ref_block_prefix: uint32, @@ -107,15 +107,15 @@ let signed_transaction = new Serializer( } ); -let signed_block = new Serializer( +let signed_block = new Serializer( "signed_block", { previous: bytes(20), timestamp: time_point_sec, witness: string, transaction_merkle_root: bytes(20), extensions: set(static_variant([ - future_extensions, - version, + future_extensions, + version, hardfork_version_vote ])), witness_signature: bytes(65), @@ -123,36 +123,36 @@ let signed_block = new Serializer( } ); -let block_header = new Serializer( +let block_header = new Serializer( "block_header", { previous: bytes(20), timestamp: time_point_sec, witness: string, transaction_merkle_root: bytes(20), extensions: set(static_variant([ - future_extensions, - version, + future_extensions, + version, hardfork_version_vote ])) } ); -let signed_block_header = new Serializer( +let signed_block_header = new Serializer( "signed_block_header", { previous: bytes(20), timestamp: time_point_sec, witness: string, transaction_merkle_root: bytes(20), extensions: set(static_variant([ - future_extensions, - version, + future_extensions, + version, hardfork_version_vote ])), witness_signature: bytes(65) } ); -let vote = new Serializer( +let vote = new Serializer( "vote", { voter: string, author: string, @@ -161,7 +161,7 @@ let vote = new Serializer( } ); -let comment = new Serializer( +let comment = new Serializer( "comment", { parent_author: string, parent_permlink: string, @@ -173,7 +173,7 @@ let comment = new Serializer( } ); -let transfer = new Serializer( +let transfer = new Serializer( "transfer", { from: string, to: string, @@ -182,7 +182,7 @@ let transfer = new Serializer( } ); -let transfer_to_vesting = new Serializer( +let transfer_to_vesting = new Serializer( "transfer_to_vesting", { from: string, to: string, @@ -190,14 +190,14 @@ let transfer_to_vesting = new Serializer( } ); -let withdraw_vesting = new Serializer( +let withdraw_vesting = new Serializer( "withdraw_vesting", { account: string, vesting_shares: asset } ); -let limit_order_create = new Serializer( +let limit_order_create = new Serializer( "limit_order_create", { owner: string, orderid: uint32, @@ -208,28 +208,28 @@ let limit_order_create = new Serializer( } ); -let limit_order_cancel = new Serializer( +let limit_order_cancel = new Serializer( "limit_order_cancel", { owner: string, orderid: uint32 } ); -let price = new Serializer( +let price = new Serializer( "price", { base: asset, quote: asset } ); -let feed_publish = new Serializer( +let feed_publish = new Serializer( "feed_publish", { publisher: string, exchange_rate: price } ); -let convert = new Serializer( +let convert = new Serializer( "convert", { owner: string, requestid: uint32, @@ -237,7 +237,7 @@ let convert = new Serializer( } ); -var authority = new Serializer( +var authority = new Serializer( "authority", { weight_threshold: uint32, account_auths: map((string), (uint16)), @@ -245,7 +245,7 @@ var authority = new Serializer( } ); -let account_create = new Serializer( +let account_create = new Serializer( "account_create", { fee: asset, creator: string, @@ -258,7 +258,7 @@ let account_create = new Serializer( } ); -let account_update = new Serializer( +let account_update = new Serializer( "account_update", { account: string, owner: optional(authority), @@ -269,7 +269,7 @@ let account_update = new Serializer( } ); -let chain_properties = new Serializer( +let chain_properties = new Serializer( "chain_properties", { account_creation_fee: asset, maximum_block_size: uint32, @@ -277,7 +277,7 @@ let chain_properties = new Serializer( } ); -let witness_update = new Serializer( +let witness_update = new Serializer( "witness_update", { owner: string, url: string, @@ -287,7 +287,7 @@ let witness_update = new Serializer( } ); -let account_witness_vote = new Serializer( +let account_witness_vote = new Serializer( "account_witness_vote", { account: string, witness: string, @@ -295,14 +295,14 @@ let account_witness_vote = new Serializer( } ); -let account_witness_proxy = new Serializer( +let account_witness_proxy = new Serializer( "account_witness_proxy", { account: string, proxy: string } ); -let pow = new Serializer( +let pow = new Serializer( "pow", { worker: public_key, input: bytes(32), @@ -311,7 +311,7 @@ let pow = new Serializer( } ); -let custom = new Serializer( +let custom = new Serializer( "custom", { required_auths: set(string), id: uint16, @@ -319,7 +319,7 @@ let custom = new Serializer( } ); -let report_over_production = new Serializer( +let report_over_production = new Serializer( "report_over_production", { reporter: string, first_block: signed_block_header, @@ -327,14 +327,14 @@ let report_over_production = new Serializer( } ); -let delete_comment = new Serializer( +let delete_comment = new Serializer( "delete_comment", { author: string, permlink: string } ); -let custom_json = new Serializer( +let custom_json = new Serializer( "custom_json", { required_auths: set(string), required_posting_auths: set(string), @@ -343,7 +343,7 @@ let custom_json = new Serializer( } ); -let comment_options = new Serializer( +let comment_options = new Serializer( "comment_options", { author: string, permlink: string, @@ -357,7 +357,7 @@ let comment_options = new Serializer( } ); -let set_withdraw_vesting_route = new Serializer( +let set_withdraw_vesting_route = new Serializer( "set_withdraw_vesting_route", { from_account: string, to_account: string, @@ -366,7 +366,7 @@ let set_withdraw_vesting_route = new Serializer( } ); -let limit_order_create2 = new Serializer( +let limit_order_create2 = new Serializer( "limit_order_create2", { owner: string, orderid: uint32, @@ -377,7 +377,7 @@ let limit_order_create2 = new Serializer( } ); -let claim_account = new Serializer( +let claim_account = new Serializer( "claim_account", { creator: string, fee: asset, @@ -385,7 +385,7 @@ let claim_account = new Serializer( } ); -let create_claimed_account = new Serializer( +let create_claimed_account = new Serializer( "create_claimed_account", { creator: string, new_account_name: string, @@ -398,7 +398,7 @@ let create_claimed_account = new Serializer( } ); -let request_account_recovery = new Serializer( +let request_account_recovery = new Serializer( "request_account_recovery", { recovery_account: string, account_to_recover: string, @@ -416,7 +416,7 @@ let recover_account = new Serializer( } ); -let change_recovery_account = new Serializer( +let change_recovery_account = new Serializer( "change_recovery_account", { account_to_recover: string, new_recovery_account: string, @@ -424,7 +424,7 @@ let change_recovery_account = new Serializer( } ); -let escrow_transfer = new Serializer( +let escrow_transfer = new Serializer( "escrow_transfer", { from: string, to: string, @@ -439,7 +439,7 @@ let escrow_transfer = new Serializer( } ); -let escrow_dispute = new Serializer( +let escrow_dispute = new Serializer( "escrow_dispute", { from: string, to: string, @@ -449,7 +449,7 @@ let escrow_dispute = new Serializer( } ); -let escrow_release = new Serializer( +let escrow_release = new Serializer( "escrow_release", { from: string, to: string, @@ -462,7 +462,7 @@ let escrow_release = new Serializer( } ); -let pow2_input = new Serializer( +let pow2_input = new Serializer( "pow2_input", { worker_account: string, prev_block: bytes(20), @@ -470,14 +470,14 @@ let pow2_input = new Serializer( } ); -let pow2 = new Serializer( +let pow2 = new Serializer( "pow2", { input: pow2_input, pow_summary: uint32 } ); -let equihash_proof = new Serializer( +let equihash_proof = new Serializer( "equihash_proof", { n: uint32, k: uint32, @@ -486,7 +486,7 @@ let equihash_proof = new Serializer( } ); -let equihash_pow = new Serializer( +let equihash_pow = new Serializer( "equihash_pow", { input: pow2_input, proof: equihash_proof, @@ -495,7 +495,7 @@ let equihash_pow = new Serializer( } ); -let escrow_approve = new Serializer( +let escrow_approve = new Serializer( "escrow_approve", { from: string, to: string, @@ -506,7 +506,7 @@ let escrow_approve = new Serializer( } ); -let transfer_to_savings = new Serializer( +let transfer_to_savings = new Serializer( "transfer_to_savings", { from: string, to: string, @@ -515,7 +515,7 @@ let transfer_to_savings = new Serializer( } ); -let transfer_from_savings = new Serializer( +let transfer_from_savings = new Serializer( "transfer_from_savings", { from: string, request_id: uint32, @@ -525,14 +525,14 @@ let transfer_from_savings = new Serializer( } ); -let cancel_transfer_from_savings = new Serializer( +let cancel_transfer_from_savings = new Serializer( "cancel_transfer_from_savings", { from: string, request_id: uint32 } ); -let custom_binary = new Serializer( +let custom_binary = new Serializer( "custom_binary", { required_owner_auths: set(string), required_active_auths: set(string), @@ -543,14 +543,14 @@ let custom_binary = new Serializer( } ); -let decline_voting_rights = new Serializer( +let decline_voting_rights = new Serializer( "decline_voting_rights", { account: string, decline: bool } ); -let reset_account = new Serializer( +let reset_account = new Serializer( "reset_account", { reset_account: string, account_to_reset: string, @@ -558,7 +558,7 @@ let reset_account = new Serializer( } ); -let set_reset_account = new Serializer( +let set_reset_account = new Serializer( "set_reset_account", { account: string, current_reset_account: string, @@ -566,7 +566,7 @@ let set_reset_account = new Serializer( } ); -let claim_reward_balance = new Serializer( +let claim_reward_balance = new Serializer( "claim_reward_balance", { account: string, reward_steem: asset, @@ -575,7 +575,7 @@ let claim_reward_balance = new Serializer( } ); -let delegate_vesting_shares = new Serializer( +let delegate_vesting_shares = new Serializer( "delegate_vesting_shares", { delegator: string, delegatee: string, @@ -583,7 +583,7 @@ let delegate_vesting_shares = new Serializer( } ); -let account_create_with_delegation = new Serializer( +let account_create_with_delegation = new Serializer( "account_create_with_delegation", { fee: asset, delegation: asset, @@ -598,7 +598,34 @@ let account_create_with_delegation = new Serializer( } ); -let fill_convert_request = new Serializer( +let create_proposal = new Serializer( + "create_proposal", { + creator: string, + receiver: string, + start_date: time_point_sec, + end_date: time_point_sec, + daily_pay: asset, + subject: string, + permlink: string +} +); + +let update_proposal_votes = new Serializer( + "update_proposal_votes", { + voter: string, + proposal_ids: array(uint64), + approve: bool +} +); + +let remove_proposal = new Serializer( + "remove_proposal", { + proposal_owner: string, + proposal_ids: array(uint64) +} +); + +let fill_convert_request = new Serializer( "fill_convert_request", { owner: string, requestid: uint32, @@ -607,7 +634,7 @@ let fill_convert_request = new Serializer( } ); -let author_reward = new Serializer( +let author_reward = new Serializer( "author_reward", { author: string, permlink: string, @@ -617,7 +644,7 @@ let author_reward = new Serializer( } ); -let curation_reward = new Serializer( +let curation_reward = new Serializer( "curation_reward", { curator: string, reward: asset, @@ -626,7 +653,7 @@ let curation_reward = new Serializer( } ); -let comment_reward = new Serializer( +let comment_reward = new Serializer( "comment_reward", { author: string, permlink: string, @@ -634,21 +661,21 @@ let comment_reward = new Serializer( } ); -let liquidity_reward = new Serializer( +let liquidity_reward = new Serializer( "liquidity_reward", { owner: string, payout: asset } ); -let interest = new Serializer( +let interest = new Serializer( "interest", { owner: string, interest: asset } ); -let fill_vesting_withdraw = new Serializer( +let fill_vesting_withdraw = new Serializer( "fill_vesting_withdraw", { from_account: string, to_account: string, @@ -657,7 +684,7 @@ let fill_vesting_withdraw = new Serializer( } ); -let fill_order = new Serializer( +let fill_order = new Serializer( "fill_order", { current_owner: string, current_orderid: uint32, @@ -668,12 +695,12 @@ let fill_order = new Serializer( } ); -let shutdown_witness = new Serializer( +let shutdown_witness = new Serializer( "shutdown_witness", {owner: string} ); -let fill_transfer_from_savings = new Serializer( +let fill_transfer_from_savings = new Serializer( "fill_transfer_from_savings", { from: string, to: string, @@ -683,26 +710,26 @@ let fill_transfer_from_savings = new Serializer( } ); -let hardfork = new Serializer( +let hardfork = new Serializer( "hardfork", {hardfork_id: uint32} ); -let comment_payout_update = new Serializer( +let comment_payout_update = new Serializer( "comment_payout_update", { author: string, permlink: string } ); -let return_vesting_delegation = new Serializer( +let return_vesting_delegation = new Serializer( "return_vesting_delegation", { account: string, vesting_shares: asset } ); -let comment_benefactor_reward = new Serializer( +let comment_benefactor_reward = new Serializer( "comment_benefactor_reward", { benefactor: string, author: string, @@ -712,65 +739,68 @@ let comment_benefactor_reward = new Serializer( ); operation.st_operations = [ - vote, - comment, - transfer, - transfer_to_vesting, - withdraw_vesting, - limit_order_create, - limit_order_cancel, - feed_publish, - convert, - account_create, - account_update, - witness_update, - account_witness_vote, - account_witness_proxy, - pow, - custom, - report_over_production, - delete_comment, - custom_json, - comment_options, - set_withdraw_vesting_route, - limit_order_create2, - claim_account, - create_claimed_account, - request_account_recovery, - recover_account, - change_recovery_account, - escrow_transfer, - escrow_dispute, - escrow_release, - pow2, - escrow_approve, - transfer_to_savings, - transfer_from_savings, - cancel_transfer_from_savings, - custom_binary, - decline_voting_rights, - reset_account, - set_reset_account, - claim_reward_balance, - delegate_vesting_shares, - account_create_with_delegation, - fill_convert_request, - author_reward, - curation_reward, - comment_reward, - liquidity_reward, - interest, - fill_vesting_withdraw, - fill_order, - shutdown_witness, - fill_transfer_from_savings, - hardfork, - comment_payout_update, - return_vesting_delegation, + vote, + comment, + transfer, + transfer_to_vesting, + withdraw_vesting, + limit_order_create, + limit_order_cancel, + feed_publish, + convert, + account_create, + account_update, + witness_update, + account_witness_vote, + account_witness_proxy, + pow, + custom, + report_over_production, + delete_comment, + custom_json, + comment_options, + set_withdraw_vesting_route, + limit_order_create2, + claim_account, + create_claimed_account, + request_account_recovery, + recover_account, + change_recovery_account, + escrow_transfer, + escrow_dispute, + escrow_release, + pow2, + escrow_approve, + transfer_to_savings, + transfer_from_savings, + cancel_transfer_from_savings, + custom_binary, + decline_voting_rights, + reset_account, + set_reset_account, + claim_reward_balance, + delegate_vesting_shares, + account_create_with_delegation, + create_proposal, + update_proposal_votes, + remove_proposal, + fill_convert_request, + author_reward, + curation_reward, + comment_reward, + liquidity_reward, + interest, + fill_vesting_withdraw, + fill_order, + shutdown_witness, + fill_transfer_from_savings, + hardfork, + comment_payout_update, + return_vesting_delegation, comment_benefactor_reward ]; -let transaction = new Serializer( +let transaction = new Serializer( "transaction", { ref_block_num: uint16, ref_block_prefix: uint32, diff --git a/src/broadcast/operations.js b/src/broadcast/operations.js index aed1e99e..fe4aecee 100644 --- a/src/broadcast/operations.js +++ b/src/broadcast/operations.js @@ -431,6 +431,36 @@ module.exports = [ "extensions" ] }, + { + "roles": ["active", "owner"], + "operation": "create_proposal", + "params": [ + "creator", + "receiver", + "start_date", + "end_date", + "daily_pay", + "subject", + "permlink" + ] + }, + { + "roles": ["active", "owner"], + "operation": "update_proposal_votes", + "params": [ + "voter", + "proposal_ids", + "approve" + ] + }, + { + "roles": ["active", "owner"], + "operation": "remove_proposal", + "params": [ + "proposal_owner", + "proposal_ids" + ] + }, { "roles": ["active", "owner"], "operation": "fill_convert_request", From 08baabf3f151ba07264e73b9ff63e406423979ca Mon Sep 17 00:00:00 2001 From: Jonathan Porta Date: Tue, 16 Jul 2019 09:00:39 -0600 Subject: [PATCH 41/94] Update Params to Match API --- src/api/methods.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/api/methods.js b/src/api/methods.js index fa1afa04..df339032 100644 --- a/src/api/methods.js +++ b/src/api/methods.js @@ -501,11 +501,6 @@ export default [ { api: "condenser_api", method: "list_proposals", - params: ["start", "order_by", "order_direction", "limit", "status"] - }, - { - api: "condenser_api", - method: "list_voter_proposals", - params: ["voter", "order_by", "order_direction", "limit", "status"] + params: ["start", "limit", "order_by", "order_direction", "status"] } ]; From e695e932040c244e3158aaa1e7363574da009927 Mon Sep 17 00:00:00 2001 From: Jonathan Porta Date: Tue, 16 Jul 2019 12:15:42 -0600 Subject: [PATCH 42/94] Bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a0319d23..81891003 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@steemit/steem-js", - "version": "0.7.5", + "version": "0.7.6", "description": "Steem.js the JavaScript API for Steem blockchain", "main": "lib/index.js", "scripts": { From 606936b5d067cb53b9011fd379ad98b728d4a6a6 Mon Sep 17 00:00:00 2001 From: Jonathan Porta Date: Tue, 16 Jul 2019 13:52:33 -0600 Subject: [PATCH 43/94] Revert most formatting fixes --- src/api/methods.js | 1006 ++++++++++++++++++++++---------------------- 1 file changed, 502 insertions(+), 504 deletions(-) diff --git a/src/api/methods.js b/src/api/methods.js index df339032..1fd93568 100644 --- a/src/api/methods.js +++ b/src/api/methods.js @@ -1,506 +1,504 @@ export default [ - { - api: "database_api", - method: "set_subscribe_callback", - params: ["callback", "clearFilter"] - }, - { - api: "database_api", - method: "set_pending_transaction_callback", - params: ["cb"] - }, - { - api: "database_api", - method: "set_block_applied_callback", - params: ["cb"] - }, - { - api: "database_api", - method: "cancel_all_subscriptions" - }, - { - api: "database_api", - method: "get_trending_tags", - params: ["afterTag", "limit"] - }, - { - api: "database_api", - method: "get_tags_used_by_author", - params: ["author"] - }, - { - api: "database_api", - method: "get_post_discussions_by_payout", - params: ["query"] - }, - { - api: "database_api", - method: "get_comment_discussions_by_payout", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_trending", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_trending30", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_created", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_active", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_cashout", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_payout", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_votes", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_children", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_hot", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_feed", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_blog", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_comments", - params: ["query"] - }, - { - api: "database_api", - method: "get_discussions_by_promoted", - params: ["query"] - }, - { - api: "database_api", - method: "get_block_header", - params: ["blockNum"] - }, - { - api: "database_api", - method: "get_block", - params: ["blockNum"] - }, - { - api: "database_api", - method: "get_ops_in_block", - params: ["blockNum", "onlyVirtual"] - }, - { - api: "database_api", - method: "get_state", - params: ["path"] - }, - { - api: "database_api", - method: "get_trending_categories", - params: ["after", "limit"] - }, - { - api: "database_api", - method: "get_best_categories", - params: ["after", "limit"] - }, - { - api: "database_api", - method: "get_active_categories", - params: ["after", "limit"] - }, - { - api: "database_api", - method: "get_recent_categories", - params: ["after", "limit"] - }, - { - api: "database_api", - method: "get_config" - }, - { - api: "database_api", - method: "get_dynamic_global_properties" - }, - { - api: "database_api", - method: "get_chain_properties" - }, - { - api: "database_api", - method: "get_feed_history" - }, - { - api: "database_api", - method: "get_current_median_history_price" - }, - { - api: "database_api", - method: "get_witness_schedule" - }, - { - api: "database_api", - method: "get_hardfork_version" - }, - { - api: "database_api", - method: "get_next_scheduled_hardfork" - }, - { - api: "account_by_key_api", - method: "get_key_references", - params: ["key"] - }, - { - api: "database_api", - method: "get_accounts", - params: ["names"] - }, - { - api: "database_api", - method: "get_account_references", - params: ["accountId"] - }, - { - api: "database_api", - method: "lookup_account_names", - params: ["accountNames"] - }, - { - api: "database_api", - method: "lookup_accounts", - params: ["lowerBoundName", "limit"] - }, - { - api: "database_api", - method: "get_account_count" - }, - { - api: "database_api", - method: "get_conversion_requests", - params: ["accountName"] - }, - { - api: "database_api", - method: "get_account_history", - params: ["account", "from", "limit"] - }, - { - api: "database_api", - method: "get_owner_history", - params: ["account"] - }, - { - api: "database_api", - method: "get_recovery_request", - params: ["account"] - }, - { - api: "database_api", - method: "get_escrow", - params: ["from", "escrowId"] - }, - { - api: "database_api", - method: "get_withdraw_routes", - params: ["account", "withdrawRouteType"] - }, - { - api: "database_api", - method: "get_account_bandwidth", - params: ["account", "bandwidthType"] - }, - { - api: "database_api", - method: "get_savings_withdraw_from", - params: ["account"] - }, - { - api: "database_api", - method: "get_savings_withdraw_to", - params: ["account"] - }, - { - api: "database_api", - method: "get_order_book", - params: ["limit"] - }, - { - api: "database_api", - method: "get_open_orders", - params: ["owner"] - }, - { - api: "database_api", - method: "get_liquidity_queue", - params: ["startAccount", "limit"] - }, - { - api: "database_api", - method: "get_transaction_hex", - params: ["trx"] - }, - { - api: "database_api", - method: "get_transaction", - params: ["trxId"] - }, - { - api: "database_api", - method: "get_required_signatures", - params: ["trx", "availableKeys"] - }, - { - api: "database_api", - method: "get_potential_signatures", - params: ["trx"] - }, - { - api: "database_api", - method: "verify_authority", - params: ["trx"] - }, - { - api: "database_api", - method: "verify_account_authority", - params: ["nameOrId", "signers"] - }, - { - api: "database_api", - method: "get_active_votes", - params: ["author", "permlink"] - }, - { - api: "database_api", - method: "get_account_votes", - params: ["voter"] - }, - { - api: "database_api", - method: "get_content", - params: ["author", "permlink"] - }, - { - api: "database_api", - method: "get_content_replies", - params: ["author", "permlink"] - }, - { - api: "database_api", - method: "get_discussions_by_author_before_date", - params: ["author", "startPermlink", "beforeDate", "limit"] - }, - { - api: "database_api", - method: "get_replies_by_last_update", - params: ["startAuthor", "startPermlink", "limit"] - }, - { - api: "database_api", - method: "get_witnesses", - params: ["witnessIds"] - }, - { - api: "database_api", - method: "get_witness_by_account", - params: ["accountName"] - }, - { - api: "database_api", - method: "get_witnesses_by_vote", - params: ["from", "limit"] - }, - { - api: "database_api", - method: "lookup_witness_accounts", - params: ["lowerBoundName", "limit"] - }, - { - api: "database_api", - method: "get_witness_count" - }, - { - api: "database_api", - method: "get_active_witnesses" - }, - { - api: "database_api", - method: "get_miner_queue" - }, - { - api: "database_api", - method: "get_reward_fund", - params: ["name"] - }, - { - api: "database_api", - method: "get_vesting_delegations", - params: ["account", "from", "limit"] - }, - { - api: "login_api", - method: "login", - params: ["username", "password"] - }, - { - api: "login_api", - method: "get_api_by_name", - params: ["database_api"] - }, - { - api: "login_api", - method: "get_version" - }, - { - api: "follow_api", - method: "get_followers", - params: ["following", "startFollower", "followType", "limit"] - }, - { - api: "follow_api", - method: "get_following", - params: ["follower", "startFollowing", "followType", "limit"] - }, - { - api: "follow_api", - method: "get_follow_count", - params: ["account"] - }, - { - api: "follow_api", - method: "get_feed_entries", - params: ["account", "entryId", "limit"] - }, - { - api: "follow_api", - method: "get_feed", - params: ["account", "entryId", "limit"] - }, - { - api: "follow_api", - method: "get_blog_entries", - params: ["account", "entryId", "limit"] - }, - { - api: "follow_api", - method: "get_blog", - params: ["account", "entryId", "limit"] - }, - { - api: "follow_api", - method: "get_account_reputations", - params: ["lowerBoundName", "limit"] - }, - { - api: "follow_api", - method: "get_reblogged_by", - params: ["author", "permlink"] - }, - { - api: "follow_api", - method: "get_blog_authors", - params: ["blogAccount"] - }, - { - api: "network_broadcast_api", - method: "broadcast_transaction", - params: ["trx"] - }, - { - api: "network_broadcast_api", - method: "broadcast_transaction_with_callback", - params: ["confirmationCallback", "trx"] - }, - { - api: "network_broadcast_api", - method: "broadcast_transaction_synchronous", - params: ["trx"] - }, - { - api: "network_broadcast_api", - method: "broadcast_block", - params: ["b"] - }, - { - api: "network_broadcast_api", - method: "set_max_block_age", - params: ["maxBlockAge"] - }, - { - api: "market_history_api", - method: "get_ticker", - params: [] - }, - { - api: "market_history_api", - method: "get_volume", - params: [] - }, - { - api: "market_history_api", - method: "get_order_book", - method_name: "getMarketOrderBook", - params: ["limit"] - }, - { - api: "market_history_api", - method: "get_trade_history", - params: ["start", "end", "limit"] - }, - { - api: "market_history_api", - method: "get_recent_trades", - params: ["limit"] - }, - { - api: "market_history_api", - method: "get_market_history", - params: ["bucket_seconds", "start", "end"] - }, - { - api: "market_history_api", - method: "get_market_history_buckets", - params: [] - }, - // condenser_api is wrapper among others below three methods (sps_api, - // where "params" is object instead of array) - { - api: "condenser_api", - method: "find_proposals", - params: ["id_set"] - }, - { - api: "condenser_api", - method: "list_proposals", - params: ["start", "limit", "order_by", "order_direction", "status"] - } + { + "api": "database_api", + "method": "set_subscribe_callback", + "params": ["callback", "clearFilter"] + }, + { + "api": "database_api", + "method": "set_pending_transaction_callback", + "params": ["cb"] + }, + { + "api": "database_api", + "method": "set_block_applied_callback", + "params": ["cb"] + }, + { + "api": "database_api", + "method": "cancel_all_subscriptions" + }, + { + "api": "database_api", + "method": "get_trending_tags", + "params": ["afterTag", "limit"] + }, + { + "api": "database_api", + "method": "get_tags_used_by_author", + "params": ["author"] + }, + { + "api": "database_api", + "method": "get_post_discussions_by_payout", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_comment_discussions_by_payout", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_trending", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_trending30", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_created", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_active", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_cashout", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_payout", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_votes", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_children", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_hot", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_feed", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_blog", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_comments", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_discussions_by_promoted", + "params": ["query"] + }, + { + "api": "database_api", + "method": "get_block_header", + "params": ["blockNum"] + }, + { + "api": "database_api", + "method": "get_block", + "params": ["blockNum"] + }, + { + "api": "database_api", + "method": "get_ops_in_block", + "params": ["blockNum", "onlyVirtual"] + }, + { + "api": "database_api", + "method": "get_state", + "params": ["path"] + }, + { + "api": "database_api", + "method": "get_trending_categories", + "params": ["after", "limit"] + }, + { + "api": "database_api", + "method": "get_best_categories", + "params": ["after", "limit"] + }, + { + "api": "database_api", + "method": "get_active_categories", + "params": ["after", "limit"] + }, + { + "api": "database_api", + "method": "get_recent_categories", + "params": ["after", "limit"] + }, + { + "api": "database_api", + "method": "get_config" + }, + { + "api": "database_api", + "method": "get_dynamic_global_properties" + }, + { + "api": "database_api", + "method": "get_chain_properties" + }, + { + "api": "database_api", + "method": "get_feed_history" + }, + { + "api": "database_api", + "method": "get_current_median_history_price" + }, + { + "api": "database_api", + "method": "get_witness_schedule" + }, + { + "api": "database_api", + "method": "get_hardfork_version" + }, + { + "api": "database_api", + "method": "get_next_scheduled_hardfork" + }, + { + "api": "account_by_key_api", + "method": "get_key_references", + "params": ["key"] + }, + { + "api": "database_api", + "method": "get_accounts", + "params": ["names"] + }, + { + "api": "database_api", + "method": "get_account_references", + "params": ["accountId"] + }, + { + "api": "database_api", + "method": "lookup_account_names", + "params": ["accountNames"] + }, + { + "api": "database_api", + "method": "lookup_accounts", + "params": ["lowerBoundName", "limit"] + }, + { + "api": "database_api", + "method": "get_account_count" + }, + { + "api": "database_api", + "method": "get_conversion_requests", + "params": ["accountName"] + }, + { + "api": "database_api", + "method": "get_account_history", + "params": ["account", "from", "limit"] + }, + { + "api": "database_api", + "method": "get_owner_history", + "params": ["account"] + }, + { + "api": "database_api", + "method": "get_recovery_request", + "params": ["account"] + }, + { + "api": "database_api", + "method": "get_escrow", + "params": ["from", "escrowId"] + }, + { + "api": "database_api", + "method": "get_withdraw_routes", + "params": ["account", "withdrawRouteType"] + }, + { + "api": "database_api", + "method": "get_account_bandwidth", + "params": ["account", "bandwidthType"] + }, + { + "api": "database_api", + "method": "get_savings_withdraw_from", + "params": ["account"] + }, + { + "api": "database_api", + "method": "get_savings_withdraw_to", + "params": ["account"] + }, + { + "api": "database_api", + "method": "get_order_book", + "params": ["limit"] + }, + { + "api": "database_api", + "method": "get_open_orders", + "params": ["owner"] + }, + { + "api": "database_api", + "method": "get_liquidity_queue", + "params": ["startAccount", "limit"] + }, + { + "api": "database_api", + "method": "get_transaction_hex", + "params": ["trx"] + }, + { + "api": "database_api", + "method": "get_transaction", + "params": ["trxId"] + }, + { + "api": "database_api", + "method": "get_required_signatures", + "params": ["trx", "availableKeys"] + }, + { + "api": "database_api", + "method": "get_potential_signatures", + "params": ["trx"] + }, + { + "api": "database_api", + "method": "verify_authority", + "params": ["trx"] + }, + { + "api": "database_api", + "method": "verify_account_authority", + "params": ["nameOrId", "signers"] + }, + { + "api": "database_api", + "method": "get_active_votes", + "params": ["author", "permlink"] + }, + { + "api": "database_api", + "method": "get_account_votes", + "params": ["voter"] + }, + { + "api": "database_api", + "method": "get_content", + "params": ["author", "permlink"] + }, + { + "api": "database_api", + "method": "get_content_replies", + "params": ["author", "permlink"] + }, + { + "api": "database_api", + "method": "get_discussions_by_author_before_date", + "params": ["author", "startPermlink", "beforeDate", "limit"] + }, + { + "api": "database_api", + "method": "get_replies_by_last_update", + "params": ["startAuthor", "startPermlink", "limit"] + }, + { + "api": "database_api", + "method": "get_witnesses", + "params": ["witnessIds"] + }, + { + "api": "database_api", + "method": "get_witness_by_account", + "params": ["accountName"] + }, + { + "api": "database_api", + "method": "get_witnesses_by_vote", + "params": ["from", "limit"] + }, + { + "api": "database_api", + "method": "lookup_witness_accounts", + "params": ["lowerBoundName", "limit"] + }, + { + "api": "database_api", + "method": "get_witness_count" + }, + { + "api": "database_api", + "method": "get_active_witnesses" + }, + { + "api": "database_api", + "method": "get_miner_queue" + }, + { + "api": "database_api", + "method": "get_reward_fund", + "params": ["name"] + }, + { + "api": "database_api", + "method": "get_vesting_delegations", + "params": ["account", "from", "limit"] + }, + { + "api": "login_api", + "method": "login", + "params": ["username", "password"] + }, + { + "api": "login_api", + "method": "get_api_by_name", + "params": ["database_api"] + }, + { + "api": "login_api", + "method": "get_version" + }, + { + "api": "follow_api", + "method": "get_followers", + "params": ["following", "startFollower", "followType", "limit"] + }, + { + "api": "follow_api", + "method": "get_following", + "params": ["follower", "startFollowing", "followType", "limit"] + }, + { + "api": "follow_api", + "method": "get_follow_count", + "params": ["account"] + }, + { + "api": "follow_api", + "method": "get_feed_entries", + "params": ["account", "entryId", "limit"] + }, + { + "api": "follow_api", + "method": "get_feed", + "params": ["account", "entryId", "limit"] + }, + { + "api": "follow_api", + "method": "get_blog_entries", + "params": ["account", "entryId", "limit"] + }, + { + "api": "follow_api", + "method": "get_blog", + "params": ["account", "entryId", "limit"] + }, + { + "api": "follow_api", + "method": "get_account_reputations", + "params": ["lowerBoundName", "limit"] + }, + { + "api": "follow_api", + "method": "get_reblogged_by", + "params": ["author", "permlink"] + }, + { + "api": "follow_api", + "method": "get_blog_authors", + "params": ["blogAccount"] + }, + { + "api": "network_broadcast_api", + "method": "broadcast_transaction", + "params": ["trx"] + }, + { + "api": "network_broadcast_api", + "method": "broadcast_transaction_with_callback", + "params": ["confirmationCallback", "trx"] + }, + { + "api": "network_broadcast_api", + "method": "broadcast_transaction_synchronous", + "params": ["trx"] + }, + { + "api": "network_broadcast_api", + "method": "broadcast_block", + "params": ["b"] + }, + { + "api": "network_broadcast_api", + "method": "set_max_block_age", + "params": ["maxBlockAge"] + }, + { + "api": "market_history_api", + "method": "get_ticker", + "params": [] + }, + { + "api": "market_history_api", + "method": "get_volume", + "params": [] + }, + { + "api": "market_history_api", + "method": "get_order_book", + "method_name": "getMarketOrderBook", + "params": ["limit"] + }, + { + "api": "market_history_api", + "method": "get_trade_history", + "params": ["start", "end", "limit"] + }, + { + "api": "market_history_api", + "method": "get_recent_trades", + "params": ["limit"] + }, + { + "api": "market_history_api", + "method": "get_market_history", + "params": ["bucket_seconds", "start", "end"] + }, + { + "api": "market_history_api", + "method": "get_market_history_buckets", + "params": [] + }, + { + "api": "condenser_api", + "method": "find_proposals", + "params": ["id_set"] + }, + { + "api": "condenser_api", + "method": "list_proposals", + "params": ["start", "limit", "order_by", "order_direction", "status"] + } ]; From 1615e280b3a6daab43a818ec2f47cd6d8bbaefd1 Mon Sep 17 00:00:00 2001 From: Jonathan Porta Date: Wed, 17 Jul 2019 08:36:04 -0600 Subject: [PATCH 44/94] Re-add `list_proposal_votes` API Definition --- src/api/methods.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/api/methods.js b/src/api/methods.js index 1fd93568..f8a91e20 100644 --- a/src/api/methods.js +++ b/src/api/methods.js @@ -500,5 +500,10 @@ export default [ "api": "condenser_api", "method": "list_proposals", "params": ["start", "limit", "order_by", "order_direction", "status"] + }, + { + "api": "condenser_api", + "method": "list_proposal_votes", + "params": ["start", "limit", "order_by", "order_direction", "status"] } ]; From b290d631ca099d3300c53e69e734b9047e6a6da7 Mon Sep 17 00:00:00 2001 From: roadscape Date: Fri, 19 Jul 2019 15:39:22 -0500 Subject: [PATCH 45/94] adjust hf20 test, add hf21 test --- test/hf20-accounts.test.js | 6 ++--- test/hf21-sps.test.js | 53 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 test/hf21-sps.test.js diff --git a/test/hf20-accounts.test.js b/test/hf20-accounts.test.js index 43945b2b..5848e395 100644 --- a/test/hf20-accounts.test.js +++ b/test/hf20-accounts.test.js @@ -30,8 +30,7 @@ describe('steem.hf20-accounts:', () => { steem.api.callAsync('condenser_api.get_version', []).then((result) => { result.should.have.property('blockchain_version'); - if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP */ - result.should.have.property('blockchain_version', '0.21.0') + //result.should.have.property('blockchain_version', '0.22.0') steem.broadcast._prepareTransaction(tx).then(function(tx){ tx = steem.auth.signTransaction(tx, [activeWif]); @@ -49,8 +48,7 @@ describe('steem.hf20-accounts:', () => { steem.api.callAsync('condenser_api.get_version', []).then((result) => { result.should.have.property('blockchain_version'); - if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP */ - result.should.have.property('blockchain_version', '0.21.0') + //result.should.have.property('blockchain_version', '0.22.0') steem.broadcast.claimAccountAsync(activeWif, username, '0.000 TESTS', []).then((result) => { let newAccountName = username + '-' + Math.floor(Math.random() * 10000); diff --git a/test/hf21-sps.test.js b/test/hf21-sps.test.js new file mode 100644 index 00000000..901a5e01 --- /dev/null +++ b/test/hf21-sps.test.js @@ -0,0 +1,53 @@ +import assert from "assert" +import Promise from 'bluebird'; +import should from 'should'; +import steem from '../src'; + +const username = process.env.STEEM_USERNAME; +const password = process.env.STEEM_PASSWORD; +const activeWif = steem.auth.toWif(username, password, 'active'); + +describe('steem.hf21-accounts:', () => { + it('has generated methods', () => { + should.exist(steem.broadcast.createProposal); + should.exist(steem.broadcast.updateProposalVotes); + should.exist(steem.broadcast.removeProposal); + }); + + it('has promise methods', () => { + should.exist(steem.broadcast.createProposalAsync); + should.exist(steem.broadcast.updateProposalVotesAsync); + should.exist(steem.broadcast.removeProposalAsync); + }); + + describe('create proposal', () => { + it('signs and verifies auth', function(done) { + let permlink = 'test'; + + let tx = { + 'operations': [[ + 'create_proposal', { + 'creator': username, + 'receiver': username, + 'start_date': '2019-09-01T00:00:00', + 'end_date': '2019-10-01T00:00:00', + 'daily_pay': '1.000 TBD', + 'subject': 'testing', + 'permlink': permlink + }]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + }); +}); From 663912e7bd9230080f7a721fc0ea67c5dfaf5f41 Mon Sep 17 00:00:00 2001 From: roadscape Date: Mon, 22 Jul 2019 11:49:03 -0500 Subject: [PATCH 46/94] add missing op definitions - witness_set_properties and account_update2 --- src/auth/serializer/src/ChainTypes.js | 36 ++++++++++++++------------- src/auth/serializer/src/operations.js | 31 ++++++++++++++++++++--- src/broadcast/operations.js | 31 ++++++++++++++++++++--- test/hf21-sps.test.js | 23 +++++++++++++++-- 4 files changed, 96 insertions(+), 25 deletions(-) diff --git a/src/auth/serializer/src/ChainTypes.js b/src/auth/serializer/src/ChainTypes.js index 1b5cadeb..4e3b0092 100644 --- a/src/auth/serializer/src/ChainTypes.js +++ b/src/auth/serializer/src/ChainTypes.js @@ -51,23 +51,25 @@ ChainTypes.operations= { claim_reward_balance: 39, delegate_vesting_shares: 40, account_create_with_delegation: 41, - create_proposal: 42, - update_proposal_votes: 43, - remove_proposal: 44, - fill_convert_request: 45, - author_reward: 46, - curation_reward: 47, - comment_reward: 48, - liquidity_reward: 49, - interest: 50, - fill_vesting_withdraw: 51, - fill_order: 52, - shutdown_witness: 53, - fill_transfer_from_savings: 54, - hardfork: 55, - comment_payout_update: 56, - return_vesting_delegation: 57, - comment_benefactor_reward: 58 + witness_set_properties: 42, + account_update2: 43, + create_proposal: 44, + update_proposal_votes: 45, + remove_proposal: 46, + fill_convert_request: 47, + author_reward: 48, + curation_reward: 49, + comment_reward: 50, + liquidity_reward: 51, + interest: 52, + fill_vesting_withdraw: 53, + fill_order: 54, + shutdown_witness: 55, + fill_transfer_from_savings: 56, + hardfork: 57, + comment_payout_update: 58, + return_vesting_delegation: 59, + comment_benefactor_reward: 60 }; //types.hpp diff --git a/src/auth/serializer/src/operations.js b/src/auth/serializer/src/operations.js index d737b68a..58fd2c2d 100644 --- a/src/auth/serializer/src/operations.js +++ b/src/auth/serializer/src/operations.js @@ -598,6 +598,26 @@ let account_create_with_delegation = new Serializer( } ); +let witness_set_properties = new Serializer( + "witness_set_properties", { + owner: string, + props: string, + extensions: set(future_extensions) +} +); + +let account_update2 = new Serializer( + "account_update2", { + account: string, + owner: optional(authority), + active: optional(authority), + posting: optional(authority), + memo_key: public_key, + json_metadata: string, + extensions: set(future_extensions) +} +); + let create_proposal = new Serializer( "create_proposal", { creator: string, @@ -606,7 +626,8 @@ let create_proposal = new Serializer( end_date: time_point_sec, daily_pay: asset, subject: string, - permlink: string + permlink: string, + extensions: set(future_extensions) } ); @@ -614,14 +635,16 @@ let update_proposal_votes = new Serializer( "update_proposal_votes", { voter: string, proposal_ids: array(uint64), - approve: bool + approve: bool, + extensions: set(future_extensions) } ); let remove_proposal = new Serializer( "remove_proposal", { proposal_owner: string, - proposal_ids: array(uint64) + proposal_ids: array(uint64), + extensions: set(future_extensions) } ); @@ -781,6 +804,8 @@ operation.st_operations = [ claim_reward_balance, delegate_vesting_shares, account_create_with_delegation, + witness_set_properties, + account_update2, create_proposal, update_proposal_votes, remove_proposal, diff --git a/src/broadcast/operations.js b/src/broadcast/operations.js index fe4aecee..9450c531 100644 --- a/src/broadcast/operations.js +++ b/src/broadcast/operations.js @@ -431,6 +431,28 @@ module.exports = [ "extensions" ] }, + { + "roles": ["active", "owner"], + "operation": "witness_set_properties", + "params": [ + "owner", + "props", + "extensions" + ] + }, + { + "roles": ["posting", "active", "owner"], + "operation": "account_update2", + "params": [ + "account", + "owner", + "active", + "posting", + "memo_key", + "json_metadata", + "extensions" + ] + }, { "roles": ["active", "owner"], "operation": "create_proposal", @@ -441,7 +463,8 @@ module.exports = [ "end_date", "daily_pay", "subject", - "permlink" + "permlink", + "extensions" ] }, { @@ -450,7 +473,8 @@ module.exports = [ "params": [ "voter", "proposal_ids", - "approve" + "approve", + "extensions" ] }, { @@ -458,7 +482,8 @@ module.exports = [ "operation": "remove_proposal", "params": [ "proposal_owner", - "proposal_ids" + "proposal_ids", + "extensions" ] }, { diff --git a/test/hf21-sps.test.js b/test/hf21-sps.test.js index 901a5e01..a3c2585a 100644 --- a/test/hf21-sps.test.js +++ b/test/hf21-sps.test.js @@ -20,8 +20,8 @@ describe('steem.hf21-accounts:', () => { should.exist(steem.broadcast.removeProposalAsync); }); - describe('create proposal', () => { - it('signs and verifies auth', function(done) { + describe('create proposal ops', () => { + it('signs and verifies create_proposal', function(done) { let permlink = 'test'; let tx = { @@ -49,5 +49,24 @@ describe('steem.hf21-accounts:', () => { }); }); }) + + it('signs and verifies update_proposal_votes', function(done) { + let tx = { + 'operations': [[ + 'update_proposal_votes', { + 'voter': username, + 'proposal_ids': [7], + 'approve': true + }]] + } + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }) }); }); From 8705228e3d0f5fd46e2b974ac46facb044c0388d Mon Sep 17 00:00:00 2001 From: roadscape Date: Mon, 22 Jul 2019 12:25:53 -0500 Subject: [PATCH 47/94] add new account_update2 posting_json_metadata field --- src/auth/serializer/src/operations.js | 1 + src/broadcast/operations.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/auth/serializer/src/operations.js b/src/auth/serializer/src/operations.js index 58fd2c2d..f6e4844b 100644 --- a/src/auth/serializer/src/operations.js +++ b/src/auth/serializer/src/operations.js @@ -614,6 +614,7 @@ let account_update2 = new Serializer( posting: optional(authority), memo_key: public_key, json_metadata: string, + posting_json_metadata: string, extensions: set(future_extensions) } ); diff --git a/src/broadcast/operations.js b/src/broadcast/operations.js index 9450c531..086069fe 100644 --- a/src/broadcast/operations.js +++ b/src/broadcast/operations.js @@ -450,6 +450,7 @@ module.exports = [ "posting", "memo_key", "json_metadata", + "posting_json_metadata", "extensions" ] }, From 0f266202e24873be6dd7efecf341b0640dc931c7 Mon Sep 17 00:00:00 2001 From: justinw Date: Fri, 26 Jul 2019 15:21:05 -0400 Subject: [PATCH 48/94] Skip tests that will only pass on a testnet (for now) --- test/hf20-accounts.test.js | 2 ++ test/hf21-sps.test.js | 1 + 2 files changed, 3 insertions(+) diff --git a/test/hf20-accounts.test.js b/test/hf20-accounts.test.js index 5848e395..de263796 100644 --- a/test/hf20-accounts.test.js +++ b/test/hf20-accounts.test.js @@ -29,6 +29,7 @@ describe('steem.hf20-accounts:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); //result.should.have.property('blockchain_version', '0.22.0') @@ -47,6 +48,7 @@ describe('steem.hf20-accounts:', () => { this.skip(); // (!) need test account with enough RC steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); //result.should.have.property('blockchain_version', '0.22.0') diff --git a/test/hf21-sps.test.js b/test/hf21-sps.test.js index a3c2585a..54cf17ce 100644 --- a/test/hf21-sps.test.js +++ b/test/hf21-sps.test.js @@ -38,6 +38,7 @@ describe('steem.hf21-accounts:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ From 398fd9a45fa46e0b67ce764d1d21d6e5d0bf9769 Mon Sep 17 00:00:00 2001 From: justinw Date: Fri, 26 Jul 2019 16:23:50 -0400 Subject: [PATCH 49/94] Fix update_proposal_votes.voter being undefined --- test/hf21-sps.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/hf21-sps.test.js b/test/hf21-sps.test.js index 54cf17ce..1344dc1a 100644 --- a/test/hf21-sps.test.js +++ b/test/hf21-sps.test.js @@ -3,7 +3,7 @@ import Promise from 'bluebird'; import should from 'should'; import steem from '../src'; -const username = process.env.STEEM_USERNAME; +const username = process.env.STEEM_USERNAME || 'guest123'; const password = process.env.STEEM_PASSWORD; const activeWif = steem.auth.toWif(username, password, 'active'); From 8f8509f4bdba151b32ab8b1578b627d6b719814b Mon Sep 17 00:00:00 2001 From: justinw Date: Fri, 26 Jul 2019 16:58:23 -0400 Subject: [PATCH 50/94] Also skip transaction preparation and signing for hf21 test --- test/hf21-sps.test.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/hf21-sps.test.js b/test/hf21-sps.test.js index 1344dc1a..68e892bc 100644 --- a/test/hf21-sps.test.js +++ b/test/hf21-sps.test.js @@ -61,6 +61,8 @@ describe('steem.hf21-accounts:', () => { }]] } + return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + steem.broadcast._prepareTransaction(tx).then(function(tx){ tx = steem.auth.signTransaction(tx, [activeWif]); steem.api.verifyAuthorityAsync(tx).then( From c756349f0ad6d75344901c5fb16d4519d26739d8 Mon Sep 17 00:00:00 2001 From: Martin Lees Date: Wed, 7 Aug 2019 23:32:57 +0200 Subject: [PATCH 51/94] Update operations.js Set the memo parameter in the account_update2 operation as optional as discussed in #446 --- src/auth/serializer/src/operations.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/auth/serializer/src/operations.js b/src/auth/serializer/src/operations.js index f6e4844b..a204f521 100644 --- a/src/auth/serializer/src/operations.js +++ b/src/auth/serializer/src/operations.js @@ -612,7 +612,7 @@ let account_update2 = new Serializer( owner: optional(authority), active: optional(authority), posting: optional(authority), - memo_key: public_key, + memo_key: optional(public_key), json_metadata: string, posting_json_metadata: string, extensions: set(future_extensions) From a4588f9516c0bd61bc2f3e423c55ffc05da617f7 Mon Sep 17 00:00:00 2001 From: roadscape Date: Thu, 8 Aug 2019 10:56:43 -0500 Subject: [PATCH 52/94] bump version to 0.7.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 81891003..f5bf5122 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@steemit/steem-js", - "version": "0.7.6", + "version": "0.7.7", "description": "Steem.js the JavaScript API for Steem blockchain", "main": "lib/index.js", "scripts": { From 724cdbc649f29f39bd6deaa0ce502fce279a020c Mon Sep 17 00:00:00 2001 From: roadscape Date: Thu, 8 Aug 2019 11:08:54 -0500 Subject: [PATCH 53/94] disable testnet hf tests --- test/hf20-accounts.test.js | 8 ++------ test/hf21-sps.test.js | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/test/hf20-accounts.test.js b/test/hf20-accounts.test.js index de263796..7a09baad 100644 --- a/test/hf20-accounts.test.js +++ b/test/hf20-accounts.test.js @@ -29,9 +29,7 @@ describe('steem.hf20-accounts:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ - result.should.have.property('blockchain_version'); - //result.should.have.property('blockchain_version', '0.22.0') + if(result['blockchain_version'] < '0.22.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ steem.broadcast._prepareTransaction(tx).then(function(tx){ tx = steem.auth.signTransaction(tx, [activeWif]); @@ -48,9 +46,7 @@ describe('steem.hf20-accounts:', () => { this.skip(); // (!) need test account with enough RC steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ - result.should.have.property('blockchain_version'); - //result.should.have.property('blockchain_version', '0.22.0') + if(result['blockchain_version'] < '0.22.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ steem.broadcast.claimAccountAsync(activeWif, username, '0.000 TESTS', []).then((result) => { let newAccountName = username + '-' + Math.floor(Math.random() * 10000); diff --git a/test/hf21-sps.test.js b/test/hf21-sps.test.js index 68e892bc..fdbddb41 100644 --- a/test/hf21-sps.test.js +++ b/test/hf21-sps.test.js @@ -38,7 +38,7 @@ describe('steem.hf21-accounts:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.22.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ From 967ccfe2b3fca0ca42de31698c97af28f6005107 Mon Sep 17 00:00:00 2001 From: roadscape Date: Thu, 8 Aug 2019 11:24:22 -0500 Subject: [PATCH 54/94] bump ci From 0f54e08c68ba47d22ef2065d2465d8a515e2c1b6 Mon Sep 17 00:00:00 2001 From: Fabien Date: Sun, 25 Aug 2019 21:26:25 +0700 Subject: [PATCH 55/94] Change CDN url (#451) * Change CDN url * Remove version from the CDN url --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 818ca843..a79fe785 100644 --- a/README.md +++ b/README.md @@ -42,9 +42,9 @@ steem.api.getAccounts(['ned', 'dan'], function(err, response){ ``` ## CDN -https://cdn.steemjs.com/lib/latest/steem.min.js
+https://cdn.jsdelivr.net/npm/steem/dist/steem.min.js
```html - + ``` ## Webpack From d251bc4f630b7e28e08088ffb7890b8d4478bc28 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Wed, 16 Oct 2019 10:28:20 -0700 Subject: [PATCH 56/94] dd smt ops --- package-lock.json | 5962 +++++++++++++++++++++++++ package.json | 2 +- src/api/methods.js | 5 + src/auth/serializer/src/ChainTypes.js | 36 +- src/auth/serializer/src/operations.js | 185 +- src/auth/serializer/src/types.js | 217 +- src/broadcast/operations.js | 111 + 7 files changed, 6489 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index e69de29b..1382ae3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -0,0 +1,5962 @@ +{ + "name": "@steemit/steem-js", + "version": "0.7.8", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@steemit/libcrypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@steemit/libcrypto/-/libcrypto-1.0.1.tgz", + "integrity": "sha512-g2y4OrELuPGLLu3GjVaPbVvY/K+4oPGOrv9ec013o/ZB76R9UQ1ufYD9RM5tKxHXpFhzj2k0JgoKYWkdVheFVA==" + }, + "@steemit/rpc-auth": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@steemit/rpc-auth/-/rpc-auth-1.1.1.tgz", + "integrity": "sha512-Eb8BW3O1y4+/+Dbf+LqGVmgXYqyfHxP9mBlmzkpjXiIepTpxoK90NIGrneqcnEGq0TR2nSt4BVv9Ur9c+hxoig==", + "requires": { + "@steemit/libcrypto": "^1.0.1" + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "array.prototype.find": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.0.tgz", + "integrity": "sha512-Wn41+K1yuO5p7wRZDl7890c3xvv5UBrfVXTVIe28rSQb6LS0fZMDrQB6PAcxQFRFy6vJTLDc3A2+3CjQdzVKRg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.13.0" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "babel-cli": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-polyfill": "^6.26.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "chokidar": "^1.6.1", + "commander": "^2.11.0", + "convert-source-map": "^1.5.0", + "fs-readdir-recursive": "^1.0.0", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "output-file-sync": "^1.1.2", + "path-is-absolute": "^1.0.1", + "slash": "^1.0.0", + "source-map": "^0.5.6", + "v8flags": "^2.1.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } + }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "babel-traverse": "^6.23.1", + "babel-types": "^6.23.0", + "babylon": "^6.17.0" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + } + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + } + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-loader": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz", + "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "loader-utils": "^0.2.16", + "mkdirp": "^0.5.1", + "object-assign": "^4.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + } + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + } + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-preset-es2017": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz", + "integrity": "sha1-WXvq37n38gi8/YoS6bKym4svFNE=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.24.1" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + } + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "base-x": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.7.tgz", + "integrity": "sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base62": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.8.tgz", + "integrity": "sha512-V6YHUbjLxN1ymqNLb1DPHoU1CpfdL7d2YTIp5W3U4hhoG4hhxNmsFDs66M9EXxBiSEke5Bt5dwdfMwwZF70iLA==", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "bigi": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz", + "integrity": "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU=" + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "~0.2.0" + } + }, + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "requires": { + "base-x": "^3.0.2" + } + }, + "buffer": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", + "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "~3" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30000999", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000999.tgz", + "integrity": "sha512-1CUyKyecPeksKwXZvYw0tEoaMCo/RwBlXmEtN5vVnabvO0KPd9RQLcaAuR9/1F+KDMv6esmOFWlsXuzDk+8rxg==" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "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 + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "commoner": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", + "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", + "dev": true, + "requires": { + "commander": "^2.5.0", + "detective": "^4.3.1", + "glob": "^5.0.15", + "graceful-fs": "^4.1.2", + "iconv-lite": "^0.4.5", + "mkdirp": "^0.5.0", + "private": "^0.1.6", + "q": "^1.1.2", + "recast": "^0.11.17" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "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==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-env": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", + "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", + "requires": { + "cross-spawn": "^6.0.5" + } + }, + "cross-fetch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-1.1.1.tgz", + "integrity": "sha512-+VJE04+UfxxmBfcnmAu/lKor53RUCx/1ilOti4p+JgrnLQ4AZZIRoe2OEd76VaHyWQmQxqKnV+TaqjHC4r0HWw==", + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", + "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=", + "dev": true, + "requires": { + "browserify-aes": "0.4.0", + "pbkdf2-compat": "2.0.1", + "ripemd160": "0.2.0", + "sha.js": "2.2.6" + }, + "dependencies": { + "browserify-aes": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", + "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", + "dev": true, + "requires": { + "inherits": "^2.0.1" + } + }, + "ripemd160": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", + "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=", + "dev": true + }, + "sha.js": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", + "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=", + "dev": true + } + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "d3": { + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", + "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=", + "dev": true + }, + "damerau-levenshtein": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", + "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", + "dev": true + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "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=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + }, + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "dev": true, + "requires": { + "acorn": "^5.2.1", + "defined": "^1.0.0" + } + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "ecurve": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/ecurve/-/ecurve-1.0.6.tgz", + "integrity": "sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w==", + "requires": { + "bigi": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "electron-to-chromium": { + "version": "1.3.282", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.282.tgz", + "integrity": "sha512-irSaDeCGgfMu1OA30bhqIBr+dx+pDJjRbwCpob7YWqVZbzXblybNzPGklVnWqv4EXxbkEAzQYqiNCqNTgu00lQ==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "enhanced-resolve": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.2.0", + "tapable": "^0.1.8" + }, + "dependencies": { + "memory-fs": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", + "dev": true + } + } + }, + "envify": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.1.tgz", + "integrity": "sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg=", + "dev": true, + "requires": { + "jstransform": "^11.0.3", + "through": "~2.3.4" + } + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es-abstract": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", + "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.51", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.51.tgz", + "integrity": "sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "^1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } + } + }, + "es6-symbol": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.2.tgz", + "integrity": "sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.51" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "requires": { + "babel-code-frame": "^6.16.0", + "chalk": "^1.1.3", + "concat-stream": "^1.5.2", + "debug": "^2.1.1", + "doctrine": "^2.0.0", + "escope": "^3.6.0", + "espree": "^3.4.0", + "esquery": "^1.0.0", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "glob": "^7.0.3", + "globals": "^9.14.0", + "ignore": "^3.2.0", + "imurmurhash": "^0.1.4", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", + "levn": "^0.3.0", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.7.5", + "strip-bom": "^3.0.0", + "strip-json-comments": "~2.0.1", + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" + }, + "dependencies": { + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + } + } + }, + "eslint-import-resolver-node": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", + "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", + "dev": true, + "requires": { + "debug": "^2.2.0", + "object-assign": "^4.0.1", + "resolve": "^1.1.6" + } + }, + "eslint-plugin-import": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-1.16.0.tgz", + "integrity": "sha1-svoH68xTUE0PKkR3WC7Iv/GHG58=", + "dev": true, + "requires": { + "builtin-modules": "^1.1.1", + "contains-path": "^0.1.0", + "debug": "^2.2.0", + "doctrine": "1.3.x", + "es6-map": "^0.1.3", + "es6-set": "^0.1.4", + "eslint-import-resolver-node": "^0.2.0", + "has": "^1.0.1", + "lodash.cond": "^4.3.0", + "lodash.endswith": "^4.0.1", + "lodash.find": "^4.3.0", + "lodash.findindex": "^4.3.0", + "minimatch": "^3.0.3", + "object-assign": "^4.0.1", + "pkg-dir": "^1.0.0", + "pkg-up": "^1.0.0" + }, + "dependencies": { + "doctrine": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.3.0.tgz", + "integrity": "sha1-E+dWgrVVGEJCdvfBc3g0Vu+RPSY=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-2.2.3.tgz", + "integrity": "sha1-TjXLcbin23AqxBXIBuuOjZ6mxl0=", + "dev": true, + "requires": { + "damerau-levenshtein": "^1.0.0", + "jsx-ast-utils": "^1.0.0", + "object-assign": "^4.0.1" + } + }, + "eslint-plugin-react": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", + "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", + "dev": true, + "requires": { + "array.prototype.find": "^2.0.1", + "doctrine": "^1.2.2", + "has": "^1.0.1", + "jsx-ast-utils": "^1.3.4", + "object.assign": "^4.0.4" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + } + } + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fbjs": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.6.1.tgz", + "integrity": "sha1-lja3cF9bqWhNRLcveDISVK/IYPc=", + "dev": true, + "requires": { + "core-js": "^1.0.0", + "loose-envify": "^1.0.0", + "promise": "^7.0.3", + "ua-parser-js": "^0.7.9", + "whatwg-fetch": "^0.9.0" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + }, + "whatwg-fetch": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", + "integrity": "sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA=", + "dev": true + } + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "formatio": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", + "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", + "dev": true, + "requires": { + "samsam": "~1.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": 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.3", + "bundled": true, + "dev": true, + "optional": 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, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": 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, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": 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, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": 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.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": 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, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": 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, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "requires": { + "is-property": "^1.0.2" + } + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "^1.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": 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" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "https-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + } + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "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" + } + }, + "is-generator-function": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", + "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz", + "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==", + "dev": true, + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-loader": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jstransform": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", + "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", + "dev": true, + "requires": { + "base62": "^1.1.0", + "commoner": "^0.10.1", + "esprima-fb": "^15001.1.0-dev-harmony-fb", + "object-assign": "^2.0.0", + "source-map": "^0.4.2" + }, + "dependencies": { + "esprima-fb": { + "version": "15001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", + "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=", + "dev": true + }, + "object-assign": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", + "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "jsx-ast-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", + "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "dev": true, + "requires": { + "lodash._basecopy": "^3.0.0", + "lodash.keys": "^3.0.0" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", + "dev": true + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "dev": true + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "dev": true + }, + "lodash.cond": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", + "dev": true + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "^3.0.0", + "lodash._basecreate": "^3.0.0", + "lodash._isiterateecall": "^3.0.0" + } + }, + "lodash.endswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", + "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=", + "dev": true + }, + "lodash.find": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", + "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=", + "dev": true + }, + "lodash.findindex": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.findindex/-/lodash.findindex-4.6.0.tgz", + "integrity": "sha1-oyRd7mH7m24GJLU1ElYku2nBEQY=", + "dev": true + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "dev": true + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "dev": true + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "dev": true, + "requires": { + "lodash._getnative": "^3.0.0", + "lodash.isarguments": "^3.0.0", + "lodash.isarray": "^3.0.0" + } + }, + "lolex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", + "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", + "dev": true + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "memory-fs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", + "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", + "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "he": "1.1.1", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "mocha-make-stub": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/mocha-make-stub/-/mocha-make-stub-2.3.2.tgz", + "integrity": "sha1-/EAS7PgHbL5lMXaMaaoKdmBoRUE=", + "dev": true, + "requires": { + "sinon": "1.*" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-libs-browser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", + "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.1.4", + "buffer": "^4.9.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "3.3.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "0.0.1", + "os-browserify": "^0.2.0", + "path-browserify": "0.0.0", + "process": "^0.11.0", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.0.5", + "stream-browserify": "^2.0.1", + "stream-http": "^2.3.1", + "string_decoder": "^0.10.25", + "timers-browserify": "^2.0.2", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "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 + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "os-browserify": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.4", + "mkdirp": "^0.5.1", + "object-assign": "^4.1.0" + } + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "pbkdf2-compat": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", + "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + }, + "pkg-up": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", + "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "~2.0.3" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "react": { + "version": "0.14.9", + "resolved": "https://registry.npmjs.org/react/-/react-0.14.9.tgz", + "integrity": "sha1-kRCmSXxJ1EuhwO3TF67CnC4NkdE=", + "dev": true, + "requires": { + "envify": "^3.0.0", + "fbjs": "^0.6.1" + } + }, + "react-dom": { + "version": "0.14.9", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.9.tgz", + "integrity": "sha1-BQZKPc8PsYgKOyv8nVjFXY2fYpM=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": 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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "mute-stream": "0.0.5" + } + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "dev": true, + "requires": { + "ast-types": "0.9.6", + "esprima": "~3.1.0", + "private": "~0.1.5", + "source-map": "~0.5.0" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "^1.3.0" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "samsam": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", + "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", + "dev": true + }, + "secure-random": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/secure-random/-/secure-random-1.1.2.tgz", + "integrity": "sha512-H2bdSKERKdBV1SwoqYm6C0y+9EA94v6SUBOWO8kDndc4NoUih7Dv6Tsgma7zO1lv27wIvjlD0ZpMQk7um5dheQ==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "should": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/should/-/should-11.2.1.tgz", + "integrity": "sha1-kPVRRVUtAc/CAGZuToGKHJZw7aI=", + "dev": true, + "requires": { + "should-equal": "^1.0.0", + "should-format": "^3.0.2", + "should-type": "^1.4.0", + "should-type-adaptors": "^1.0.1", + "should-util": "^1.0.0" + } + }, + "should-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-1.0.1.tgz", + "integrity": "sha1-C26VFvJgGp+wuy3MNpr6HH4gCvc=", + "dev": true, + "requires": { + "should-type": "^1.0.0" + } + }, + "should-format": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", + "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", + "dev": true, + "requires": { + "should-type": "^1.3.0", + "should-type-adaptors": "^1.0.1" + } + }, + "should-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", + "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=", + "dev": true + }, + "should-type-adaptors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", + "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", + "dev": true, + "requires": { + "should-type": "^1.3.0", + "should-util": "^1.0.0" + } + }, + "should-util": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", + "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", + "dev": true + }, + "sinon": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", + "integrity": "sha1-RUKk9JugxFwF6y6d2dID4rjv4L8=", + "dev": true, + "requires": { + "formatio": "1.1.1", + "lolex": "1.3.2", + "samsam": "1.1.2", + "util": ">=0.10.3 <1" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "string-width": { + "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", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "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 + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", + "slice-ansi": "0.0.4", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "tapable": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + } + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.20", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", + "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==", + "dev": true + }, + "uglify-js": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", + "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", + "dev": true, + "requires": { + "async": "~0.2.6", + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "async": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "util": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.1.tgz", + "integrity": "sha512-MREAtYOp+GTt9/+kwf00IYoHZyjM8VU4aVrkzUlejyqaIjd2GztVl5V9hGXKlvBKE3gENn/FMfHE5v6hElXGcQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "object.entries": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "^1.1.1" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", + "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", + "dev": true, + "requires": { + "async": "^0.9.0", + "chokidar": "^1.0.0", + "graceful-fs": "^4.1.2" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + } + } + }, + "webpack": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz", + "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=", + "dev": true, + "requires": { + "acorn": "^3.0.0", + "async": "^1.3.0", + "clone": "^1.0.2", + "enhanced-resolve": "~0.9.0", + "interpret": "^0.6.4", + "loader-utils": "^0.2.11", + "memory-fs": "~0.3.0", + "mkdirp": "~0.5.0", + "node-libs-browser": "^0.7.0", + "optimist": "~0.6.0", + "supports-color": "^3.1.0", + "tapable": "~0.1.8", + "uglify-js": "~2.7.3", + "watchpack": "^0.2.1", + "webpack-core": "~0.6.9" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + }, + "interpret": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", + "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "webpack-visualizer-plugin": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/webpack-visualizer-plugin/-/webpack-visualizer-plugin-0.1.11.tgz", + "integrity": "sha1-uHcK2GtPZSYSxosbeCJT+vn4o04=", + "dev": true, + "requires": { + "d3": "^3.5.6", + "mkdirp": "^0.5.1", + "react": "^0.14.0", + "react-dom": "^0.14.0" + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + } + } +} diff --git a/package.json b/package.json index f5bf5122..09648560 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@steemit/steem-js", - "version": "0.7.7", + "version": "0.7.8", "description": "Steem.js the JavaScript API for Steem blockchain", "main": "lib/index.js", "scripts": { diff --git a/src/api/methods.js b/src/api/methods.js index f8a91e20..99e40368 100644 --- a/src/api/methods.js +++ b/src/api/methods.js @@ -505,5 +505,10 @@ export default [ "api": "condenser_api", "method": "list_proposal_votes", "params": ["start", "limit", "order_by", "order_direction", "status"] + }, + { + "api": "condenser_api", + "method": "get_nai_pool", + "params": [] } ]; diff --git a/src/auth/serializer/src/ChainTypes.js b/src/auth/serializer/src/ChainTypes.js index 4e3b0092..3ec8e5fd 100644 --- a/src/auth/serializer/src/ChainTypes.js +++ b/src/auth/serializer/src/ChainTypes.js @@ -56,20 +56,28 @@ ChainTypes.operations= { create_proposal: 44, update_proposal_votes: 45, remove_proposal: 46, - fill_convert_request: 47, - author_reward: 48, - curation_reward: 49, - comment_reward: 50, - liquidity_reward: 51, - interest: 52, - fill_vesting_withdraw: 53, - fill_order: 54, - shutdown_witness: 55, - fill_transfer_from_savings: 56, - hardfork: 57, - comment_payout_update: 58, - return_vesting_delegation: 59, - comment_benefactor_reward: 60 + claim_reward_balance2: 47, + vote2: 48, + smt_setup: 49, + smt_setup_emissions: 50, + smt_set_setup_parameters: 51, + smt_set_runtime_parameters: 52, + smt_create: 53, + smt_contribute: 54, + fill_convert_request: 55, + author_reward: 56, + curation_reward: 57, + comment_reward: 58, + liquidity_reward: 59, + interest: 60, + fill_vesting_withdraw: 61, + fill_order: 62, + shutdown_witness: 63, + fill_transfer_from_savings: 64, + hardfork: 65, + comment_payout_update: 66, + return_vesting_delegation: 67, + comment_benefactor_reward: 68 }; //types.hpp diff --git a/src/auth/serializer/src/operations.js b/src/auth/serializer/src/operations.js index a204f521..3c31af18 100644 --- a/src/auth/serializer/src/operations.js +++ b/src/auth/serializer/src/operations.js @@ -37,7 +37,7 @@ import SerializerImpl from "./serializer" const { //id_type, //varint32, uint8, int64, fixed_array, object_id_type, vote_id, address, - uint16, uint32, int16, uint64, + uint8, uint16, int16, uint32, uint64, int64, uint128, string, string_binary, bytes, bool, array, // protocol_id_type, static_variant, map, set, @@ -45,11 +45,14 @@ const { time_point_sec, optional, asset, + asset_symbol } = types const future_extensions = types.void const hardfork_version_vote = types.void const version = types.void +const required_automated_actions = types.void +const optional_automated_actions = types.void // Place-holder, their are dependencies on "operation" .. The final list of // operations is not avialble until the very end of the generated code. @@ -72,6 +75,68 @@ const comment_payout_beneficiaries = new Serializer(0, { beneficiaries: set(beneficiaries) }); +const votable_asset_options = new Serializer( + "votable_asset_options", { + max_accepted_payout: int64, + allow_curation_rewards: bool, + beneficiaries: comment_payout_beneficiaries +}); + +const allowed_vote_assets = new Serializer( + "allowed_vote_assets", { + votable_assets: map((string), (votable_asset_options)) +}); + +const smt_generation_unit = new Serializer( + "smt_generation_unit", { + steem_unit: map((string), (uint16)), + token_unit: map((string), (uint16)) +}); + +const smt_capped_generation_policy = new Serializer( + "smt_capped_generation_policy", { + pre_soft_cap_unit: smt_generation_unit, + post_soft_cap_unit: smt_generation_unit, + min_unit_ratio: uint32, + max_unit_ratio: uint32, + extensions: set(future_extensions) +}); + +const smt_emissions_unit = new Serializer( + "smt_emissions_unit", { + token_unit: map((string), (uint16)) +}); + +const smt_param_allow_voting = new Serializer( + "smt_param_allow_voting", { + value: bool +}); + +const smt_param_windows_v1 = new Serializer( + "smt_param_window_v1", { + cashout_window_seconds: uint32, + reverse_auction_window_seconds: uint32 +}); + +const smt_param_vote_regeneration_period_seconds_v1 = new Serializer( + "smt_param_vote_regeneration_period_seconds_v1", { + vote_regeneration_period_seconds: uint32, + votes_per_regeneration_period: uint32 +}); + +const smt_param_rewards_v1 = new Serializer( + "smt_param_rewards_v1", { + content_constant: uint128, + percent_curation_rewards: uint16, + author_reward_curve: int64, + curation_reward_curve: int64 +}); + +const smt_param_allow_downvotes = new Serializer( + "smt_param_allow_downvotes", { + value: bool +}); + // Custom-types after Generated code // ## Generated code follows @@ -116,7 +181,9 @@ let signed_block = new Serializer( extensions: set(static_variant([ future_extensions, version, - hardfork_version_vote + hardfork_version_vote, + required_automated_actions, + optional_automated_actions ])), witness_signature: bytes(65), transactions: array(signed_transaction) @@ -146,7 +213,9 @@ let signed_block_header = new Serializer( extensions: set(static_variant([ future_extensions, version, - hardfork_version_vote + hardfork_version_vote, + required_automated_actions, + optional_automated_actions ])), witness_signature: bytes(65) } @@ -649,6 +718,108 @@ let remove_proposal = new Serializer( } ); +let claim_reward_balance2 = new Serializer( + "claim_reward_balance2", { + account: string, + reward_tokens: array(asset), + extensions: set(future_extensions) +} +); + +let vote2 = new Serializer( + "vote2", { + voter: string, + author: string, + permlink: string, + rshares: map((asset_symbol), (int64)), + extensions: set(future_extensions) +} +); + +let smt_create = new Serializer( + "smt_create", { + control_account: string, + symbol: asset_symbol, + smt_creation_fee: asset, + precision: uint8, + extensions: set(future_extensions) +} +); + +let smt_setup = new Serializer( + "smt_setup", { + control_account: string, + symbol: asset_symbol, + max_supply: int64, + initial_generation_policy: set(static_variant([ + smt_capped_generation_policy + ])), + contribution_begin_time: time_point_sec, + contribution_end_time: time_point_sec, + launch_time: time_point_sec, + steem_units_min: int64, + steem_units_soft_cap: int64, + steem_units_hard_cap: int64, + extensions: set(future_extensions) +} +); + +let smt_setup_emissions = new Serializer( + "smt_setup_emissions", { + control_account: string, + symbol: asset_symbol, + schedule_time: time_point_sec, + emissions_unit: smt_emissions_unit, + interval_seconds: uint32, + interval_count: uint32, + lep_time: time_point_sec, + rep_time: time_point_sec, + lep_abs_amount: asset, + rep_abs_amount: asset, + lep_rel_amount_numerator: uint32, + rep_rel_amount_numerator: uint32, + rel_amount_denom_bits: uint8, + remove: bool, + floor_emissions: bool, + extensions: set(future_extensions) +} +); + +let smt_set_setup_parameters = new Serializer( + "smt_set_setup_parameters", { + control_account: string, + symbol: asset_symbol, + setup_parameters: set(static_variant([ + smt_param_allow_voting + ])), + extensions: set(future_extensions) +} +); + +let smt_set_runtime_parameters = new Serializer( + "smt_set_runtime_parameters", { + control_account: string, + symbol: asset_symbol, + runtime_parameters: set(static_variant([ + smt_param_windows_v1, + smt_param_vote_regeneration_period_seconds_v1, + smt_param_rewards_v1, + smt_param_allow_downvotes + ])), + extensions: set(future_extensions) +} +); + +let smt_contribute = new Serializer( + "smt_contribute", { + contributor: string, + symbol: asset_symbol, + contribution_id: uint32, + contribution: asset, + extensions: set(future_extensions) +} +); + let fill_convert_request = new Serializer( "fill_convert_request", { owner: string, @@ -810,6 +981,14 @@ operation.st_operations = [ create_proposal, update_proposal_votes, remove_proposal, + claim_reward_balance2, + vote2, + smt_setup, + smt_setup_emissions, + smt_set_setup_parameters, + smt_set_runtime_parameters, + smt_create, + smt_contribute, fill_convert_request, author_reward, curation_reward, diff --git a/src/auth/serializer/src/types.js b/src/auth/serializer/src/types.js index 4551a09d..3b589597 100644 --- a/src/auth/serializer/src/types.js +++ b/src/auth/serializer/src/types.js @@ -6,6 +6,7 @@ const v = require('./validation'); const ObjectId = require('./object_id') const fp = require('./fast_parser'); const chain_types = require('./ChainTypes') +//const BigInt = require('BigInt') import { PublicKey, Address, ecc_config } from "../../ecc" import { fromImpliedDecimal } from "./number_utils" @@ -15,6 +16,52 @@ module.exports = Types const HEX_DUMP = process.env.npm_config__graphene_serializer_hex_dump +// Highly optimized implementation of Damm algorithm +// https://en.wikipedia.org/wiki/Damm_algorithm +function damm_checksum_8digit( value ) { + if( value >= 100000000 ) + throw new Error("Expected value less than 100000000, instead got " + value ) + + const t = [ + 0, 30, 10, 70, 50, 90, 80, 60, 40, 20, + 70, 0, 90, 20, 10, 50, 40, 80, 60, 30, + 40, 20, 0, 60, 80, 70, 10, 30, 50, 90, + 10, 70, 50, 0, 90, 80, 30, 40, 20, 60, + 60, 10, 20, 30, 0, 40, 50, 90, 70, 80, + 30, 60, 70, 40, 20, 0, 90, 50, 80, 10, + 50, 80, 60, 90, 70, 20, 0, 10, 30, 40, + 80, 90, 40, 50, 30, 60, 20, 0, 10, 70, + 90, 40, 30, 80, 60, 10, 70, 20, 0, 50, + 20, 50, 80, 10, 40, 30, 60, 70, 90, 0 + ]; + + let q0 = value/10 + let d0 = value%10 + let q1 = q0/10 + let d1 = q0%10 + let q2 = q1/10 + let d2 = q1%10 + let q3 = q2/10 + let d3 = q2%10 + let q4 = q3/10 + let d4 = q3%10 + let q5 = q4/10 + let d5 = q4%10 + let d6 = q5%10 + let d7 = q5/10 + + let x = t[d7] + x = t[x+d6] + x = t[x+d5] + x = t[x+d4] + x = t[x+d3] + x = t[x+d2] + x = t[x+d1] + x = t[x+d0] + + return x/10 +} + /** * Asset symbols contain the following information * @@ -25,34 +72,86 @@ const HEX_DUMP = process.env.npm_config__graphene_serializer_hex_dump * * It is treated as a uint64_t for all internal operations, but * is easily converted to something that can be displayed. +* +* Legacy serialization of assets +* 0000pppp aaaaaaaa bbbbbbbb cccccccc dddddddd eeeeeeee ffffffff 00000000 +* Symbol = abcdef +* +* NAI serialization of assets +* aaa1pppp bbbbbbbb cccccccc dddddddd +* NAI = (MSB to LSB) dddddddd cccccccc bbbbbbbb aaa +* +* NAI internal storage of legacy assets */ Types.asset = { fromByteBuffer(b){ let amount = b.readInt64() let precision = b.readUint8() - let b_copy = b.copy(b.offset, b.offset + 7) - let symbol = new Buffer(b_copy.toBinary(), "binary").toString().replace(/\x00/g, "") - b.skip(7); - // "1.000 STEEM" always written with full precision - let amount_string = fromImpliedDecimal(amount, precision) + let amount_string = "" + let symbol = "" + + if(precision >= 16) + { + // NAI Case + let b_copy = b.copy(b.offset - 1, b.offset + 3) + let nai = new Buffer(b_copy.toBinary(), "binary").readInt32() + nai = nai / 32 + symbol = "@@" + nai.toString().padStart(8, '0') + damm_checksum_8digit(nai).to_String() + precision = precision % 16 + b.skip(3) + amount_string = fromImpliedDecimal(amount,precision) + } + else + { + // Legacy Case + let b_copy = b.copy(b.offset, b.offset + 7) + symbol = new Buffer(b_copy.toBinary(), "binary").toString().replace(/\x00/g, "") + b.skip(7) + // "1.000 STEEM" always written with full precision + amount_string = fromImpliedDecimal(amount, precision) + } + return amount_string + " " + symbol }, appendByteBuffer(b, object){ object = object.trim() - if( ! /^[0-9]+\.?[0-9]* [A-Za-z0-9]+$/.test(object)) + if( ! /^[0-9]+\.?[0-9]* [A-Za-z0-9@]+$/.test(object)) throw new Error("Expecting amount like '99.000 SYMBOL', instead got '" + object + "'") let [ amount, symbol ] = object.split(" ") - if(symbol.length > 6) + let nai = 0 + if(symbol.startsWith("@@")) + { + // NAI Case + nai = parseInt(symbol.slice(2)) + let checksum = nai % 10 + nai = nai / 10; + let expected_checksum = damm_checksum_8digit(nai) + + if(checksum != expected_checksum) + throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) + } + else if(symbol.length > 6) throw new Error("Symbols are not longer than 6 characters " + symbol + "-"+ symbol.length) b.writeInt64(v.to_long(amount.replace(".", ""))) let dot = amount.indexOf(".") // 0.000 let precision = dot === -1 ? 0 : amount.length - dot - 1 - b.writeUint8(precision) - b.append(symbol.toUpperCase(), 'binary') - for(let i = 0; i < 7 - symbol.length; i++) - b.writeUint8(0) + + + if(symbol.startsWith("@@")) + { + nai = nai * 32 + 16 + precision + b.writeUint32(nai) + } + else + { + b.writeUint8(precision) + b.append(symbol.toUpperCase(), 'binary') + for(let i = 0; i < 7 - symbol.length; i++) + b.writeUint8(0) + } + return }, fromObject(object){ @@ -64,6 +163,79 @@ Types.asset = { } } +Types.asset_symbol = { + fromByteBuffer(b){ + let precision = b.readUint8() + let amount_string = "" + let symbol = "" + + if(precision >= 16) + { + // NAI Case + let b_copy = b.copy(b.offset - 1, b.offset + 3) + let nai = new Buffer(b_copy.toBinary(), "binary").readInt32() + nai = nai / 32 + symbol = "@@" + nai.toString().padStart(8, '0') + damm_checksum_8digit(nai).to_String() + precision = precision % 16 + b.skip(3) + } + else + { + // Legacy Case + let b_copy = b.copy(b.offset, b.offset + 7) + symbol = new Buffer(b_copy.toBinary(), "binary").toString().replace(/\x00/g, "") + b.skip(7) + } + + return symbol + }, + appendByteBuffer(b, object){ + object = object.trim() + if( ! /[A-Za-z0-9@]+$/.test(object)) + throw new Error("Expecting symbol like 'SYMBOL', instead got '" + object + "'") + + let nai = 0 + if(object.startsWith("@@")) + { + // NAI Case + nai = parseInt(object.slice(2)) + let checksum = nai % 10 + nai = nai / 10; + let expected_checksum = damm_checksum_8digit(nai) + + if(checksum != expected_checksum) + throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) + } + else if(object.length > 6) + throw new Error("Symbols are not longer than 6 characters " + object + "-"+ object.length) + + if(object.startsWith("@@")) + { + nai = nai * 32 + 16 + b.writeUint32(nai) + } + else + { + let precision = 3 + if(object == "VESTS") precision = 6 + + b.writeUint8(precision) + b.append(object.toUpperCase(), 'binary') + for(let i = 0; i < 7 - object.length; i++) + b.writeUint8(0) + } + + return + }, + fromObject(object){ + return object + }, + toObject(object, debug = {}){ + if (debug.use_default && object === undefined) { return "STEEM"; } + return object + } +} + Types.uint8 = { fromByteBuffer(b){ @@ -217,6 +389,29 @@ Types.uint64 = } }; +Types.uint128 = + {fromByteBuffer(b){ + let u128 = b.readBigInt64(); + u128 = u128 << 64; + u128 += b.readBigInt64(); + return u128; + }, + appendByteBuffer(b, object){ + let hi = object >> 64; + let lo = object % (1 << 64); + b.writeUint64(v.to_long(v.unsigned(hi))); + b.writeUint64(v.to_long(v.unsigned(lo))); + return; + }, + fromObject(object){ + return v.to_long(v.unsigned(object)); + }, + toObject(object, debug = {}){ + if (debug.use_default && object === undefined) { return "0"; } + return v.to_long(object).toString(); + } + }; + Types.string = {fromByteBuffer(b){ return new Buffer(b.readVString(), 'utf8'); diff --git a/src/broadcast/operations.js b/src/broadcast/operations.js index 086069fe..e7aeb413 100644 --- a/src/broadcast/operations.js +++ b/src/broadcast/operations.js @@ -487,6 +487,117 @@ module.exports = [ "extensions" ] }, + { + "roles": ["posting", "active", "owner"], + "operation": "claim_reward_balance2", + "params": [ + "account", + "reward_tokens", + "extensions" + ] + }, + { + "roles": ["posting", "active", "owner"], + "operation": "vote2", + "params": [ + "voter", + "author", + "permlink", + "rshares", + "extensions" + ] + }, + { + "roles": ["active", "owner"], + "operation": "smt_create", + "params": [ + "control_account", + "symbol", + "smt_creation_fee", + "precision", + "extensions" + ] + }, + { + "roles": ["active", "owner"], + "operation": "smt_setup", + "params": [ + "control_account", + "symbol", + "max_supply", + "initial_generation_policy", + "contribution_begin_time", + "contribution_end_time", + "launch_time", + "steem_units_min", + "steem_units_soft_cap", + "steem_units_hard_cap", + "extensions" + ] + }, + { + "roles": ["active", "owner"], + "operation": "smt_setup_emissions", + "params": [ + "control_account", + "symbol", + "schedule_time", + "emissions_unit", + "interval_seconds", + "interval_coount", + "lep_time", + "rep_time", + "lep_abs_amount", + "rep_abs_amount", + "lep_rel_amount_numerator", + "rep_rel_amount_numerator", + "rel_amount_denom_bits", + "remove", + "floor_emissions", + "extensions" + ] + }, + { + "roles": ["active", "owner"], + "operation": "smt_set_setup_parameters", + "params": [ + "control_account", + "symbol", + "setup_parameters", + "extensions" + ] + }, + { + "roles": ["active", "owner"], + "operation": "smt_set_setup_parameters", + "params": [ + "control_account", + "symbol", + "setup_parameters", + "extensions" + ] + }, + { + "roles": ["active", "owner"], + "operation": "smt_set_runtime_parameters", + "params": [ + "control_account", + "symbol", + "runtime_parameters", + "extensions" + ] + }, + { + "roles": ["active", "owner"], + "operation": "smt_contribute", + "params": [ + "contributor", + "symbol", + "contribution_id", + "contribution", + "extensions" + ] + }, { "roles": ["active", "owner"], "operation": "fill_convert_request", From 2cd69ee3c88d4663e532cf04468273d691a3b412 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Wed, 16 Oct 2019 16:24:23 -0700 Subject: [PATCH 57/94] Add smt op tests #456 --- src/auth/serializer/src/types.js | 12 +- src/broadcast/operations.js | 10 - test/smt.test.js | 331 +++++++++++++++++++++++++++++++ 3 files changed, 335 insertions(+), 18 deletions(-) create mode 100644 test/smt.test.js diff --git a/src/auth/serializer/src/types.js b/src/auth/serializer/src/types.js index 3b589597..b080e1cf 100644 --- a/src/auth/serializer/src/types.js +++ b/src/auth/serializer/src/types.js @@ -391,16 +391,12 @@ Types.uint64 = Types.uint128 = {fromByteBuffer(b){ - let u128 = b.readBigInt64(); - u128 = u128 << 64; - u128 += b.readBigInt64(); - return u128; + b.readBigInt64(); + return b.readBigInt64(); }, appendByteBuffer(b, object){ - let hi = object >> 64; - let lo = object % (1 << 64); - b.writeUint64(v.to_long(v.unsigned(hi))); - b.writeUint64(v.to_long(v.unsigned(lo))); + b.writeUint64(v.to_long(v.unsigned(0))); + b.writeUint64(v.to_long(v.unsigned(object))); return; }, fromObject(object){ diff --git a/src/broadcast/operations.js b/src/broadcast/operations.js index e7aeb413..86000cf2 100644 --- a/src/broadcast/operations.js +++ b/src/broadcast/operations.js @@ -567,16 +567,6 @@ module.exports = [ "extensions" ] }, - { - "roles": ["active", "owner"], - "operation": "smt_set_setup_parameters", - "params": [ - "control_account", - "symbol", - "setup_parameters", - "extensions" - ] - }, { "roles": ["active", "owner"], "operation": "smt_set_runtime_parameters", diff --git a/test/smt.test.js b/test/smt.test.js new file mode 100644 index 00000000..66d577ba --- /dev/null +++ b/test/smt.test.js @@ -0,0 +1,331 @@ +import assert from "assert" +import Promise from 'bluebird'; +import should from 'should'; +import steem from '../src'; + +const username = process.env.STEEM_USERNAME || 'guest123'; +const password = process.env.STEEM_PASSWORD; +const activeWif = steem.auth.toWif(username, password, 'active'); + +describe('steem.smt:', () => { + + describe('smt creation ops', () => { + it('signs and verifies smt_create', function(done) { + let tx = { + 'operations': [[ + 'create_proposal', { + 'creator': username, + 'symbol': '@@123456789', + 'smt_creation_fee': '10.000 STEEM', + 'precision': '3', + }]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + + it('signs and verifies smt_setup', function(done) { + let tx = { + 'operations': [[ + 'smt_setup', { + 'control_account' : username, + 'symbol' : '@@123456789', + 'max_supply' : '1000000000000000', + 'initial_generation_policy' : { + 'type' : 'smt_capped_generation_policy', + 'value': { + 'pre_soft_cap_unit' : { + 'steem_unit' : [ + ['$!alice.vesting',2], + ['$market_maker',2], + ['alice',2] + ], + 'token_unit' : [ + ['$!alice.vesting',2], + ['$from',2], + ['$from.vesting',2], + ['$market_maker',2], + ['$rewards',2], + ['alice',2] + ] + }, + 'post_soft_cap_unit' : { + 'steem_unit' : [ + ['$!alice.vesting',1], + ['$market_maker',1], + ['alice',1] + ], + 'token_unit' : [ + ['$!alice.vesting',1], + ['$from',1], + ['$from.vesting',1], + ['$market_maker',1], + ['$rewards',1], + ['alice',1] + ] + }, + 'min_unit_ratio' : 50, + 'max_unit_ratio' : 100, + 'extensions':[] + } + }, + 'contribution_begin_time' : '2020-12-21T00:00:00', + 'contribution_end_time' : '2021-12-21T00:00:00', + 'launch_time' : '2021-12-22T00:00:00', + 'steem_units_soft_cap' : 2000, + 'steem_units_hard_cap' : 10000, + 'extensions':[] + }]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + + it('signs and verifies smt_setup_emissions', function(done) { + let tx = { + 'operations': [[ + 'smt_setup_emissions', { + 'control_account' : 'alice', + 'symbol' : '@@123456789', + 'schedule_time' : '2019-10-16T19:47:05', + 'emissions_unit' : { + 'token_unit' : [ + ['$market_maker',1], + ['$rewards',1], + ['$vesting',1] + ] + }, + 'interval_seconds' : 21600, + 'interval_count' : 1, + 'lep_time' : '1970-01-01T00:00:00', + 'rep_time' : '1970-01-01T00:00:00', + 'lep_abs_amount' : '0', + 'rep_abs_amount': '0', + 'lep_rel_amount_numerator' : 1, + 'rep_rel_amount_numerator' : 0, + 'rel_amount_denom_bits' : 0, + 'remove' : false, + 'floor_emissions' : false, + 'extensions':[] + }]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + + it('signs and verifies smt_set_setup_parameters', function(done) { + let tx = { + 'operations': [[ + 'smt_set_setup_parameters', { + 'control_account' : 'alice', + 'symbol' : '@@123456789', + 'setup_parameters' : [[ + 'smt_param_allow_voting', { + 'value':false + }]], + 'extensions':[] + }]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + + it('signs and verifies smt_set_runtime_parameters', function(done) { + let tx = { + 'operations': [[ + 'smt_set_runtime_parameters', { + 'control_account' : 'alice', + 'symbol' : '@@123456789', + 'runtime_parameters' : [[ + 'smt_param_vote_regeneration_period_seconds_v1', { + 'vote_regeneration_period_seconds' : 604800, + 'votes_per_regeneration_period' : 6999 + }]], + 'extensions':[] + }]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + + it('signs and verifies smt_contribute', function(done) { + let tx = { + 'operations': [[ + 'smt_contribute', { + 'contributor' : 'alice', + 'symbol' : '@@123456789', + 'contribution_id' : 1, + 'contribution': '1.000 STEEM', + 'extensions':[] + }]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + }); + + describe('smt extended ops', () => { + let permlink = 'test'; + + it('signs and verifies claim_rewards2', function(done) { + let tx = { + 'operations': [[ + 'claim_rewards2', { + "account" : "alice", + "reward_tokens" : [ + "1.000 STEEM", + "1.000 SBD", + "1.000000 VESTS", + "0.1 @@631672482", + "1 @@642246725", + "1 @@678264426" + ]}]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + + it('signs and verifies comment_options', function(done) { + let tx = { + 'operations': [[ + 'comment_options', { + "author" : username, + "permlink" : permlink, + "max_accepted_payout" : "1000000.000 STEEM", + "percent_steem_dollars" : 10000, + "allow_votes" : true, + "allow_curation_rewards" : true, + "extensions" : [[ + "allowed_vote_assets", { + "votable_assets":[[ + "@@123456789", { + "max_accepted_payout" : 10, + "allow_curation_rewards" : true, + "beneficiaries" : { + "beneficiaries" : [ + { "account" : "alice", "weight" : 100 }, + { "account": "bob" , "weight" : 100 } + ]}}]]}]]}]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + + it('signs and verifies vote2', function(done) { + let tx = { + 'operations': [[ + 'vote2', { + "voter" : username, + "author" : username, + "permlink" : permlink, + "rshares": [ + ["@@833798768","2000000000"], + ["STEEM","81502331182"] + ], + "extensions":[] + }]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + }); +}); From a9e35a46d3d823e3926834d25130db492591cb09 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Thu, 17 Oct 2019 13:12:20 -0700 Subject: [PATCH 58/94] Update asset_symbol serilization to match new serialization. Extend asset serialization to support new serialization. --- src/auth/serializer/src/types.js | 108 ++++++++++++++++++++++--------- 1 file changed, 77 insertions(+), 31 deletions(-) diff --git a/src/auth/serializer/src/types.js b/src/auth/serializer/src/types.js index b080e1cf..275c34c9 100644 --- a/src/auth/serializer/src/types.js +++ b/src/auth/serializer/src/types.js @@ -114,29 +114,53 @@ Types.asset = { return amount_string + " " + symbol }, appendByteBuffer(b, object){ - object = object.trim() - if( ! /^[0-9]+\.?[0-9]* [A-Za-z0-9@]+$/.test(object)) - throw new Error("Expecting amount like '99.000 SYMBOL', instead got '" + object + "'") - - let [ amount, symbol ] = object.split(" ") + let amount = "" + let symbol = "" let nai = 0 - if(symbol.startsWith("@@")) + let precision = 0 + + if(object["nai"]) { - // NAI Case - nai = parseInt(symbol.slice(2)) - let checksum = nai % 10 - nai = nai / 10; - let expected_checksum = damm_checksum_8digit(nai) + symbol = object["nai"] + nai = parseInt(symbol.slice(2)) + let checksum = nai % 10 + nai = nai / 10; + let expected_checksum = damm_checksum_8digit(nai) - if(checksum != expected_checksum) - throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) + if(checksum != expected_checksum) + throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) + + precision = object["precision"] + b.writeInt64(v.to_long(parseInt(object["amount"]))) } - else if(symbol.length > 6) - throw new Error("Symbols are not longer than 6 characters " + symbol + "-"+ symbol.length) + else + { + object = object.trim() + if( ! /^[0-9]+\.?[0-9]* [A-Za-z0-9@]+$/.test(object)) + throw new Error("Expecting amount like '99.000 SYMBOL', instead got '" + object + "'") + + let res = object.split(" ") + amount = res[0] + symbol = res[1] + + if(symbol.startsWith("@@")) + { + // NAI Case + nai = parseInt(symbol.slice(2)) + let checksum = nai % 10 + nai = nai / 10; + let expected_checksum = damm_checksum_8digit(nai) + + if(checksum != expected_checksum) + throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) + } + else if(symbol.length > 6) + throw new Error("Symbols are not longer than 6 characters " + symbol + "-"+ symbol.length) - b.writeInt64(v.to_long(amount.replace(".", ""))) - let dot = amount.indexOf(".") // 0.000 - let precision = dot === -1 ? 0 : amount.length - dot - 1 + b.writeInt64(v.to_long(amount.replace(".", ""))) + let dot = amount.indexOf(".") // 0.000 + precision = dot === -1 ? 0 : amount.length - dot - 1 + } if(symbol.startsWith("@@")) @@ -167,7 +191,7 @@ Types.asset_symbol = { fromByteBuffer(b){ let precision = b.readUint8() let amount_string = "" - let symbol = "" + let nai_string = "" if(precision >= 16) { @@ -175,7 +199,7 @@ Types.asset_symbol = { let b_copy = b.copy(b.offset - 1, b.offset + 3) let nai = new Buffer(b_copy.toBinary(), "binary").readInt32() nai = nai / 32 - symbol = "@@" + nai.toString().padStart(8, '0') + damm_checksum_8digit(nai).to_String() + nai_string = "@@" + nai.toString().padStart(8, '0') + damm_checksum_8digit(nai).to_String() precision = precision % 16 b.skip(3) } @@ -183,22 +207,27 @@ Types.asset_symbol = { { // Legacy Case let b_copy = b.copy(b.offset, b.offset + 7) - symbol = new Buffer(b_copy.toBinary(), "binary").toString().replace(/\x00/g, "") + let symbol = new Buffer(b_copy.toBinary(), "binary").toString().replace(/\x00/g, "") + if(symbol == "STEEM" || symbol == "TESTS") + nai_string = "@@000000021" + else if(symbol == "SBD" || symbol == "TBD") + nai_string = "@@000000013" + else if(symbol == "VESTS") + nai_string = "@@000000037" + else + throw new Error("Expecting non-smt core asset symbol, instead got '" + symbol + "'") b.skip(7) } - return symbol + return {"nai" : nai_string, "precision" : precision} }, appendByteBuffer(b, object){ - object = object.trim() - if( ! /[A-Za-z0-9@]+$/.test(object)) - throw new Error("Expecting symbol like 'SYMBOL', instead got '" + object + "'") let nai = 0 - if(object.startsWith("@@")) + if(object["nai"].startsWith("@@")) { // NAI Case - nai = parseInt(object.slice(2)) + nai = parseInt(object["nai"].slice(2)) let checksum = nai % 10 nai = nai / 10; let expected_checksum = damm_checksum_8digit(nai) @@ -216,12 +245,29 @@ Types.asset_symbol = { } else { - let precision = 3 - if(object == "VESTS") precision = 6 + let precision = 0; + let symbol = ""; + switch(object["nai"]) + { + case "@@000000021": + precision = 3 + //symbol = "STEEM" + symbol = "TESTS" + break + case "@@000000013": + precision = 3 + //symbol = "SBD" + symbol = "TBD" + break + case "@@000000037": + precision = 6 + symbol = "VESTS" + break + } b.writeUint8(precision) - b.append(object.toUpperCase(), 'binary') - for(let i = 0; i < 7 - object.length; i++) + b.append(symbol, 'binary') + for(let i = 0; i < 7 - symbol.length; i++) b.writeUint8(0) } From 45d89575746a57bc813367649cd3ab835994efa3 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Thu, 17 Oct 2019 16:03:41 -0700 Subject: [PATCH 59/94] Update smt test asset serialization --- test/smt.test.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/test/smt.test.js b/test/smt.test.js index 66d577ba..3d3af321 100644 --- a/test/smt.test.js +++ b/test/smt.test.js @@ -15,7 +15,7 @@ describe('steem.smt:', () => { 'operations': [[ 'create_proposal', { 'creator': username, - 'symbol': '@@123456789', + 'symbol': {'nai':'@@123456789','precision':'3'}, 'smt_creation_fee': '10.000 STEEM', 'precision': '3', }]] @@ -40,7 +40,7 @@ describe('steem.smt:', () => { 'operations': [[ 'smt_setup', { 'control_account' : username, - 'symbol' : '@@123456789', + 'symbol' : {'nai':'@@123456789','precision':'3'}, 'max_supply' : '1000000000000000', 'initial_generation_policy' : { 'type' : 'smt_capped_generation_policy', @@ -108,7 +108,7 @@ describe('steem.smt:', () => { 'operations': [[ 'smt_setup_emissions', { 'control_account' : 'alice', - 'symbol' : '@@123456789', + 'symbol' : {'nai':'@@123456789','precision':'3'}, 'schedule_time' : '2019-10-16T19:47:05', 'emissions_unit' : { 'token_unit' : [ @@ -151,7 +151,7 @@ describe('steem.smt:', () => { 'operations': [[ 'smt_set_setup_parameters', { 'control_account' : 'alice', - 'symbol' : '@@123456789', + 'symbol' : {'nai':'@@123456789','precision':'3'}, 'setup_parameters' : [[ 'smt_param_allow_voting', { 'value':false @@ -179,7 +179,7 @@ describe('steem.smt:', () => { 'operations': [[ 'smt_set_runtime_parameters', { 'control_account' : 'alice', - 'symbol' : '@@123456789', + 'symbol' : {'nai':'@@123456789','precision':'3'}, 'runtime_parameters' : [[ 'smt_param_vote_regeneration_period_seconds_v1', { 'vote_regeneration_period_seconds' : 604800, @@ -208,7 +208,7 @@ describe('steem.smt:', () => { 'operations': [[ 'smt_contribute', { 'contributor' : 'alice', - 'symbol' : '@@123456789', + 'symbol' : {'nai':'@@123456789','precision':'3'}, 'contribution_id' : 1, 'contribution': '1.000 STEEM', 'extensions':[] @@ -239,12 +239,12 @@ describe('steem.smt:', () => { 'claim_rewards2', { "account" : "alice", "reward_tokens" : [ - "1.000 STEEM", - "1.000 SBD", - "1.000000 VESTS", - "0.1 @@631672482", - "1 @@642246725", - "1 @@678264426" + {"amount":"1000","precision":3,"nai":"@@000000013"}, + {"amount":"1000","precision":3,"nai":"@@000000021"}, + {"amount":"1000000","precision":6,"nai":"@@000000037"}, + {"amount":"1","precision":1,"nai":"@@631672482"}, + {"amount":"1","precision":0,"nai":"@@642246725"}, + {"amount":"1","precision":1,"nai":"@@678264426"} ]}]] } @@ -275,7 +275,7 @@ describe('steem.smt:', () => { "extensions" : [[ "allowed_vote_assets", { "votable_assets":[[ - "@@123456789", { + {'nai':'@@123456789','precision':'3'}, { "max_accepted_payout" : 10, "allow_curation_rewards" : true, "beneficiaries" : { @@ -307,8 +307,8 @@ describe('steem.smt:', () => { "author" : username, "permlink" : permlink, "rshares": [ - ["@@833798768","2000000000"], - ["STEEM","81502331182"] + [{'nai':'@@123456789','precision':'3'},,"2000000000"], + [{'nai':'@@000000013','precision':'3'},"81502331182"] ], "extensions":[] }]] From 138cbdad65131bd0b460ba4faca7448a970bd925 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Wed, 23 Oct 2019 12:11:44 -0700 Subject: [PATCH 60/94] Progress on smt op serialization #456 --- src/api/transports/http.js | 4 +- src/api/transports/ws.js | 4 +- src/auth/serializer/src/operations.js | 27 +++--- src/auth/serializer/src/types.js | 19 +++-- test/api.test.js | 12 +-- test/smt.test.js | 113 +++++++++++++------------- 6 files changed, 89 insertions(+), 90 deletions(-) diff --git a/src/api/transports/http.js b/src/api/transports/http.js index 4853daa9..45dab7dd 100644 --- a/src/api/transports/http.js +++ b/src/api/transports/http.js @@ -53,9 +53,9 @@ export function jsonRpc(uri, {method, id, params, fetchMethod=fetch}) { export default class HttpTransport extends Transport { send(api, data, callback) { - if (this.options.useAppbaseApi) { + //if (this.options.useAppbaseApi) { api = 'condenser_api'; - } + //} debug('Steem::send', api, data); const id = data.id || this.id++; const params = [api, data.method, data.params]; diff --git a/src/api/transports/ws.js b/src/api/transports/ws.js index 1475a941..7ee91cb7 100644 --- a/src/api/transports/ws.js +++ b/src/api/transports/ws.js @@ -76,9 +76,9 @@ export default class WsTransport extends Transport { } }); - if (this.options.useAppbaseApi) { + //if (this.options.useAppbaseApi) { api = 'condenser_api'; - } + //} const _request = { deferral, diff --git a/src/auth/serializer/src/operations.js b/src/auth/serializer/src/operations.js index 3c31af18..0ae6ca05 100644 --- a/src/auth/serializer/src/operations.js +++ b/src/auth/serializer/src/operations.js @@ -82,9 +82,8 @@ const votable_asset_options = new Serializer( beneficiaries: comment_payout_beneficiaries }); -const allowed_vote_assets = new Serializer( - "allowed_vote_assets", { - votable_assets: map((string), (votable_asset_options)) +const allowed_vote_assets = new Serializer(1, { + votable_assets: map((asset_symbol), (votable_asset_options)) }); const smt_generation_unit = new Serializer( @@ -107,33 +106,28 @@ const smt_emissions_unit = new Serializer( token_unit: map((string), (uint16)) }); -const smt_param_allow_voting = new Serializer( - "smt_param_allow_voting", { +const smt_param_allow_voting = new Serializer(0, { value: bool }); -const smt_param_windows_v1 = new Serializer( - "smt_param_window_v1", { +const smt_param_windows_v1 = new Serializer(0, { cashout_window_seconds: uint32, reverse_auction_window_seconds: uint32 }); -const smt_param_vote_regeneration_period_seconds_v1 = new Serializer( - "smt_param_vote_regeneration_period_seconds_v1", { +const smt_param_vote_regeneration_period_seconds_v1 = new Serializer(1, { vote_regeneration_period_seconds: uint32, votes_per_regeneration_period: uint32 }); -const smt_param_rewards_v1 = new Serializer( - "smt_param_rewards_v1", { +const smt_param_rewards_v1 = new Serializer(2, { content_constant: uint128, percent_curation_rewards: uint16, author_reward_curve: int64, curation_reward_curve: int64 }); -const smt_param_allow_downvotes = new Serializer( - "smt_param_allow_downvotes", { +const smt_param_allow_downvotes = new Serializer(3, { value: bool }); @@ -421,7 +415,8 @@ let comment_options = new Serializer( allow_votes: bool, allow_curation_rewards: bool, extensions: set(static_variant([ - comment_payout_beneficiaries + comment_payout_beneficiaries, + allowed_vote_assets ])) } ); @@ -774,8 +769,8 @@ let smt_setup_emissions = new Serializer( interval_count: uint32, lep_time: time_point_sec, rep_time: time_point_sec, - lep_abs_amount: asset, - rep_abs_amount: asset, + lep_abs_amount: int64, + rep_abs_amount: int64, lep_rel_amount_numerator: uint32, rep_rel_amount_numerator: uint32, rel_amount_denom_bits: uint8, diff --git a/src/auth/serializer/src/types.js b/src/auth/serializer/src/types.js index 275c34c9..51e2e777 100644 --- a/src/auth/serializer/src/types.js +++ b/src/auth/serializer/src/types.js @@ -124,13 +124,14 @@ Types.asset = { symbol = object["nai"] nai = parseInt(symbol.slice(2)) let checksum = nai % 10 - nai = nai / 10; + nai = Math.floor(nai / 10); let expected_checksum = damm_checksum_8digit(nai) + console.log(expected_checksum) - if(checksum != expected_checksum) - throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) + //if(checksum != expected_checksum) + // throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) - precision = object["precision"] + precision = parseInt(object["precision"]) b.writeInt64(v.to_long(parseInt(object["amount"]))) } else @@ -148,7 +149,7 @@ Types.asset = { // NAI Case nai = parseInt(symbol.slice(2)) let checksum = nai % 10 - nai = nai / 10; + nai = Math.floor(nai / 10); let expected_checksum = damm_checksum_8digit(nai) if(checksum != expected_checksum) @@ -229,16 +230,16 @@ Types.asset_symbol = { // NAI Case nai = parseInt(object["nai"].slice(2)) let checksum = nai % 10 - nai = nai / 10; + nai = Math.floor(nai / 10); let expected_checksum = damm_checksum_8digit(nai) - if(checksum != expected_checksum) - throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) + //if(checksum != expected_checksum) + // throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) } else if(object.length > 6) throw new Error("Symbols are not longer than 6 characters " + object + "-"+ object.length) - if(object.startsWith("@@")) + if(object["nai"].startsWith("@@")) { nai = nai * 32 + 16 b.writeUint32(nai) diff --git a/test/api.test.js b/test/api.test.js index 574a07bc..15e200d1 100644 --- a/test/api.test.js +++ b/test/api.test.js @@ -160,7 +160,7 @@ describe('steem.api:', function () { it('works by default', async function() { let attempts = 0; steemApi.setOptions({ - url: 'https://api.steemit.com', + //url: 'https://api.steemit.com', fetchMethod: (uri, req) => new Promise((res, rej) => { const data = JSON.parse(req.body); res({ @@ -182,7 +182,7 @@ describe('steem.api:', function () { it('does not retry by default', async() => { let attempts = 0; steemApi.setOptions({ - url: 'https://api.steemit.com', + //url: 'https://api.steemit.com', fetchMethod: (uri, req) => new Promise((res, rej) => { rej(new Error('Bad request')); attempts++; @@ -203,7 +203,7 @@ describe('steem.api:', function () { it('works with retry passed as a boolean', async() => { let attempts = 0; steemApi.setOptions({ - url: 'https://api.steemit.com', + //url: 'https://api.steemit.com', fetchMethod: (uri, req) => new Promise((res, rej) => { const data = JSON.parse(req.body); res({ @@ -226,7 +226,7 @@ describe('steem.api:', function () { it('retries with retry passed as a boolean', async() => { let attempts = 0; steemApi.setOptions({ - url: 'https://api.steemit.com', + //url: 'https://api.steemit.com', retry: true, fetchMethod: (uri, req) => new Promise((res, rej) => { if (attempts < 1) { @@ -260,7 +260,7 @@ describe('steem.api:', function () { it('works with retry passed as an object', async() => { steemApi.setOptions({ - url: 'https://api.steemit.com', + //url: 'https://api.steemit.com', retry: { retries: 3, minTimeout: 1, // 1ms @@ -285,7 +285,7 @@ describe('steem.api:', function () { it('retries with retry passed as an object', async() => { let attempts = 0; steemApi.setOptions({ - url: 'https://api.steemit.com', + //url: 'https://api.steemit.com', retry: { retries: 3, minTimeout: 1, diff --git a/test/smt.test.js b/test/smt.test.js index 3d3af321..45552af6 100644 --- a/test/smt.test.js +++ b/test/smt.test.js @@ -1,4 +1,4 @@ -import assert from "assert" +import assert from 'assert' import Promise from 'bluebird'; import should from 'should'; import steem from '../src'; @@ -13,11 +13,11 @@ describe('steem.smt:', () => { it('signs and verifies smt_create', function(done) { let tx = { 'operations': [[ - 'create_proposal', { - 'creator': username, - 'symbol': {'nai':'@@123456789','precision':'3'}, - 'smt_creation_fee': '10.000 STEEM', - 'precision': '3', + 'smt_create', { + 'control_account': username, + 'symbol': {'nai':'@@631672482','precision':3}, + 'smt_creation_fee': {'amount':'10000','precision':3,'nai':'@@000000013'}, + 'precision': 3, }]] } @@ -40,11 +40,11 @@ describe('steem.smt:', () => { 'operations': [[ 'smt_setup', { 'control_account' : username, - 'symbol' : {'nai':'@@123456789','precision':'3'}, - 'max_supply' : '1000000000000000', - 'initial_generation_policy' : { - 'type' : 'smt_capped_generation_policy', - 'value': { + 'symbol' : {'nai':'@@631672482','precision':3}, + 'max_supply' : 1000000000000000, + 'initial_generation_policy' : [[ + 'smt_capped_generation_policy', + { 'pre_soft_cap_unit' : { 'steem_unit' : [ ['$!alice.vesting',2], @@ -79,10 +79,11 @@ describe('steem.smt:', () => { 'max_unit_ratio' : 100, 'extensions':[] } - }, + ]], 'contribution_begin_time' : '2020-12-21T00:00:00', 'contribution_end_time' : '2021-12-21T00:00:00', 'launch_time' : '2021-12-22T00:00:00', + 'steem_units_min' : 0, 'steem_units_soft_cap' : 2000, 'steem_units_hard_cap' : 10000, 'extensions':[] @@ -107,8 +108,8 @@ describe('steem.smt:', () => { let tx = { 'operations': [[ 'smt_setup_emissions', { - 'control_account' : 'alice', - 'symbol' : {'nai':'@@123456789','precision':'3'}, + 'control_account' : username, + 'symbol' : {'nai':'@@631672482','precision':3}, 'schedule_time' : '2019-10-16T19:47:05', 'emissions_unit' : { 'token_unit' : [ @@ -121,8 +122,8 @@ describe('steem.smt:', () => { 'interval_count' : 1, 'lep_time' : '1970-01-01T00:00:00', 'rep_time' : '1970-01-01T00:00:00', - 'lep_abs_amount' : '0', - 'rep_abs_amount': '0', + 'lep_abs_amount' : 0, + 'rep_abs_amount': 0, 'lep_rel_amount_numerator' : 1, 'rep_rel_amount_numerator' : 0, 'rel_amount_denom_bits' : 0, @@ -150,8 +151,8 @@ describe('steem.smt:', () => { let tx = { 'operations': [[ 'smt_set_setup_parameters', { - 'control_account' : 'alice', - 'symbol' : {'nai':'@@123456789','precision':'3'}, + 'control_account' : username, + 'symbol' : {'nai':'@@631672482','precision':3}, 'setup_parameters' : [[ 'smt_param_allow_voting', { 'value':false @@ -178,8 +179,8 @@ describe('steem.smt:', () => { let tx = { 'operations': [[ 'smt_set_runtime_parameters', { - 'control_account' : 'alice', - 'symbol' : {'nai':'@@123456789','precision':'3'}, + 'control_account' : username, + 'symbol' : {'nai':'@@631672482','precision':3}, 'runtime_parameters' : [[ 'smt_param_vote_regeneration_period_seconds_v1', { 'vote_regeneration_period_seconds' : 604800, @@ -207,10 +208,10 @@ describe('steem.smt:', () => { let tx = { 'operations': [[ 'smt_contribute', { - 'contributor' : 'alice', - 'symbol' : {'nai':'@@123456789','precision':'3'}, + 'contributor' : username, + 'symbol' : {'nai':'@@631672482','precision':3}, 'contribution_id' : 1, - 'contribution': '1.000 STEEM', + 'contribution': {'amount':'1000','precision':3,'nai':'@@000000013'}, 'extensions':[] }]] } @@ -237,15 +238,17 @@ describe('steem.smt:', () => { let tx = { 'operations': [[ 'claim_rewards2', { - "account" : "alice", - "reward_tokens" : [ - {"amount":"1000","precision":3,"nai":"@@000000013"}, - {"amount":"1000","precision":3,"nai":"@@000000021"}, - {"amount":"1000000","precision":6,"nai":"@@000000037"}, - {"amount":"1","precision":1,"nai":"@@631672482"}, - {"amount":"1","precision":0,"nai":"@@642246725"}, - {"amount":"1","precision":1,"nai":"@@678264426"} - ]}]] + 'account' : username, + 'reward_tokens' : [ + {'amount':'1000','precision':3,'nai':'@@000000013'}, + {'amount':'1000','precision':3,'nai':'@@000000021'}, + {'amount':'1000000','precision':6,'nai':'@@000000037'}, + {'amount':'1','precision':1,'nai':'@@631672482'}, + {'amount':'1','precision':0,'nai':'@@642246725'}, + {'amount':'1','precision':1,'nai':'@@678264426'} + ], + 'extensions':[] + }]] } steem.api.callAsync('condenser_api.get_version', []).then((result) => { @@ -266,22 +269,22 @@ describe('steem.smt:', () => { let tx = { 'operations': [[ 'comment_options', { - "author" : username, - "permlink" : permlink, - "max_accepted_payout" : "1000000.000 STEEM", - "percent_steem_dollars" : 10000, - "allow_votes" : true, - "allow_curation_rewards" : true, - "extensions" : [[ - "allowed_vote_assets", { - "votable_assets":[[ - {'nai':'@@123456789','precision':'3'}, { - "max_accepted_payout" : 10, - "allow_curation_rewards" : true, - "beneficiaries" : { - "beneficiaries" : [ - { "account" : "alice", "weight" : 100 }, - { "account": "bob" , "weight" : 100 } + 'author' : username, + 'permlink' : permlink, + 'max_accepted_payout' : '1000000.000 TESTS', + 'percent_steem_dollars' : 10000, + 'allow_votes' : true, + 'allow_curation_rewards' : true, + 'extensions' : [[ + 'allowed_vote_assets', { + 'votable_assets':[[ + {'nai':'@@631672482','precision':3}, { + 'max_accepted_payout' : 10, + 'allow_curation_rewards' : true, + 'beneficiaries' : { + 'beneficiaries' : [ + { 'account' : 'alice', 'weight' : 100 }, + { 'account': 'bob' , 'weight' : 100 } ]}}]]}]]}]] } @@ -303,14 +306,14 @@ describe('steem.smt:', () => { let tx = { 'operations': [[ 'vote2', { - "voter" : username, - "author" : username, - "permlink" : permlink, - "rshares": [ - [{'nai':'@@123456789','precision':'3'},,"2000000000"], - [{'nai':'@@000000013','precision':'3'},"81502331182"] + 'voter' : username, + 'author' : username, + 'permlink' : permlink, + 'rshares': [ + [{'nai':'@@631672482','precision':3},2000000000], + [{'nai':'@@000000013','precision':3},81502331182] ], - "extensions":[] + 'extensions':[] }]] } From 7096f877bec65591fdd9e262c095eac9a363c968 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Thu, 24 Oct 2019 14:34:06 -0700 Subject: [PATCH 61/94] Finish smt op serialization #456 --- src/auth/serializer/src/operations.js | 7 +- src/auth/serializer/src/types.js | 127 +++++++++++++++++--------- test/smt.test.js | 70 +++++++++----- 3 files changed, 136 insertions(+), 68 deletions(-) diff --git a/src/auth/serializer/src/operations.js b/src/auth/serializer/src/operations.js index 0ae6ca05..47bc5f73 100644 --- a/src/auth/serializer/src/operations.js +++ b/src/auth/serializer/src/operations.js @@ -92,8 +92,7 @@ const smt_generation_unit = new Serializer( token_unit: map((string), (uint16)) }); -const smt_capped_generation_policy = new Serializer( - "smt_capped_generation_policy", { +const smt_capped_generation_policy = new Serializer(0, { pre_soft_cap_unit: smt_generation_unit, post_soft_cap_unit: smt_generation_unit, min_unit_ratio: uint32, @@ -746,9 +745,9 @@ let smt_setup = new Serializer( control_account: string, symbol: asset_symbol, max_supply: int64, - initial_generation_policy: set(static_variant([ + initial_generation_policy: static_variant([ smt_capped_generation_policy - ])), + ]), contribution_begin_time: time_point_sec, contribution_end_time: time_point_sec, launch_time: time_point_sec, diff --git a/src/auth/serializer/src/types.js b/src/auth/serializer/src/types.js index 51e2e777..bf7557c7 100644 --- a/src/auth/serializer/src/types.js +++ b/src/auth/serializer/src/types.js @@ -126,11 +126,28 @@ Types.asset = { let checksum = nai % 10 nai = Math.floor(nai / 10); let expected_checksum = damm_checksum_8digit(nai) - console.log(expected_checksum) //if(checksum != expected_checksum) // throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) + switch(object["nai"]) + { + case "@@000000021": + precision = 3 + //symbol = "STEEM" + symbol = "TESTS" + break + case "@@000000013": + precision = 3 + //symbol = "SBD" + symbol = "TBD" + break + case "@@000000037": + precision = 6 + symbol = "VESTS" + break + } + precision = parseInt(object["precision"]) b.writeInt64(v.to_long(parseInt(object["amount"]))) } @@ -166,7 +183,7 @@ Types.asset = { if(symbol.startsWith("@@")) { - nai = nai * 32 + 16 + precision + nai = (nai << 5) + 16 + precision b.writeUint32(nai) } else @@ -174,7 +191,7 @@ Types.asset = { b.writeUint8(precision) b.append(symbol.toUpperCase(), 'binary') for(let i = 0; i < 7 - symbol.length; i++) - b.writeUint8(0) + b.writeUint8(0) } return @@ -225,53 +242,81 @@ Types.asset_symbol = { appendByteBuffer(b, object){ let nai = 0 - if(object["nai"].startsWith("@@")) - { - // NAI Case - nai = parseInt(object["nai"].slice(2)) - let checksum = nai % 10 - nai = Math.floor(nai / 10); - let expected_checksum = damm_checksum_8digit(nai) + if(!object["nai"].startsWith("@@")) + throw new Error("Asset Symbols NAIs must be prefixed with '@@'. Was " + object["nai"]) + + nai = parseInt(object["nai"].slice(2)) + let checksum = nai % 10 + nai = Math.floor(nai / 10); + let expected_checksum = damm_checksum_8digit(nai) - //if(checksum != expected_checksum) - // throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) + //if(checksum != expected_checksum) + // throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) + + let precision = 0; + let symbol = ""; + switch(object["nai"]) + { + case "@@000000021": + precision = 3 + //symbol = "STEEM" + symbol = "TESTS" + break + case "@@000000013": + precision = 3 + //symbol = "SBD" + symbol = "TBD" + break + case "@@000000037": + precision = 6 + symbol = "VESTS" + break } - else if(object.length > 6) - throw new Error("Symbols are not longer than 6 characters " + object + "-"+ object.length) - if(object["nai"].startsWith("@@")) + if( precision > 0 ) { - nai = nai * 32 + 16 - b.writeUint32(nai) + //Core Symbol Case + b.writeUint8(precision) + b.append(symbol, 'binary') + for(let i = 0; i < 7 - symbol.length; i++) + b.writeUint8(0) } else { - let precision = 0; - let symbol = ""; - switch(object["nai"]) - { - case "@@000000021": - precision = 3 - //symbol = "STEEM" - symbol = "TESTS" - break - case "@@000000013": - precision = 3 - //symbol = "SBD" - symbol = "TBD" - break - case "@@000000037": - precision = 6 - symbol = "VESTS" - break - } - - b.writeUint8(precision) - b.append(symbol, 'binary') - for(let i = 0; i < 7 - symbol.length; i++) - b.writeUint8(0) + nai = (nai << 5) + 16 + object["precision"] + b.writeUint32(nai) } + //if(object["nai"].startsWith("@@")) + //{ + // nai = (nai << 5) + 16 + object["precision"] + // b.writeUint32(nai) + //} + //else + //{ + // let precision = 0; + // let symbol = ""; + // switch(object["nai"]) + // { + // case "@@000000021": + // precision = 3 + // //symbol = "STEEM" + // symbol = "TESTS" + // break + // case "@@000000013": + // precision = 3 + // //symbol = "SBD" + // symbol = "TBD" + // break + // case "@@000000037": + // precision = 6 + // symbol = "VESTS" + // break + // } +// +// + //} + return }, fromObject(object){ diff --git a/test/smt.test.js b/test/smt.test.js index 45552af6..eae24622 100644 --- a/test/smt.test.js +++ b/test/smt.test.js @@ -10,6 +10,31 @@ const activeWif = steem.auth.toWif(username, password, 'active'); describe('steem.smt:', () => { describe('smt creation ops', () => { + it('signs and verifies transfer', function(done) { + let tx = { + 'operations': [[ + 'transfer', { + 'from': username, + 'to': 'null', + 'amount': '10.000 TESTS', + 'memo': '' + }]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + it('signs and verifies smt_create', function(done) { let tx = { 'operations': [[ @@ -41,9 +66,9 @@ describe('steem.smt:', () => { 'smt_setup', { 'control_account' : username, 'symbol' : {'nai':'@@631672482','precision':3}, - 'max_supply' : 1000000000000000, - 'initial_generation_policy' : [[ - 'smt_capped_generation_policy', + 'max_supply' : '1000000000000000', + 'initial_generation_policy' : [ + 0, { 'pre_soft_cap_unit' : { 'steem_unit' : [ @@ -65,21 +90,20 @@ describe('steem.smt:', () => { ['$!alice.vesting',1], ['$market_maker',1], ['alice',1] - ], - 'token_unit' : [ - ['$!alice.vesting',1], - ['$from',1], - ['$from.vesting',1], - ['$market_maker',1], - ['$rewards',1], - ['alice',1] - ] - }, - 'min_unit_ratio' : 50, - 'max_unit_ratio' : 100, - 'extensions':[] - } - ]], + ], + 'token_unit' : [ + ['$!alice.vesting',1], + ['$from',1], + ['$from.vesting',1], + ['$market_maker',1], + ['$rewards',1], + ['alice',1] + ] + }, + 'min_unit_ratio' : 50, + 'max_unit_ratio' : 100, + 'extensions':[] + }], 'contribution_begin_time' : '2020-12-21T00:00:00', 'contribution_end_time' : '2021-12-21T00:00:00', 'launch_time' : '2021-12-22T00:00:00', @@ -154,7 +178,7 @@ describe('steem.smt:', () => { 'control_account' : username, 'symbol' : {'nai':'@@631672482','precision':3}, 'setup_parameters' : [[ - 'smt_param_allow_voting', { + 0, { 'value':false }]], 'extensions':[] @@ -182,7 +206,7 @@ describe('steem.smt:', () => { 'control_account' : username, 'symbol' : {'nai':'@@631672482','precision':3}, 'runtime_parameters' : [[ - 'smt_param_vote_regeneration_period_seconds_v1', { + 1, { 'vote_regeneration_period_seconds' : 604800, 'votes_per_regeneration_period' : 6999 }]], @@ -234,10 +258,10 @@ describe('steem.smt:', () => { describe('smt extended ops', () => { let permlink = 'test'; - it('signs and verifies claim_rewards2', function(done) { + it('signs and verifies claim_rewards_balance2', function(done) { let tx = { 'operations': [[ - 'claim_rewards2', { + 'claim_reward_balance2', { 'account' : username, 'reward_tokens' : [ {'amount':'1000','precision':3,'nai':'@@000000013'}, @@ -276,7 +300,7 @@ describe('steem.smt:', () => { 'allow_votes' : true, 'allow_curation_rewards' : true, 'extensions' : [[ - 'allowed_vote_assets', { + 1, { 'votable_assets':[[ {'nai':'@@631672482','precision':3}, { 'max_accepted_payout' : 10, From 910653aced32ec2f65d1cb01b7531b4f37d7ca3b Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Fri, 25 Oct 2019 11:16:06 -0700 Subject: [PATCH 62/94] Cleanup PR --- package-lock.json | 5962 ------------------------------ src/api/transports/http.js | 4 +- src/api/transports/ws.js | 4 +- src/auth/serializer/src/types.js | 30 - test/api.test.js | 12 +- test/smt.test.js | 25 - 6 files changed, 10 insertions(+), 6027 deletions(-) delete mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 1382ae3f..00000000 --- a/package-lock.json +++ /dev/null @@ -1,5962 +0,0 @@ -{ - "name": "@steemit/steem-js", - "version": "0.7.8", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@steemit/libcrypto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@steemit/libcrypto/-/libcrypto-1.0.1.tgz", - "integrity": "sha512-g2y4OrELuPGLLu3GjVaPbVvY/K+4oPGOrv9ec013o/ZB76R9UQ1ufYD9RM5tKxHXpFhzj2k0JgoKYWkdVheFVA==" - }, - "@steemit/rpc-auth": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@steemit/rpc-auth/-/rpc-auth-1.1.1.tgz", - "integrity": "sha512-Eb8BW3O1y4+/+Dbf+LqGVmgXYqyfHxP9mBlmzkpjXiIepTpxoK90NIGrneqcnEGq0TR2nSt4BVv9Ur9c+hxoig==", - "requires": { - "@steemit/libcrypto": "^1.0.1" - } - }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "array.prototype.find": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.0.tgz", - "integrity": "sha512-Wn41+K1yuO5p7wRZDl7890c3xvv5UBrfVXTVIe28rSQb6LS0fZMDrQB6PAcxQFRFy6vJTLDc3A2+3CjQdzVKRg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.13.0" - } - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "babel-cli": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", - "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-polyfill": "^6.26.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "chokidar": "^1.6.1", - "commander": "^2.11.0", - "convert-source-map": "^1.5.0", - "fs-readdir-recursive": "^1.0.0", - "glob": "^7.1.2", - "lodash": "^4.17.4", - "output-file-sync": "^1.1.2", - "path-is-absolute": "^1.0.1", - "slash": "^1.0.0", - "source-map": "^0.5.6", - "v8flags": "^2.1.1" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - } - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - } - } - }, - "babel-eslint": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", - "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", - "dev": true, - "requires": { - "babel-code-frame": "^6.22.0", - "babel-traverse": "^6.23.1", - "babel-types": "^6.23.0", - "babylon": "^6.17.0" - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - } - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-loader": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz", - "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=", - "dev": true, - "requires": { - "find-cache-dir": "^0.1.1", - "loader-utils": "^0.2.16", - "mkdirp": "^0.5.1", - "object-assign": "^4.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "requires": { - "regenerator-transform": "^0.10.0" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-polyfill": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - } - } - }, - "babel-preset-env": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", - "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^3.2.6", - "invariant": "^2.2.2", - "semver": "^5.3.0" - } - }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.24.1", - "babel-plugin-transform-es2015-classes": "^6.24.1", - "babel-plugin-transform-es2015-computed-properties": "^6.24.1", - "babel-plugin-transform-es2015-destructuring": "^6.22.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", - "babel-plugin-transform-es2015-for-of": "^6.22.0", - "babel-plugin-transform-es2015-function-name": "^6.24.1", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-umd": "^6.24.1", - "babel-plugin-transform-es2015-object-super": "^6.24.1", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", - "babel-plugin-transform-regenerator": "^6.24.1" - } - }, - "babel-preset-es2017": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz", - "integrity": "sha1-WXvq37n38gi8/YoS6bKym4svFNE=", - "dev": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.24.1" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "dev": true, - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "base-x": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.7.tgz", - "integrity": "sha512-zAKJGuQPihXW22fkrfOclUUZXM2g92z5GzlSMHxhO6r6Qj+Nm0ccaGNBzDZojzwOMkpjAv4J0fOv1U4go+a4iw==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base62": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/base62/-/base62-1.2.8.tgz", - "integrity": "sha512-V6YHUbjLxN1ymqNLb1DPHoU1CpfdL7d2YTIp5W3U4hhoG4hhxNmsFDs66M9EXxBiSEke5Bt5dwdfMwwZF70iLA==", - "dev": true - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "bigi": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/bigi/-/bigi-1.4.2.tgz", - "integrity": "sha1-nGZalfiLiwj8Bc/XMfVhhZ1yWCU=" - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "bluebird": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", - "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true, - "requires": { - "pako": "~0.2.0" - } - }, - "browserslist": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", - "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", - "requires": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" - } - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "requires": { - "base-x": "^3.0.2" - } - }, - "buffer": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz", - "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", - "requires": { - "long": "~3" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30000999", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000999.tgz", - "integrity": "sha512-1CUyKyecPeksKwXZvYw0tEoaMCo/RwBlXmEtN5vVnabvO0KPd9RQLcaAuR9/1F+KDMv6esmOFWlsXuzDk+8rxg==" - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "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 - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "commoner": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", - "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", - "dev": true, - "requires": { - "commander": "^2.5.0", - "detective": "^4.3.1", - "glob": "^5.0.15", - "graceful-fs": "^4.1.2", - "iconv-lite": "^0.4.5", - "mkdirp": "^0.5.0", - "private": "^0.1.6", - "q": "^1.1.2", - "recast": "^0.11.17" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "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==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-env": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", - "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", - "requires": { - "cross-spawn": "^6.0.5" - } - }, - "cross-fetch": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-1.1.1.tgz", - "integrity": "sha512-+VJE04+UfxxmBfcnmAu/lKor53RUCx/1ilOti4p+JgrnLQ4AZZIRoe2OEd76VaHyWQmQxqKnV+TaqjHC4r0HWw==", - "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "2.0.3" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.3.0.tgz", - "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=", - "dev": true, - "requires": { - "browserify-aes": "0.4.0", - "pbkdf2-compat": "2.0.1", - "ripemd160": "0.2.0", - "sha.js": "2.2.6" - }, - "dependencies": { - "browserify-aes": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-0.4.0.tgz", - "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=", - "dev": true, - "requires": { - "inherits": "^2.0.1" - } - }, - "ripemd160": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", - "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84=", - "dev": true - }, - "sha.js": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", - "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo=", - "dev": true - } - } - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "d3": { - "version": "3.5.17", - "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", - "integrity": "sha1-vEZ0gAQ3iyGjYMn8fPUjF5B2L7g=", - "dev": true - }, - "damerau-levenshtein": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", - "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "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=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" - }, - "detective": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", - "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", - "dev": true, - "requires": { - "acorn": "^5.2.1", - "defined": "^1.0.0" - } - }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "ecurve": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/ecurve/-/ecurve-1.0.6.tgz", - "integrity": "sha512-/BzEjNfiSuB7jIWKcS/z8FK9jNjmEWvUV2YZ4RLSmcDtP7Lq0m6FvDuSnJpBlDpGRpfRQeTLGLBI8H+kEv0r+w==", - "requires": { - "bigi": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "electron-to-chromium": { - "version": "1.3.282", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.282.tgz", - "integrity": "sha512-irSaDeCGgfMu1OA30bhqIBr+dx+pDJjRbwCpob7YWqVZbzXblybNzPGklVnWqv4EXxbkEAzQYqiNCqNTgu00lQ==" - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "~0.4.13" - } - }, - "enhanced-resolve": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", - "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.2.0", - "tapable": "^0.1.8" - }, - "dependencies": { - "memory-fs": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", - "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", - "dev": true - } - } - }, - "envify": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.1.tgz", - "integrity": "sha1-1xIjKejfFoi6dxsSUBkXyc5cvOg=", - "dev": true, - "requires": { - "jstransform": "^11.0.3", - "through": "~2.3.4" - } - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "es-abstract": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", - "integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.0", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-inspect": "^1.6.0", - "object-keys": "^1.1.1", - "string.prototype.trimleft": "^2.1.0", - "string.prototype.trimright": "^2.1.0" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.51", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.51.tgz", - "integrity": "sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - }, - "dependencies": { - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - } - } - }, - "es6-symbol": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.2.tgz", - "integrity": "sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ==", - "dev": true, - "requires": { - "d": "^1.0.1", - "es5-ext": "^0.10.51" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true, - "requires": { - "babel-code-frame": "^6.16.0", - "chalk": "^1.1.3", - "concat-stream": "^1.5.2", - "debug": "^2.1.1", - "doctrine": "^2.0.0", - "escope": "^3.6.0", - "espree": "^3.4.0", - "esquery": "^1.0.0", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "glob": "^7.0.3", - "globals": "^9.14.0", - "ignore": "^3.2.0", - "imurmurhash": "^0.1.4", - "inquirer": "^0.12.0", - "is-my-json-valid": "^2.10.0", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.5.1", - "json-stable-stringify": "^1.0.0", - "levn": "^0.3.0", - "lodash": "^4.0.0", - "mkdirp": "^0.5.0", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.1", - "pluralize": "^1.2.1", - "progress": "^1.1.8", - "require-uncached": "^1.0.2", - "shelljs": "^0.7.5", - "strip-bom": "^3.0.0", - "strip-json-comments": "~2.0.1", - "table": "^3.7.8", - "text-table": "~0.2.0", - "user-home": "^2.0.0" - }, - "dependencies": { - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0" - } - } - } - }, - "eslint-import-resolver-node": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", - "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", - "dev": true, - "requires": { - "debug": "^2.2.0", - "object-assign": "^4.0.1", - "resolve": "^1.1.6" - } - }, - "eslint-plugin-import": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-1.16.0.tgz", - "integrity": "sha1-svoH68xTUE0PKkR3WC7Iv/GHG58=", - "dev": true, - "requires": { - "builtin-modules": "^1.1.1", - "contains-path": "^0.1.0", - "debug": "^2.2.0", - "doctrine": "1.3.x", - "es6-map": "^0.1.3", - "es6-set": "^0.1.4", - "eslint-import-resolver-node": "^0.2.0", - "has": "^1.0.1", - "lodash.cond": "^4.3.0", - "lodash.endswith": "^4.0.1", - "lodash.find": "^4.3.0", - "lodash.findindex": "^4.3.0", - "minimatch": "^3.0.3", - "object-assign": "^4.0.1", - "pkg-dir": "^1.0.0", - "pkg-up": "^1.0.0" - }, - "dependencies": { - "doctrine": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.3.0.tgz", - "integrity": "sha1-E+dWgrVVGEJCdvfBc3g0Vu+RPSY=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-2.2.3.tgz", - "integrity": "sha1-TjXLcbin23AqxBXIBuuOjZ6mxl0=", - "dev": true, - "requires": { - "damerau-levenshtein": "^1.0.0", - "jsx-ast-utils": "^1.0.0", - "object-assign": "^4.0.1" - } - }, - "eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", - "dev": true, - "requires": { - "array.prototype.find": "^2.0.1", - "doctrine": "^1.2.2", - "has": "^1.0.1", - "jsx-ast-utils": "^1.3.4", - "object.assign": "^4.0.4" - }, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - } - } - }, - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fbjs": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.6.1.tgz", - "integrity": "sha1-lja3cF9bqWhNRLcveDISVK/IYPc=", - "dev": true, - "requires": { - "core-js": "^1.0.0", - "loose-envify": "^1.0.0", - "promise": "^7.0.3", - "ua-parser-js": "^0.7.9", - "whatwg-fetch": "^0.9.0" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", - "dev": true - }, - "whatwg-fetch": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", - "integrity": "sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA=", - "dev": true - } - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", - "dev": true, - "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "formatio": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", - "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", - "dev": true, - "requires": { - "samsam": "~1.1" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": 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.3", - "bundled": true, - "dev": true, - "optional": 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, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": 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, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": 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, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": 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.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": 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, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": 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, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "dev": true, - "requires": { - "is-property": "^1.0.2" - } - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "^1.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": 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" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - }, - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", - "through": "^2.3.6" - } - }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "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" - } - }, - "is-generator-function": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", - "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", - "dev": true - }, - "is-my-json-valid": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz", - "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==", - "dev": true, - "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "jstransform": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-11.0.3.tgz", - "integrity": "sha1-CaeJk+CuTU70SH9hVakfYZDLQiM=", - "dev": true, - "requires": { - "base62": "^1.1.0", - "commoner": "^0.10.1", - "esprima-fb": "^15001.1.0-dev-harmony-fb", - "object-assign": "^2.0.0", - "source-map": "^0.4.2" - }, - "dependencies": { - "esprima-fb": { - "version": "15001.1.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", - "integrity": "sha1-MKlHMDxrjV6VW+4rmbHSMyBqaQE=", - "dev": true - }, - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", - "dev": true - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "^3.0.0", - "lodash.keys": "^3.0.0" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", - "dev": true - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", - "dev": true - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "^3.0.0", - "lodash._basecreate": "^3.0.0", - "lodash._isiterateecall": "^3.0.0" - } - }, - "lodash.endswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", - "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=", - "dev": true - }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=", - "dev": true - }, - "lodash.findindex": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.findindex/-/lodash.findindex-4.6.0.tgz", - "integrity": "sha1-oyRd7mH7m24GJLU1ElYku2nBEQY=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", - "dev": true - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true, - "requires": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "lolex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", - "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", - "dev": true - }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "dev": true - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "memory-fs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", - "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "mocha-make-stub": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/mocha-make-stub/-/mocha-make-stub-2.3.2.tgz", - "integrity": "sha1-/EAS7PgHbL5lMXaMaaoKdmBoRUE=", - "dev": true, - "requires": { - "sinon": "1.*" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, - "node-libs-browser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.7.0.tgz", - "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.1.4", - "buffer": "^4.9.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "3.3.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "0.0.1", - "os-browserify": "^0.2.0", - "path-browserify": "0.0.0", - "process": "^0.11.0", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.0.5", - "stream-browserify": "^2.0.1", - "stream-http": "^2.3.1", - "string_decoder": "^0.10.25", - "timers-browserify": "^2.0.2", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - } - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "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 - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.entries": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", - "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "output-file-sync": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", - "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.4", - "mkdirp": "^0.5.1", - "object-assign": "^4.1.0" - } - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - } - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "pbkdf2-compat": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", - "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - }, - "pkg-up": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "~2.0.3" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "dev": true, - "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "react": { - "version": "0.14.9", - "resolved": "https://registry.npmjs.org/react/-/react-0.14.9.tgz", - "integrity": "sha1-kRCmSXxJ1EuhwO3TF67CnC4NkdE=", - "dev": true, - "requires": { - "envify": "^3.0.0", - "fbjs": "^0.6.1" - } - }, - "react-dom": { - "version": "0.14.9", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.9.tgz", - "integrity": "sha1-BQZKPc8PsYgKOyv8nVjFXY2fYpM=", - "dev": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": 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" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "mute-stream": "0.0.5" - } - }, - "recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", - "dev": true, - "requires": { - "ast-types": "0.9.6", - "esprima": "~3.1.0", - "private": "~0.1.5", - "source-map": "~0.5.0" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", - "requires": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" - } - }, - "regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "dev": true, - "requires": { - "is-equal-shallow": "^0.1.3" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } - }, - "resolve": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", - "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, - "requires": { - "once": "^1.3.0" - } - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "samsam": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", - "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", - "dev": true - }, - "secure-random": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/secure-random/-/secure-random-1.1.2.tgz", - "integrity": "sha512-H2bdSKERKdBV1SwoqYm6C0y+9EA94v6SUBOWO8kDndc4NoUih7Dv6Tsgma7zO1lv27wIvjlD0ZpMQk7um5dheQ==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "should": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/should/-/should-11.2.1.tgz", - "integrity": "sha1-kPVRRVUtAc/CAGZuToGKHJZw7aI=", - "dev": true, - "requires": { - "should-equal": "^1.0.0", - "should-format": "^3.0.2", - "should-type": "^1.4.0", - "should-type-adaptors": "^1.0.1", - "should-util": "^1.0.0" - } - }, - "should-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-1.0.1.tgz", - "integrity": "sha1-C26VFvJgGp+wuy3MNpr6HH4gCvc=", - "dev": true, - "requires": { - "should-type": "^1.0.0" - } - }, - "should-format": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", - "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", - "dev": true, - "requires": { - "should-type": "^1.3.0", - "should-type-adaptors": "^1.0.1" - } - }, - "should-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", - "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=", - "dev": true - }, - "should-type-adaptors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", - "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", - "dev": true, - "requires": { - "should-type": "^1.3.0", - "should-util": "^1.0.0" - } - }, - "should-util": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", - "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", - "dev": true - }, - "sinon": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.17.7.tgz", - "integrity": "sha1-RUKk9JugxFwF6y6d2dID4rjv4L8=", - "dev": true, - "requires": { - "formatio": "1.1.1", - "lolex": "1.3.2", - "samsam": "1.1.2", - "util": ">=0.10.3 <1" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - } - }, - "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "string-width": { - "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", - "strip-ansi": "^3.0.0" - } - }, - "string.prototype.trimleft": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", - "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", - "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "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 - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, - "requires": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "tapable": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", - "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - } - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.20", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", - "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==", - "dev": true - }, - "uglify-js": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", - "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=", - "dev": true, - "requires": { - "async": "~0.2.6", - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - }, - "util": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.1.tgz", - "integrity": "sha512-MREAtYOp+GTt9/+kwf00IYoHZyjM8VU4aVrkzUlejyqaIjd2GztVl5V9hGXKlvBKE3gENn/FMfHE5v6hElXGcQ==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "object.entries": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true, - "requires": { - "user-home": "^1.1.1" - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.9.tgz", - "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=", - "dev": true, - "requires": { - "async": "^0.9.0", - "chokidar": "^1.0.0", - "graceful-fs": "^4.1.2" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - } - } - }, - "webpack": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.15.0.tgz", - "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=", - "dev": true, - "requires": { - "acorn": "^3.0.0", - "async": "^1.3.0", - "clone": "^1.0.2", - "enhanced-resolve": "~0.9.0", - "interpret": "^0.6.4", - "loader-utils": "^0.2.11", - "memory-fs": "~0.3.0", - "mkdirp": "~0.5.0", - "node-libs-browser": "^0.7.0", - "optimist": "~0.6.0", - "supports-color": "^3.1.0", - "tapable": "~0.1.8", - "uglify-js": "~2.7.3", - "watchpack": "^0.2.1", - "webpack-core": "~0.6.9" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - }, - "interpret": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", - "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "webpack-core": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", - "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", - "dev": true, - "requires": { - "source-list-map": "~0.1.7", - "source-map": "~0.4.1" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "webpack-visualizer-plugin": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/webpack-visualizer-plugin/-/webpack-visualizer-plugin-0.1.11.tgz", - "integrity": "sha1-uHcK2GtPZSYSxosbeCJT+vn4o04=", - "dev": true, - "requires": { - "d3": "^3.5.6", - "mkdirp": "^0.5.1", - "react": "^0.14.0", - "react-dom": "^0.14.0" - } - }, - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } -} diff --git a/src/api/transports/http.js b/src/api/transports/http.js index 45dab7dd..4853daa9 100644 --- a/src/api/transports/http.js +++ b/src/api/transports/http.js @@ -53,9 +53,9 @@ export function jsonRpc(uri, {method, id, params, fetchMethod=fetch}) { export default class HttpTransport extends Transport { send(api, data, callback) { - //if (this.options.useAppbaseApi) { + if (this.options.useAppbaseApi) { api = 'condenser_api'; - //} + } debug('Steem::send', api, data); const id = data.id || this.id++; const params = [api, data.method, data.params]; diff --git a/src/api/transports/ws.js b/src/api/transports/ws.js index 7ee91cb7..1475a941 100644 --- a/src/api/transports/ws.js +++ b/src/api/transports/ws.js @@ -76,9 +76,9 @@ export default class WsTransport extends Transport { } }); - //if (this.options.useAppbaseApi) { + if (this.options.useAppbaseApi) { api = 'condenser_api'; - //} + } const _request = { deferral, diff --git a/src/auth/serializer/src/types.js b/src/auth/serializer/src/types.js index bf7557c7..95831e25 100644 --- a/src/auth/serializer/src/types.js +++ b/src/auth/serializer/src/types.js @@ -287,36 +287,6 @@ Types.asset_symbol = { b.writeUint32(nai) } - //if(object["nai"].startsWith("@@")) - //{ - // nai = (nai << 5) + 16 + object["precision"] - // b.writeUint32(nai) - //} - //else - //{ - // let precision = 0; - // let symbol = ""; - // switch(object["nai"]) - // { - // case "@@000000021": - // precision = 3 - // //symbol = "STEEM" - // symbol = "TESTS" - // break - // case "@@000000013": - // precision = 3 - // //symbol = "SBD" - // symbol = "TBD" - // break - // case "@@000000037": - // precision = 6 - // symbol = "VESTS" - // break - // } -// -// - //} - return }, fromObject(object){ diff --git a/test/api.test.js b/test/api.test.js index 15e200d1..574a07bc 100644 --- a/test/api.test.js +++ b/test/api.test.js @@ -160,7 +160,7 @@ describe('steem.api:', function () { it('works by default', async function() { let attempts = 0; steemApi.setOptions({ - //url: 'https://api.steemit.com', + url: 'https://api.steemit.com', fetchMethod: (uri, req) => new Promise((res, rej) => { const data = JSON.parse(req.body); res({ @@ -182,7 +182,7 @@ describe('steem.api:', function () { it('does not retry by default', async() => { let attempts = 0; steemApi.setOptions({ - //url: 'https://api.steemit.com', + url: 'https://api.steemit.com', fetchMethod: (uri, req) => new Promise((res, rej) => { rej(new Error('Bad request')); attempts++; @@ -203,7 +203,7 @@ describe('steem.api:', function () { it('works with retry passed as a boolean', async() => { let attempts = 0; steemApi.setOptions({ - //url: 'https://api.steemit.com', + url: 'https://api.steemit.com', fetchMethod: (uri, req) => new Promise((res, rej) => { const data = JSON.parse(req.body); res({ @@ -226,7 +226,7 @@ describe('steem.api:', function () { it('retries with retry passed as a boolean', async() => { let attempts = 0; steemApi.setOptions({ - //url: 'https://api.steemit.com', + url: 'https://api.steemit.com', retry: true, fetchMethod: (uri, req) => new Promise((res, rej) => { if (attempts < 1) { @@ -260,7 +260,7 @@ describe('steem.api:', function () { it('works with retry passed as an object', async() => { steemApi.setOptions({ - //url: 'https://api.steemit.com', + url: 'https://api.steemit.com', retry: { retries: 3, minTimeout: 1, // 1ms @@ -285,7 +285,7 @@ describe('steem.api:', function () { it('retries with retry passed as an object', async() => { let attempts = 0; steemApi.setOptions({ - //url: 'https://api.steemit.com', + url: 'https://api.steemit.com', retry: { retries: 3, minTimeout: 1, diff --git a/test/smt.test.js b/test/smt.test.js index eae24622..adfd13ed 100644 --- a/test/smt.test.js +++ b/test/smt.test.js @@ -10,31 +10,6 @@ const activeWif = steem.auth.toWif(username, password, 'active'); describe('steem.smt:', () => { describe('smt creation ops', () => { - it('signs and verifies transfer', function(done) { - let tx = { - 'operations': [[ - 'transfer', { - 'from': username, - 'to': 'null', - 'amount': '10.000 TESTS', - 'memo': '' - }]] - } - - steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ - result.should.have.property('blockchain_version'); - - steem.broadcast._prepareTransaction(tx).then(function(tx){ - tx = steem.auth.signTransaction(tx, [activeWif]); - steem.api.verifyAuthorityAsync(tx).then( - (result) => {result.should.equal(true); done();}, - (err) => {done(err);} - ); - }); - }); - }) - it('signs and verifies smt_create', function(done) { let tx = { 'operations': [[ From 0b8171c3e82e607a9319cbb9501dec8f158b98e6 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Fri, 25 Oct 2019 11:29:53 -0700 Subject: [PATCH 63/94] Set asset symbol serialization for MainNet symbols --- src/auth/serializer/src/types.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/auth/serializer/src/types.js b/src/auth/serializer/src/types.js index 95831e25..fba64a41 100644 --- a/src/auth/serializer/src/types.js +++ b/src/auth/serializer/src/types.js @@ -134,13 +134,13 @@ Types.asset = { { case "@@000000021": precision = 3 - //symbol = "STEEM" - symbol = "TESTS" + symbol = "STEEM" + //symbol = "TESTS" break case "@@000000013": precision = 3 - //symbol = "SBD" - symbol = "TBD" + symbol = "SBD" + //symbol = "TBD" break case "@@000000037": precision = 6 @@ -259,13 +259,13 @@ Types.asset_symbol = { { case "@@000000021": precision = 3 - //symbol = "STEEM" - symbol = "TESTS" + symbol = "STEEM" + //symbol = "TESTS" break case "@@000000013": precision = 3 - //symbol = "SBD" - symbol = "TBD" + symbol = "SBD" + //symbol = "TBD" break case "@@000000037": precision = 6 From 44e3683782a3ca49441b2ccfad465a60a887d39e Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Fri, 25 Oct 2019 12:01:05 -0700 Subject: [PATCH 64/94] Extend for MainNet/TestNet cross compatability #456 --- src/auth/serializer/src/types.js | 14 +++++--------- test/broadcast.test.js | 4 ++-- test/hf20-accounts.test.js | 4 ++-- test/hf21-sps.test.js | 2 +- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/auth/serializer/src/types.js b/src/auth/serializer/src/types.js index fba64a41..448694f8 100644 --- a/src/auth/serializer/src/types.js +++ b/src/auth/serializer/src/types.js @@ -11,7 +11,7 @@ const chain_types = require('./ChainTypes') import { PublicKey, Address, ecc_config } from "../../ecc" import { fromImpliedDecimal } from "./number_utils" -const Types = {} +const Types = { useTestNet:false } module.exports = Types const HEX_DUMP = process.env.npm_config__graphene_serializer_hex_dump @@ -134,13 +134,11 @@ Types.asset = { { case "@@000000021": precision = 3 - symbol = "STEEM" - //symbol = "TESTS" + symbol = this.useTestNet ? "TESTS" : "STEEM" break case "@@000000013": precision = 3 - symbol = "SBD" - //symbol = "TBD" + symbol = this.useTestNet ? "TBD" : "SBD" break case "@@000000037": precision = 6 @@ -259,13 +257,11 @@ Types.asset_symbol = { { case "@@000000021": precision = 3 - symbol = "STEEM" - //symbol = "TESTS" + symbol = this.useTestNet ? "TESTS" : "STEEM" break case "@@000000013": precision = 3 - symbol = "SBD" - //symbol = "TBD" + symbol = this.useTestNet ? "TBD" : "SBD" break case "@@000000037": precision = 6 diff --git a/test/broadcast.test.js b/test/broadcast.test.js index abecac65..ebf4dc2e 100644 --- a/test/broadcast.test.js +++ b/test/broadcast.test.js @@ -73,7 +73,7 @@ describe('steem.broadcast:', () => { operations: [[ 'account_create', { - fee: '0.000 TESTS', + fee: '0.000 STEEM', creator: username, new_account_name: newAccountName, owner: { @@ -210,7 +210,7 @@ describe('steem.broadcast:', () => { ]); }); }); - + describe('writeOperations', () => { it('receives a properly formatted error response', () => { const wif = steem.auth.toWif('username', 'password', 'posting'); diff --git a/test/hf20-accounts.test.js b/test/hf20-accounts.test.js index 7a09baad..cb0960b3 100644 --- a/test/hf20-accounts.test.js +++ b/test/hf20-accounts.test.js @@ -25,7 +25,7 @@ describe('steem.hf20-accounts:', () => { 'operations': [[ 'claim_account', { 'creator': username, - 'fee': '0.000 TESTS'}]] + 'fee': '0.000 STEEM'}]] } steem.api.callAsync('condenser_api.get_version', []).then((result) => { @@ -48,7 +48,7 @@ describe('steem.hf20-accounts:', () => { steem.api.callAsync('condenser_api.get_version', []).then((result) => { if(result['blockchain_version'] < '0.22.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ - steem.broadcast.claimAccountAsync(activeWif, username, '0.000 TESTS', []).then((result) => { + steem.broadcast.claimAccountAsync(activeWif, username, '0.000 STEEM', []).then((result) => { let newAccountName = username + '-' + Math.floor(Math.random() * 10000); let keys = steem.auth.generateKeys( username, password, ['posting', 'active', 'owner', 'memo']); diff --git a/test/hf21-sps.test.js b/test/hf21-sps.test.js index fdbddb41..cc59e665 100644 --- a/test/hf21-sps.test.js +++ b/test/hf21-sps.test.js @@ -31,7 +31,7 @@ describe('steem.hf21-accounts:', () => { 'receiver': username, 'start_date': '2019-09-01T00:00:00', 'end_date': '2019-10-01T00:00:00', - 'daily_pay': '1.000 TBD', + 'daily_pay': '1.000 SBD', 'subject': 'testing', 'permlink': permlink }]] From 315ddf0da88c316ea14818988b8d5ed52b506eee Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Mon, 28 Oct 2019 09:23:18 -0700 Subject: [PATCH 65/94] Disable incorrect tests and update readme #456 --- README.md | 19 +++++++++++++++++++ test/hf20-accounts.test.js | 8 +++++--- test/hf21-sps.test.js | 7 +++++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a79fe785..55db2937 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,25 @@ var reputation = steem.formatter.reputation(user.reputation); console.log(reputation); ``` +### Steem Testnet +Steem-js requires some configuration to work on the public Steem testnet. + +You need to set two Steem API options, `address_prefix` and `chain_id`. +```js +steem.api.setOptions({ + address_prefix: 'TST', + chain_id: '46d82ab7d8db682eb1959aed0ada039a6d49afa1602491f93dde9cac3e8e6c32', +}); +``` + +The Chain ID could change. If it does, it may not be reflected here, but will be documented on any testnet launch announcements. + +Furthermore, you need to change asset serializations for the testnet. + +```js +Types.useTestNet = true +``` + ## Contributions Patches are welcome! Contributors are listed in the package.json file. Please run the tests before opening a pull request and make sure that you are passing all of them. If you would like to contribute, but don't know what to work on, check the issues list or on Steemit Chat channel #steemjs https://steemit.chat/channel/steemjs. diff --git a/test/hf20-accounts.test.js b/test/hf20-accounts.test.js index cb0960b3..4a66acad 100644 --- a/test/hf20-accounts.test.js +++ b/test/hf20-accounts.test.js @@ -20,6 +20,8 @@ describe('steem.hf20-accounts:', () => { describe('claimAccount', () => { +/* Skip these tests. Steem-js test infrastructure not set up for testing active auths + Blocked by Steem issue #3546 it('signs and verifies auth', function(done) { let tx = { 'operations': [[ @@ -29,7 +31,7 @@ describe('steem.hf20-accounts:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.22.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.22.0') return done(); steem.broadcast._prepareTransaction(tx).then(function(tx){ tx = steem.auth.signTransaction(tx, [activeWif]); @@ -46,7 +48,7 @@ describe('steem.hf20-accounts:', () => { this.skip(); // (!) need test account with enough RC steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.22.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.22.0') return done(); steem.broadcast.claimAccountAsync(activeWif, username, '0.000 STEEM', []).then((result) => { let newAccountName = username + '-' + Math.floor(Math.random() * 10000); @@ -69,6 +71,6 @@ describe('steem.hf20-accounts:', () => { }, (err) => {done(err)}); }); }); - +*/ }); }); diff --git a/test/hf21-sps.test.js b/test/hf21-sps.test.js index cc59e665..500414a7 100644 --- a/test/hf21-sps.test.js +++ b/test/hf21-sps.test.js @@ -21,6 +21,8 @@ describe('steem.hf21-accounts:', () => { }); describe('create proposal ops', () => { +/* Skip these tests. Steem-js test infrastructure not set up for testing active auths + Blocked by Steem issue #3546 it('signs and verifies create_proposal', function(done) { let permlink = 'test'; @@ -38,7 +40,7 @@ describe('steem.hf21-accounts:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.22.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.22.0') return done(); result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ @@ -61,7 +63,7 @@ describe('steem.hf21-accounts:', () => { }]] } - return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + return done(); steem.broadcast._prepareTransaction(tx).then(function(tx){ tx = steem.auth.signTransaction(tx, [activeWif]); @@ -72,4 +74,5 @@ describe('steem.hf21-accounts:', () => { }); }) }); +*/ }); From 5109b51814357fe2582f05f6b0f64c45b031679b Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Mon, 28 Oct 2019 09:44:52 -0700 Subject: [PATCH 66/94] Fix build --- test/hf21-sps.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/hf21-sps.test.js b/test/hf21-sps.test.js index 500414a7..bb628ab3 100644 --- a/test/hf21-sps.test.js +++ b/test/hf21-sps.test.js @@ -73,6 +73,6 @@ describe('steem.hf21-accounts:', () => { ); }); }) - }); */ + }); }); From e9827396d0f3c431e76a15a4f93b52e0006f9773 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Tue, 29 Oct 2019 16:08:04 -0700 Subject: [PATCH 67/94] Updates to SMT op serialization (#463) * Fix useTestNet Option * Bump package version * Do not set testnet in SMT test --- README.md | 7 +------ package.json | 2 +- src/api/index.js | 4 ++++ src/auth/serializer/src/types.js | 11 ++++++----- test/smt.test.js | 3 +++ 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 55db2937..bdc04e28 100644 --- a/README.md +++ b/README.md @@ -100,17 +100,12 @@ You need to set two Steem API options, `address_prefix` and `chain_id`. steem.api.setOptions({ address_prefix: 'TST', chain_id: '46d82ab7d8db682eb1959aed0ada039a6d49afa1602491f93dde9cac3e8e6c32', + useTestNet: true, }); ``` The Chain ID could change. If it does, it may not be reflected here, but will be documented on any testnet launch announcements. -Furthermore, you need to change asset serializations for the testnet. - -```js -Types.useTestNet = true -``` - ## Contributions Patches are welcome! Contributors are listed in the package.json file. Please run the tests before opening a pull request and make sure that you are passing all of them. If you would like to contribute, but don't know what to work on, check the issues list or on Steemit Chat channel #steemjs https://steemit.chat/channel/steemjs. diff --git a/package.json b/package.json index 09648560..15b75398 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@steemit/steem-js", - "version": "0.7.8", + "version": "0.7.9", "description": "Steem.js the JavaScript API for Steem blockchain", "main": "lib/index.js", "scripts": { diff --git a/src/api/index.js b/src/api/index.js index 54e3e4ae..1a39f299 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -181,6 +181,10 @@ class Steem extends EventEmitter { this._setLogger(options); this._setTransport(options); this.transport.setOptions(options); + if( options.hasOwnProperty('useTestNet') ) + { + config.set( 'address_prefix', options.useTestNet ? 'TST' : 'STM' ) + } } setWebSocket(url) { diff --git a/src/auth/serializer/src/types.js b/src/auth/serializer/src/types.js index 448694f8..629940cc 100644 --- a/src/auth/serializer/src/types.js +++ b/src/auth/serializer/src/types.js @@ -10,8 +10,9 @@ const chain_types = require('./ChainTypes') import { PublicKey, Address, ecc_config } from "../../ecc" import { fromImpliedDecimal } from "./number_utils" +import Config from "../../../config.js" -const Types = { useTestNet:false } +const Types = {} module.exports = Types const HEX_DUMP = process.env.npm_config__graphene_serializer_hex_dump @@ -134,11 +135,11 @@ Types.asset = { { case "@@000000021": precision = 3 - symbol = this.useTestNet ? "TESTS" : "STEEM" + symbol = Config.get( "address_prefix" ) == "STM" ? "STEEM" : "TESTS" break case "@@000000013": precision = 3 - symbol = this.useTestNet ? "TBD" : "SBD" + symbol = Config.get( "address_prefix" ) == "STM" ? "SBD" : "TBD" break case "@@000000037": precision = 6 @@ -257,11 +258,11 @@ Types.asset_symbol = { { case "@@000000021": precision = 3 - symbol = this.useTestNet ? "TESTS" : "STEEM" + symbol = Config.get( "address_prefix" ) == "STM" ? "STEEM" : "TESTS" break case "@@000000013": precision = 3 - symbol = this.useTestNet ? "TBD" : "SBD" + symbol = Config.get( "address_prefix" ) == "STM" ? "SBD" : "TBD" break case "@@000000037": precision = 6 diff --git a/test/smt.test.js b/test/smt.test.js index adfd13ed..1421f6dc 100644 --- a/test/smt.test.js +++ b/test/smt.test.js @@ -11,6 +11,9 @@ describe('steem.smt:', () => { describe('smt creation ops', () => { it('signs and verifies smt_create', function(done) { + let url = steem.config.get('uri'); + steem.api.setOptions({ url: url, useAppbaseApi: true }); + let tx = { 'operations': [[ 'smt_create', { From 221783aef38e5cec4e2ac2ff2191b5dd32ac37f7 Mon Sep 17 00:00:00 2001 From: Steve Gerbino Date: Thu, 5 Dec 2019 15:17:00 -0500 Subject: [PATCH 68/94] #466: Add steem-js support for smt_setup_ico_tier_operation. --- package.json | 2 +- src/auth/serializer/src/ChainTypes.js | 37 +++++++-------- src/auth/serializer/src/operations.js | 26 +++++++---- src/broadcast/operations.js | 17 +++++-- test/smt.test.js | 65 ++++++++++++++++----------- 5 files changed, 89 insertions(+), 58 deletions(-) diff --git a/package.json b/package.json index 15b75398..b8b4de15 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@steemit/steem-js", - "version": "0.7.9", + "version": "0.7.10", "description": "Steem.js the JavaScript API for Steem blockchain", "main": "lib/index.js", "scripts": { diff --git a/src/auth/serializer/src/ChainTypes.js b/src/auth/serializer/src/ChainTypes.js index 3ec8e5fd..4bb77066 100644 --- a/src/auth/serializer/src/ChainTypes.js +++ b/src/auth/serializer/src/ChainTypes.js @@ -60,24 +60,25 @@ ChainTypes.operations= { vote2: 48, smt_setup: 49, smt_setup_emissions: 50, - smt_set_setup_parameters: 51, - smt_set_runtime_parameters: 52, - smt_create: 53, - smt_contribute: 54, - fill_convert_request: 55, - author_reward: 56, - curation_reward: 57, - comment_reward: 58, - liquidity_reward: 59, - interest: 60, - fill_vesting_withdraw: 61, - fill_order: 62, - shutdown_witness: 63, - fill_transfer_from_savings: 64, - hardfork: 65, - comment_payout_update: 66, - return_vesting_delegation: 67, - comment_benefactor_reward: 68 + smt_setup_ico_tier: 51, + smt_set_setup_parameters: 52, + smt_set_runtime_parameters: 53, + smt_create: 54, + smt_contribute: 55, + fill_convert_request: 56, + author_reward: 57, + curation_reward: 58, + comment_reward: 59, + liquidity_reward: 60, + interest: 61, + fill_vesting_withdraw: 62, + fill_order: 63, + shutdown_witness: 64, + fill_transfer_from_savings: 65, + hardfork: 66, + comment_payout_update: 67, + return_vesting_delegation: 68, + comment_benefactor_reward: 69 }; //types.hpp diff --git a/src/auth/serializer/src/operations.js b/src/auth/serializer/src/operations.js index 47bc5f73..755cf071 100644 --- a/src/auth/serializer/src/operations.js +++ b/src/auth/serializer/src/operations.js @@ -93,10 +93,7 @@ const smt_generation_unit = new Serializer( }); const smt_capped_generation_policy = new Serializer(0, { - pre_soft_cap_unit: smt_generation_unit, - post_soft_cap_unit: smt_generation_unit, - min_unit_ratio: uint32, - max_unit_ratio: uint32, + generation_unit: smt_generation_unit, extensions: set(future_extensions) }); @@ -745,15 +742,12 @@ let smt_setup = new Serializer( control_account: string, symbol: asset_symbol, max_supply: int64, - initial_generation_policy: static_variant([ - smt_capped_generation_policy - ]), contribution_begin_time: time_point_sec, contribution_end_time: time_point_sec, launch_time: time_point_sec, steem_units_min: int64, - steem_units_soft_cap: int64, - steem_units_hard_cap: int64, + min_unit_ratio: uint32, + max_unit_ratio: uint32, extensions: set(future_extensions) } ); @@ -779,6 +773,19 @@ let smt_setup_emissions = new Serializer( } ); +let smt_setup_ico_tier = new Serializer( + "smt_setup_ico_tier", { + control_account: string, + symbol: asset_symbol, + steem_units_cap: int64, + generation_policy: static_variant([ + smt_capped_generation_policy + ]), + remove: bool, + extensions: set(future_extensions) + } + ); + let smt_set_setup_parameters = new Serializer( "smt_set_setup_parameters", { control_account: string, @@ -979,6 +986,7 @@ operation.st_operations = [ vote2, smt_setup, smt_setup_emissions, + smt_setup_ico_tier, smt_set_setup_parameters, smt_set_runtime_parameters, smt_create, diff --git a/src/broadcast/operations.js b/src/broadcast/operations.js index 86000cf2..21501805 100644 --- a/src/broadcast/operations.js +++ b/src/broadcast/operations.js @@ -525,13 +525,12 @@ module.exports = [ "control_account", "symbol", "max_supply", - "initial_generation_policy", "contribution_begin_time", "contribution_end_time", "launch_time", "steem_units_min", - "steem_units_soft_cap", - "steem_units_hard_cap", + "min_unit_ratio", + "max_unit_ratio", "extensions" ] }, @@ -557,6 +556,18 @@ module.exports = [ "extensions" ] }, + { + "roles": ["active", "owner"], + "operation": "smt_setup_ico_tier", + "params": [ + "control_account", + "symbol", + "steem_units_cap", + "generation_policy", + "remove", + "extensions" + ] + }, { "roles": ["active", "owner"], "operation": "smt_set_setup_parameters", diff --git a/test/smt.test.js b/test/smt.test.js index 1421f6dc..31ac6a29 100644 --- a/test/smt.test.js +++ b/test/smt.test.js @@ -45,10 +45,42 @@ describe('steem.smt:', () => { 'control_account' : username, 'symbol' : {'nai':'@@631672482','precision':3}, 'max_supply' : '1000000000000000', - 'initial_generation_policy' : [ + 'contribution_begin_time' : '2020-12-21T00:00:00', + 'contribution_end_time' : '2021-12-21T00:00:00', + 'launch_time' : '2021-12-22T00:00:00', + 'steem_units_min' : 0, + 'min_unit_ratio' : 50, + 'max_unit_ratio' : 100, + 'extensions':[] + } + ]] + } + + steem.api.callAsync('condenser_api.get_version', []).then((result) => { + if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + result.should.have.property('blockchain_version'); + + steem.broadcast._prepareTransaction(tx).then(function(tx){ + tx = steem.auth.signTransaction(tx, [activeWif]); + steem.api.verifyAuthorityAsync(tx).then( + (result) => {result.should.equal(true); done();}, + (err) => {done(err);} + ); + }); + }); + }) + + it('signs and verifies smt_setup_ico_tier', function(done) { + let tx = { + 'operations': [[ + 'smt_setup_ico_tier', { + 'control_account' : username, + 'symbol' : {'nai':'@@631672482','precision':3}, + 'steem_units_cap' : 10000, + 'generation_policy' : [ 0, { - 'pre_soft_cap_unit' : { + 'generation_unit' : { 'steem_unit' : [ ['$!alice.vesting',2], ['$market_maker',2], @@ -63,32 +95,11 @@ describe('steem.smt:', () => { ['alice',2] ] }, - 'post_soft_cap_unit' : { - 'steem_unit' : [ - ['$!alice.vesting',1], - ['$market_maker',1], - ['alice',1] - ], - 'token_unit' : [ - ['$!alice.vesting',1], - ['$from',1], - ['$from.vesting',1], - ['$market_maker',1], - ['$rewards',1], - ['alice',1] - ] - }, - 'min_unit_ratio' : 50, - 'max_unit_ratio' : 100, 'extensions':[] - }], - 'contribution_begin_time' : '2020-12-21T00:00:00', - 'contribution_end_time' : '2021-12-21T00:00:00', - 'launch_time' : '2021-12-22T00:00:00', - 'steem_units_min' : 0, - 'steem_units_soft_cap' : 2000, - 'steem_units_hard_cap' : 10000, - 'extensions':[] + } + ], + 'remove' : false, + 'extensions':[] }]] } From 3c7c211f709ece45c5275735e378db2bee4c4dd4 Mon Sep 17 00:00:00 2001 From: think-in-universe Date: Sun, 19 Jan 2020 14:46:36 +0800 Subject: [PATCH 69/94] fix the condition error --- src/broadcast/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/broadcast/index.js b/src/broadcast/index.js index 922a0e9b..3890ff2d 100644 --- a/src/broadcast/index.js +++ b/src/broadcast/index.js @@ -76,7 +76,7 @@ operations.forEach((operation) => { const operationParams = operation.params || []; const useCommentPermlink = - operationParams.indexOf('parent_permlink') !== -1 && + operationParams.indexOf('parent_author') !== -1 && operationParams.indexOf('parent_permlink') !== -1; steemBroadcast[`${operationName}With`] = From c0faea7f1c90d3c4db68f73495f09041710928e7 Mon Sep 17 00:00:00 2001 From: Steve Gerbino Date: Fri, 24 Jan 2020 11:16:15 -0500 Subject: [PATCH 70/94] Update operation smt_setup_token_emission, we field is not called emission_count instead of interval_count --- package.json | 2 +- src/auth/serializer/src/operations.js | 2 +- test/smt.test.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index b8b4de15..95cdba7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@steemit/steem-js", - "version": "0.7.10", + "version": "0.7.11", "description": "Steem.js the JavaScript API for Steem blockchain", "main": "lib/index.js", "scripts": { diff --git a/src/auth/serializer/src/operations.js b/src/auth/serializer/src/operations.js index 755cf071..b6573e06 100644 --- a/src/auth/serializer/src/operations.js +++ b/src/auth/serializer/src/operations.js @@ -759,7 +759,7 @@ let smt_setup_emissions = new Serializer( schedule_time: time_point_sec, emissions_unit: smt_emissions_unit, interval_seconds: uint32, - interval_count: uint32, + emission_count: uint32, lep_time: time_point_sec, rep_time: time_point_sec, lep_abs_amount: int64, diff --git a/test/smt.test.js b/test/smt.test.js index 31ac6a29..fbe7d9b2 100644 --- a/test/smt.test.js +++ b/test/smt.test.js @@ -132,7 +132,7 @@ describe('steem.smt:', () => { ] }, 'interval_seconds' : 21600, - 'interval_count' : 1, + 'emission_count' : 1, 'lep_time' : '1970-01-01T00:00:00', 'rep_time' : '1970-01-01T00:00:00', 'lep_abs_amount' : 0, From ec48736b41e444600c5d7177d6ddf9bb63458ac4 Mon Sep 17 00:00:00 2001 From: Michael Vandeberg Date: Fri, 24 Jan 2020 09:48:45 -0800 Subject: [PATCH 71/94] Remove NAI checksum assertions #470 --- src/auth/serializer/src/types.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/auth/serializer/src/types.js b/src/auth/serializer/src/types.js index 629940cc..397b85d8 100644 --- a/src/auth/serializer/src/types.js +++ b/src/auth/serializer/src/types.js @@ -128,9 +128,6 @@ Types.asset = { nai = Math.floor(nai / 10); let expected_checksum = damm_checksum_8digit(nai) - //if(checksum != expected_checksum) - // throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) - switch(object["nai"]) { case "@@000000021": @@ -167,9 +164,6 @@ Types.asset = { let checksum = nai % 10 nai = Math.floor(nai / 10); let expected_checksum = damm_checksum_8digit(nai) - - if(checksum != expected_checksum) - throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) } else if(symbol.length > 6) throw new Error("Symbols are not longer than 6 characters " + symbol + "-"+ symbol.length) @@ -249,9 +243,6 @@ Types.asset_symbol = { nai = Math.floor(nai / 10); let expected_checksum = damm_checksum_8digit(nai) - //if(checksum != expected_checksum) - // throw new Error("Checksums do not match, expected " + expected_checksum + " actual " + checksum) - let precision = 0; let symbol = ""; switch(object["nai"]) From 6d0622735dcbd8bd0a66d34e48584dfb0163202e Mon Sep 17 00:00:00 2001 From: ETY001 Date: Wed, 10 Jun 2020 01:20:30 +0800 Subject: [PATCH 72/94] fix hf20 test --- test/hf20-accounts.test.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/test/hf20-accounts.test.js b/test/hf20-accounts.test.js index 43945b2b..4a66acad 100644 --- a/test/hf20-accounts.test.js +++ b/test/hf20-accounts.test.js @@ -20,18 +20,18 @@ describe('steem.hf20-accounts:', () => { describe('claimAccount', () => { +/* Skip these tests. Steem-js test infrastructure not set up for testing active auths + Blocked by Steem issue #3546 it('signs and verifies auth', function(done) { let tx = { 'operations': [[ 'claim_account', { 'creator': username, - 'fee': '0.000 TESTS'}]] + 'fee': '0.000 STEEM'}]] } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - result.should.have.property('blockchain_version'); - if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP */ - result.should.have.property('blockchain_version', '0.21.0') + if(result['blockchain_version'] < '0.22.0') return done(); steem.broadcast._prepareTransaction(tx).then(function(tx){ tx = steem.auth.signTransaction(tx, [activeWif]); @@ -48,11 +48,9 @@ describe('steem.hf20-accounts:', () => { this.skip(); // (!) need test account with enough RC steem.api.callAsync('condenser_api.get_version', []).then((result) => { - result.should.have.property('blockchain_version'); - if(result['blockchain_version'] < '0.21.0') return done(); /* SKIP */ - result.should.have.property('blockchain_version', '0.21.0') + if(result['blockchain_version'] < '0.22.0') return done(); - steem.broadcast.claimAccountAsync(activeWif, username, '0.000 TESTS', []).then((result) => { + steem.broadcast.claimAccountAsync(activeWif, username, '0.000 STEEM', []).then((result) => { let newAccountName = username + '-' + Math.floor(Math.random() * 10000); let keys = steem.auth.generateKeys( username, password, ['posting', 'active', 'owner', 'memo']); @@ -73,6 +71,6 @@ describe('steem.hf20-accounts:', () => { }, (err) => {done(err)}); }); }); - +*/ }); }); From 6621208ad2ba0d3fd6c713f7ccf2ad7a5fb88b73 Mon Sep 17 00:00:00 2001 From: ETY001 Date: Thu, 18 Jun 2020 19:44:07 +0800 Subject: [PATCH 73/94] delay smt version --- test/smt.test.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/smt.test.js b/test/smt.test.js index fbe7d9b2..29cd2be1 100644 --- a/test/smt.test.js +++ b/test/smt.test.js @@ -25,7 +25,7 @@ describe('steem.smt:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.24.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ @@ -57,7 +57,7 @@ describe('steem.smt:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.24.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ @@ -104,7 +104,7 @@ describe('steem.smt:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.24.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ @@ -147,7 +147,7 @@ describe('steem.smt:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.24.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ @@ -175,7 +175,7 @@ describe('steem.smt:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.24.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ @@ -204,7 +204,7 @@ describe('steem.smt:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.24.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ @@ -230,7 +230,7 @@ describe('steem.smt:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.24.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ @@ -265,7 +265,7 @@ describe('steem.smt:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.24.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ @@ -302,7 +302,7 @@ describe('steem.smt:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.24.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ @@ -331,7 +331,7 @@ describe('steem.smt:', () => { } steem.api.callAsync('condenser_api.get_version', []).then((result) => { - if(result['blockchain_version'] < '0.23.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ + if(result['blockchain_version'] < '0.24.0') return done(); /* SKIP AS THIS WILL ONLY PASS ON A TESTNET CURRENTLY */ result.should.have.property('blockchain_version'); steem.broadcast._prepareTransaction(tx).then(function(tx){ From bb647b5bc42bf44d81fbc5b86914454176e00f92 Mon Sep 17 00:00:00 2001 From: justyy Date: Thu, 25 Jun 2020 20:32:08 +0000 Subject: [PATCH 74/94] Add Tests + Fix Rep 25 Error --- src/formatter.js | 3 ++- test/reputation.test.js | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) mode change 100644 => 100755 src/formatter.js create mode 100644 test/reputation.test.js diff --git a/src/formatter.js b/src/formatter.js old mode 100644 new mode 100755 index bba67c3e..d9e8bf24 --- a/src/formatter.js +++ b/src/formatter.js @@ -156,7 +156,8 @@ module.exports = steemAPI => { return { reputation: function(reputation) { - if (reputation == null) return reputation; + if (reputation == 0) return 25; + if (!reputation) return reputation; let neg = reputation < 0; let rep = String(reputation); rep = neg ? rep.substring(1) : rep; diff --git a/test/reputation.test.js b/test/reputation.test.js new file mode 100644 index 00000000..244a9aad --- /dev/null +++ b/test/reputation.test.js @@ -0,0 +1,36 @@ +import assert from 'assert'; +import steem from '../src'; + +describe('steem.format.reputation', ()=> { + const reputation = steem.formatter.reputation; + it('rep 0 => 25', () => { + assert.equal(reputation(0), 25); + }); + it('rep 95832978796820 => 69', () => { + assert.equal(reputation(95832978796820), 69); + }); + it('rep 10004392664120 => 61', () => { + assert.equal(reputation(10004392664120), 61); + }); + it('rep 30999525306309 => 65', () => { + assert.equal(reputation(30999525306309), 65); + }); + it('rep -37765258368568 => -16', () => { + assert.equal(reputation(-37765258368568), -16); + }); + it('rep 334486135407077 => 74', () => { + assert.equal(reputation(334486135407077), 74); + }); + it('rep null => null', () => { + assert.equal(reputation(null), null); + }); + it('rep undefined => undefined', () => { + assert.equal(reputation(undefined), undefined); + }); + it('rep -1234123412342234 => -29', () => { + assert.equal(reputation(-1234123412342234), -29); + }); + it('rep -22233344455 => 12', () => { + assert.equal(reputation(-22233344455), 12); + }); +}) From 436af860482f9136bbcaaee62c499a10d4d1caf9 Mon Sep 17 00:00:00 2001 From: DoctorLai Date: Mon, 20 Nov 2023 07:43:46 +0000 Subject: [PATCH 75/94] Add support of rc_api.find_rc_accounts (#498) * Add rc_api.find_rc_accounts * Revert format * Revert format * remove console.debug --- README.md | 4 +--- src/api/index.js | 10 ++++++++-- src/api/methods.js | 8 +++++++- test/api.test.js | 12 ++++++++++++ 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index bdc04e28..d444b67e 100644 --- a/README.md +++ b/README.md @@ -58,8 +58,6 @@ $ npm install steem --save ## RPC Servers https://api.steemit.com By Default
-https://node.steem.ws
-https://this.piston.rocks
## Examples ### Broadcast Vote @@ -107,7 +105,7 @@ steem.api.setOptions({ The Chain ID could change. If it does, it may not be reflected here, but will be documented on any testnet launch announcements. ## Contributions -Patches are welcome! Contributors are listed in the package.json file. Please run the tests before opening a pull request and make sure that you are passing all of them. If you would like to contribute, but don't know what to work on, check the issues list or on Steemit Chat channel #steemjs https://steemit.chat/channel/steemjs. +Patches are welcome! Contributors are listed in the package.json file. Please run the tests before opening a pull request and make sure that you are passing all of them. If you would like to contribute, but don't know what to work on, check the issues list. ## Issues When you find issues, please report them! diff --git a/src/api/index.js b/src/api/index.js index 1a39f299..3f1a4652 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -31,9 +31,15 @@ class Steem extends EventEmitter { const methodParams = method.params || []; this[`${methodName}With`] = (options, callback) => { + let params; + if (!method.is_object) { + params = methodParams.map(param => options[param]); + } else { + params = options; + } return this.send(method.api, { method: method.method, - params: methodParams.map(param => options[param]) + params: params }, callback); }; @@ -46,7 +52,7 @@ class Steem extends EventEmitter { return this[`${methodName}With`](options, callback); }; - this[`${methodName}WithAsync`] = Promise.promisify(this[`${methodName}With`]); + this[`${methodName}WithAsync`] = Promise.promisify(this[`${methodName}With`]); this[`${methodName}Async`] = Promise.promisify(this[methodName]); }); this.callAsync = Promise.promisify(this.call); diff --git a/src/api/methods.js b/src/api/methods.js index 99e40368..4e15a93e 100644 --- a/src/api/methods.js +++ b/src/api/methods.js @@ -510,5 +510,11 @@ export default [ "api": "condenser_api", "method": "get_nai_pool", "params": [] - } + }, + { + "api": "rc_api", + "method": "find_rc_accounts", + "params": ["accounts"], + "is_object": true + }, ]; diff --git a/test/api.test.js b/test/api.test.js index 574a07bc..c23bbbc8 100644 --- a/test/api.test.js +++ b/test/api.test.js @@ -323,4 +323,16 @@ describe('steem.api:', function () { it('does not retry non-retriable operations'); }); + describe('getRC', () => { + describe('getting a RC of an account', () => { + it('works', async () => { + const result = await steem.api.findRcAccountsAsync(["justinsunsteemit"]); + result.should.have.properties("rc_accounts"); + result["rc_accounts"][0].should.have.properties("rc_manabar"); + }); + it('clears listeners', async () => { + steem.api.listeners('message').should.have.lengthOf(0); + }); + }); + }); }); From 90df0fab1d2791bb73195a2a73e231eccdea9fa6 Mon Sep 17 00:00:00 2001 From: ety001 Date: Wed, 6 Dec 2023 10:11:51 +0800 Subject: [PATCH 76/94] migrate from circleci to github action (#499) --- .circleci/config.yml | 23 ----------------------- .github/workflows/build.yml | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 23 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/build.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index a7529592..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,23 +0,0 @@ -version: 2 -jobs: - build: - docker: - - image: docker:17-git - steps: - - checkout - - setup_remote_docker - - run: - name: Build Docker image - command: docker build -f node-6.dockerfile -t steemjs . - - run: - name: Save Docker image - command: docker save -o steemjs.tar steemjs - - persist_to_workspace: - root: . - paths: - - steemjs.tar -workflows: - version: 2 - condenser: - jobs: - - build diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..c35d92ae --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,29 @@ +name: run-test-unit + +on: + push: + branches: + - 'master' + workflow_dispatch: + +jobs: + node6: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Set up QEMU + uses: docker/setup-qemu-action@v3 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - + name: Build to run test unit + uses: docker/build-push-action@v4 + with: + context: . + file: node-6.dockerfile + push: false + tags: test From 39215bb336b1b4c859d767713aa01dafc7441c92 Mon Sep 17 00:00:00 2001 From: ety001 Date: Wed, 6 Dec 2023 10:45:38 +0800 Subject: [PATCH 77/94] edit github action (#502) --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c35d92ae..a49b1bef 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,6 +4,8 @@ on: push: branches: - 'master' + pull_request: + types: [opened, reopened, synchronize] workflow_dispatch: jobs: From 450f19fea87b4729013eaa5a979ff3e0b0b45bc7 Mon Sep 17 00:00:00 2001 From: DoctorLai Date: Tue, 13 Aug 2024 04:57:38 +0100 Subject: [PATCH 78/94] Add steem.api.getExpiringVestingDelegationsAsync (#506) * Add steem.api.getExpiringVestingDelegationsAsync * Simplify --- src/api/methods.js | 5 +++++ test/api.test.js | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/api/methods.js b/src/api/methods.js index 4e15a93e..cddfa275 100644 --- a/src/api/methods.js +++ b/src/api/methods.js @@ -517,4 +517,9 @@ export default [ "params": ["accounts"], "is_object": true }, + { + "api": "condenser_api", + "method": "get_expiring_vesting_delegations", + "params": ["account", "start", "limit"], + } ]; diff --git a/test/api.test.js b/test/api.test.js index c23bbbc8..6b674cc0 100644 --- a/test/api.test.js +++ b/test/api.test.js @@ -335,4 +335,16 @@ describe('steem.api:', function () { }); }); }); + + describe('getExpiringDelegations', () => { + describe('getting expired delegation of an account', () => { + it('works', async () => { + const result = await steem.api.getExpiringVestingDelegationsAsync("justyy", "2004-01-02T00:11:22", 100); + result.should.have.properties("length"); + }); + it('clears listeners', async () => { + steem.api.listeners('message').should.have.lengthOf(0); + }); + }); + }) }); From 42cdb48c3813775fe7ecaee49fcb0b5c4f774179 Mon Sep 17 00:00:00 2001 From: DoctorLai Date: Sat, 31 Aug 2024 01:21:30 +0100 Subject: [PATCH 79/94] Add steem.api.findChangeRecoveryAccountRequests (#509) --- doc/README.md | 24 ++++++++++++++++++++++++ src/api/methods.js | 6 ++++++ test/api.test.js | 15 ++++++++++++++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/doc/README.md b/doc/README.md index aeb11775..a88e1c40 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1156,6 +1156,30 @@ Return Example: { account: 'username-taken', reputation: 0 } ] ``` - - - - - - - - - - - - - - - - - - +## Recovery Account Change Requests +Get the change requests of recovery account for multiple accounts. + +```js +steem.api.findChangeRecoveryAccountRequests(['justyy222', 'ety001', 'justyy'], function(err, data) { + console.log(err, data); +}); +``` + +Return Example: + +```js +{"requests": + [ + { + "id":2238, + "account_to_recover":"justyy222", + "recovery_account":"happyukgo", + "effective_on":"2024-09-24T06:15:33" + } + ] +} +``` +- - - - - - - - - - - - - - - - - - ## Market - - - - - - - - - - - - - - - - - - ### Get Order Book diff --git a/src/api/methods.js b/src/api/methods.js index cddfa275..a0dbd04b 100644 --- a/src/api/methods.js +++ b/src/api/methods.js @@ -521,5 +521,11 @@ export default [ "api": "condenser_api", "method": "get_expiring_vesting_delegations", "params": ["account", "start", "limit"], + }, + { + "api": "database_api", + "method": "find_change_recovery_account_requests", + "params": ["account"], + "is_object": true } ]; diff --git a/test/api.test.js b/test/api.test.js index 6b674cc0..b2f15011 100644 --- a/test/api.test.js +++ b/test/api.test.js @@ -346,5 +346,18 @@ describe('steem.api:', function () { steem.api.listeners('message').should.have.lengthOf(0); }); }); - }) + }); + + describe('Account Recovery', () => { + describe('findChangeRecoveryAccountRequests', () => { + it('works', async () => { + const result = await steem.api.findChangeRecoveryAccountRequestsAsync(["justyy", "ety001"]); + result.should.have.properties("requests"); + result.requests.should.have.properties("length"); + }); + it('clears listeners', async () => { + steem.api.listeners('message').should.have.lengthOf(0); + }); + }); + }); }); From 8c877a27191151c4b72c700320e5bc9aa6a0b76d Mon Sep 17 00:00:00 2001 From: riskrole <137032852+riskrole@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:38:38 +0800 Subject: [PATCH 80/94] chore: fix some comments (#508) Signed-off-by: riskrole --- examples/webpack-example/README.md | 2 +- src/auth/ecc/src/aes.js | 4 ++-- src/auth/ecc/src/key_private.js | 2 +- src/auth/ecc/src/signature.js | 2 +- test/KeyFormats.js | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/webpack-example/README.md b/examples/webpack-example/README.md index b2a6ba49..95f87ed9 100644 --- a/examples/webpack-example/README.md +++ b/examples/webpack-example/README.md @@ -1,5 +1,5 @@ # `steem-js` webpack configuration example -This is a demo of `steem-js` and webpack usage targetting both the Web and +This is a demo of `steem-js` and webpack usage targeting both the Web and Node.js platforms. ## Compiling the example diff --git a/src/auth/ecc/src/aes.js b/src/auth/ecc/src/aes.js index 20a0f21e..99f4d02c 100644 --- a/src/auth/ecc/src/aes.js +++ b/src/auth/ecc/src/aes.js @@ -12,7 +12,7 @@ const Long = ByteBuffer.Long; Spec: http://localhost:3002/steem/@dantheman/how-to-encrypt-a-memo-when-transferring-steem @throws {Error|TypeError} - "Invalid Key, ..." @arg {PrivateKey} private_key - required and used for decryption - @arg {PublicKey} public_key - required and used to calcualte the shared secret + @arg {PublicKey} public_key - required and used to calculate the shared secret @arg {string} [nonce = uniqueNonce()] - assigned a random unique uint64 @return {object} @@ -27,7 +27,7 @@ export function encrypt(private_key, public_key, message, nonce = uniqueNonce()) /** Spec: http://localhost:3002/steem/@dantheman/how-to-encrypt-a-memo-when-transferring-steem @arg {PrivateKey} private_key - required and used for decryption - @arg {PublicKey} public_key - required and used to calcualte the shared secret + @arg {PublicKey} public_key - required and used to calculate the shared secret @arg {string} nonce - random or unique uint64, provides entropy when re-using the same private/public keys. @arg {Buffer} message - Encrypted or plain text message @arg {number} checksum - shared secret checksum diff --git a/src/auth/ecc/src/key_private.js b/src/auth/ecc/src/key_private.js index 200fe186..b03085cd 100644 --- a/src/auth/ecc/src/key_private.js +++ b/src/auth/ecc/src/key_private.js @@ -20,7 +20,7 @@ class PrivateKey { static fromBuffer(buf) { if (!Buffer.isBuffer(buf)) { - throw new Error("Expecting paramter to be a Buffer type"); + throw new Error("Expecting parameter to be a Buffer type"); } if (32 !== buf.length) { console.log(`WARN: Expecting 32 bytes, instead got ${buf.length}, stack trace:`, new Error().stack); diff --git a/src/auth/ecc/src/signature.js b/src/auth/ecc/src/signature.js index abc7a2a2..c8b8b366 100644 --- a/src/auth/ecc/src/signature.js +++ b/src/auth/ecc/src/signature.js @@ -71,7 +71,7 @@ class Signature { */ static signBufferSha256(buf_sha256, private_key) { if( buf_sha256.length !== 32 || ! Buffer.isBuffer(buf_sha256) ) - throw new Error("buf_sha256: 32 byte buffer requred") + throw new Error("buf_sha256: 32 byte buffer required") private_key = toPrivateObj(private_key) assert(private_key, 'private_key required') diff --git a/test/KeyFormats.js b/test/KeyFormats.js index a96b7d97..11fbf674 100644 --- a/test/KeyFormats.js +++ b/test/KeyFormats.js @@ -4,7 +4,7 @@ import assert from "assert" var test = function(key) { describe("steem.auth: key_formats", function() { - it("Calcualtes public key from private key", function() { + it("Calculates public key from private key", function() { var private_key = PrivateKey.fromHex(key.private_key); var public_key = private_key.toPublicKey(); assert.equal(key.public_key, public_key.toPublicKeyString()); From 4783ae4b7587b322c1dbaed4d8e5529d40ce4a46 Mon Sep 17 00:00:00 2001 From: shenpengfeng Date: Thu, 26 Sep 2024 22:39:17 +0800 Subject: [PATCH 81/94] chore: fix some comments (#507) Signed-off-by: shenpengfeng --- doc/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/README.md b/doc/README.md index a88e1c40..9ead4a90 100644 --- a/doc/README.md +++ b/doc/README.md @@ -2151,7 +2151,7 @@ steem.broadcast.transfer(wif, from, to, amount, memo, function(err, result) { |wif|Active private key for the `from` account|String|| |from|Account name to take asset from|String|No leading @ symbol| |to|Account name to place asset into|String|No leading @ symbol| -|amount|Amount of of asset to transfer|String|"X.XXX ASSET" must have 3 decimal places. e.g. "5.150 SBD"| +|amount|Amount of asset to transfer|String|"X.XXX ASSET" must have 3 decimal places. e.g. "5.150 SBD"| |function()|Your callback|function|| See also: [transferToVesting](#transfer-to-vesting) From b370192a30a73b0d49e3fb0b923a33600d6f982a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:41:06 +0800 Subject: [PATCH 82/94] Bump qs from 6.4.0 to 6.4.1 (#497) Bumps [qs](https://github.com/ljharb/qs) from 6.4.0 to 6.4.1. - [Release notes](https://github.com/ljharb/qs/releases) - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.4.0...v6.4.1) --- updated-dependencies: - dependency-name: qs dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: ety001 --- yarn.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7e5e097c..b884677f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2582,8 +2582,9 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + version "6.4.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.1.tgz#2bad97710a5b661c366b378b1e3a44a592ff45e6" + integrity sha512-LQy1Q1fcva/UsnP/6Iaa4lVeM49WiOitu2T4hZCyA/elLKu37L99qcBJk4VCCk+rdLvnMzfKyiN3SZTqdAZGSQ== querystring-es3@^0.2.0: version "0.2.1" From 5038cdcd6bae5c8def7f06267f570a21d785875d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:42:23 +0800 Subject: [PATCH 83/94] Bump cross-fetch from 1.1.1 to 3.1.5 (#493) Bumps [cross-fetch](https://github.com/lquixada/cross-fetch) from 1.1.1 to 3.1.5. - [Release notes](https://github.com/lquixada/cross-fetch/releases) - [Commits](https://github.com/lquixada/cross-fetch/compare/v1.1.1...v3.1.5) --- updated-dependencies: - dependency-name: cross-fetch dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 54 ++++++++++++++++++++++++++++------------------------ 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 95cdba7b..840450e0 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "create-hash": "^1.1.2", "create-hmac": "^1.1.4", "cross-env": "^5.0.0", - "cross-fetch": "^1.1.1", + "cross-fetch": "^3.1.5", "debug": "^2.6.8", "detect-node": "^2.0.3", "ecurve": "^1.0.5", diff --git a/yarn.lock b/yarn.lock index b884677f..d9e26d12 100644 --- a/yarn.lock +++ b/yarn.lock @@ -996,12 +996,12 @@ cross-env@^5.0.0: cross-spawn "^5.1.0" is-windows "^1.0.0" -cross-fetch@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-1.1.1.tgz#dede6865ae30f37eae62ac90ebb7bdac002b05a0" +cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== dependencies: - node-fetch "1.7.3" - whatwg-fetch "2.0.3" + node-fetch "2.6.7" cross-spawn@^5.1.0: version "5.1.0" @@ -1164,12 +1164,6 @@ emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - dependencies: - iconv-lite "~0.4.13" - enhanced-resolve@~0.9.0: version "0.9.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz#4d6e689b3725f86090927ccc86cd9f1635b89e2e" @@ -1764,7 +1758,7 @@ https-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" -iconv-lite@^0.4.5, iconv-lite@~0.4.13: +iconv-lite@^0.4.5: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -1952,10 +1946,6 @@ is-resolvable@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.1.tgz#acca1cd36dbe44b974b924321555a70ba03b1cf4" -is-stream@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - is-symbol@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" @@ -2295,12 +2285,12 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" -node-fetch@1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" + whatwg-url "^5.0.0" node-libs-browser@^0.7.0: version "0.7.0" @@ -3117,6 +3107,11 @@ tough-cookie@~2.3.0: dependencies: punycode "^1.4.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -3229,6 +3224,11 @@ watchpack@^0.2.1: chokidar "^1.0.0" graceful-fs "^4.1.2" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + webpack-core@~0.6.9: version "0.6.9" resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.9.tgz#fc571588c8558da77be9efb6debdc5a3b172bdc2" @@ -3265,14 +3265,18 @@ webpack@^1.13.2: watchpack "^0.2.1" webpack-core "~0.6.9" -whatwg-fetch@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" - whatwg-fetch@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz#0e3684c6cb9995b43efc9df03e4c365d95fd9cc0" +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" From ab9c663851214fcaebafee4a0cb34d2d9ad11917 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:43:37 +0800 Subject: [PATCH 84/94] Bump path-parse from 1.0.5 to 1.0.7 (#485) Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.5 to 1.0.7. - [Release notes](https://github.com/jbgutierrez/path-parse/releases) - [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7) --- updated-dependencies: - dependency-name: path-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index d9e26d12..ad43ee93 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2480,8 +2480,9 @@ path-is-inside@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== pbkdf2-compat@2.0.1: version "2.0.1" From cb534279b04f77d83d35dbea50643be946480c9f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:44:50 +0800 Subject: [PATCH 85/94] Bump tar from 2.2.1 to 2.2.2 (#460) Bumps [tar](https://github.com/npm/node-tar) from 2.2.1 to 2.2.2. - [Release notes](https://github.com/npm/node-tar/releases) - [Commits](https://github.com/npm/node-tar/compare/v2.2.1...v2.2.2) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 61 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 12 deletions(-) diff --git a/yarn.lock b/yarn.lock index ad43ee93..40439741 100644 --- a/yarn.lock +++ b/yarn.lock @@ -668,6 +668,7 @@ babylon@^6.17.0, babylon@^6.18.0: balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base-x@^3.0.2: version "3.0.3" @@ -704,6 +705,7 @@ binary-extensions@^1.0.0: block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= dependencies: inherits "~2.0.0" @@ -718,8 +720,9 @@ boom@2.x.x: hoek "2.x.x" brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -926,6 +929,7 @@ commoner@^0.10.1: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.5.2: version "1.6.0" @@ -1548,6 +1552,7 @@ fs-readdir-recursive@^1.0.0: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.0.0: version "1.1.3" @@ -1564,9 +1569,10 @@ fstream-ignore@^1.0.5: inherits "2" minimatch "^3.0.0" -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== dependencies: graceful-fs "^4.1.2" inherits "~2.0.0" @@ -1651,6 +1657,18 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3: + version "7.1.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0" + integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ== + dependencies: + 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" + globals@^9.14.0, globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -1666,7 +1684,12 @@ globby@^5.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.4: +graceful-fs@^4.1.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +graceful-fs@^4.1.4: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1781,13 +1804,15 @@ indexof@0.0.1: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.1: version "2.0.1" @@ -2229,12 +2254,14 @@ mime-types@^2.1.12, mime-types@~2.1.7: "minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@^1.2.0: version "1.2.0" @@ -2396,6 +2423,7 @@ object.omit@^2.0.0: once@^1.3.0, once@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" @@ -2780,7 +2808,14 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: +rimraf@2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -3073,11 +3108,12 @@ tar-pack@^3.4.0: uid-number "^0.0.6" tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + version "2.2.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== dependencies: block-stream "*" - fstream "^1.0.2" + fstream "^1.0.12" inherits "2" text-table@~0.2.0: @@ -3309,6 +3345,7 @@ wordwrap@~1.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write@^0.2.1: version "0.2.1" From ee5aceb176c8d9bb2f82b556fa4b8b22197304e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:47:07 +0800 Subject: [PATCH 86/94] Bump ws from 3.3.2 to 5.2.4 (#511) Bumps [ws](https://github.com/websockets/ws) from 3.3.2 to 5.2.4. - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/3.3.2...5.2.4) --- updated-dependencies: - dependency-name: ws dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 13 ++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 840450e0..dc3f99a8 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "lodash": "^4.16.4", "retry": "^0.12.0", "secure-random": "^1.1.2", - "ws": "^3.3.2" + "ws": "^5.2.4" }, "devDependencies": { "babel-cli": "^6.16.0", diff --git a/yarn.lock b/yarn.lock index 40439741..02e2a4a4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3198,10 +3198,6 @@ uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -3353,13 +3349,12 @@ write@^0.2.1: dependencies: mkdirp "^0.5.1" -ws@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.2.tgz#96c1d08b3fefda1d5c1e33700d3bfaa9be2d5608" +ws@^5.2.4: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.4.tgz#c7bea9f1cfb5f410de50e70e82662e562113f9a7" + integrity sha512-fFCejsuC8f9kOSu9FYaOw8CdO68O3h5v0lg4p74o8JqWpwTf9tniOD+nOB78aWoVSS6WptVUmDrp/KPsMVBWFQ== dependencies: async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" xtend@^4.0.0: version "4.0.1" From eb33664e4b15c794597e59db26850c2cf488eb21 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:50:20 +0800 Subject: [PATCH 87/94] Bump es5-ext from 0.10.37 to 0.10.64 (#510) Bumps [es5-ext](https://github.com/medikoo/es5-ext) from 0.10.37 to 0.10.64. - [Release notes](https://github.com/medikoo/es5-ext/releases) - [Changelog](https://github.com/medikoo/es5-ext/blob/main/CHANGELOG.md) - [Commits](https://github.com/medikoo/es5-ext/compare/v0.10.37...v0.10.64) --- updated-dependencies: - dependency-name: es5-ext dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 60 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/yarn.lock b/yarn.lock index 02e2a4a4..e25b5ec4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1040,6 +1040,14 @@ d@1: dependencies: es5-ext "^0.10.9" +d@^1.0.1, d@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" + integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== + dependencies: + es5-ext "^0.10.64" + type "^2.7.2" + damerau-levenshtein@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" @@ -1207,14 +1215,17 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" -es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.37" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.37.tgz#0ee741d148b80069ba27d020393756af257defc3" +es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.64" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" + integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== dependencies: - es6-iterator "~2.0.1" - es6-symbol "~3.1.1" + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" -es6-iterator@^2.0.1, es6-iterator@~2.0.1: +es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" dependencies: @@ -1250,6 +1261,14 @@ es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: d "1" es5-ext "~0.10.14" +es6-symbol@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" + integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== + dependencies: + d "^1.0.2" + ext "^1.7.0" + es6-weak-map@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" @@ -1359,6 +1378,16 @@ eslint@^3.5.0: text-table "~0.2.0" user-home "^2.0.0" +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + espree@^3.4.0: version "3.5.2" resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca" @@ -1399,7 +1428,7 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -event-emitter@~0.3.5: +event-emitter@^0.3.5, event-emitter@~0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" dependencies: @@ -1433,6 +1462,13 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" +ext@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -2312,6 +2348,11 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + node-fetch@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -3173,6 +3214,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type@^2.7.2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486" + integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" From 68d4041ea05755b400fb3b691a9eb0f69034934e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:50:53 +0800 Subject: [PATCH 88/94] Bump lodash from 4.17.4 to 4.17.21 (#484) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.4 to 4.17.21. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.4...4.17.21) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index e25b5ec4..eabed477 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2213,8 +2213,9 @@ lodash.keys@^3.0.0: lodash.isarray "^3.0.0" lodash@^4.0.0, lodash@^4.16.4, lodash@^4.17.4, lodash@^4.3.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== lolex@1.3.2: version "1.3.2" From 25c16fc1fe16e8d7bd18940c117c5d01fd7d7ab2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:51:20 +0800 Subject: [PATCH 89/94] Bump ua-parser-js from 0.7.17 to 0.7.28 (#483) Bumps [ua-parser-js](https://github.com/faisalman/ua-parser-js) from 0.7.17 to 0.7.28. - [Release notes](https://github.com/faisalman/ua-parser-js/releases) - [Commits](https://github.com/faisalman/ua-parser-js/compare/0.7.17...0.7.28) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index eabed477..3ffcdbcc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3225,8 +3225,9 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" ua-parser-js@^0.7.9: - version "0.7.17" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" + version "0.7.28" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" + integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== uglify-js@~2.7.3: version "2.7.5" From 2ec595b7eb683a64027ad3ecd133412ea1e64e3d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:51:50 +0800 Subject: [PATCH 90/94] Bump ini from 1.3.5 to 1.3.7 (#481) Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7. - [Release notes](https://github.com/isaacs/ini/releases) - [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3ffcdbcc..e35acd52 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1855,8 +1855,9 @@ inherits@2.0.1: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + version "1.3.7" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" + integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== inquirer@^0.12.0: version "0.12.0" From 14d3bd41c24c7792a49e35ee38a262feb385c5d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:52:32 +0800 Subject: [PATCH 91/94] Bump extend from 3.0.1 to 3.0.2 (#462) Bumps [extend](https://github.com/justmoon/node-extend) from 3.0.1 to 3.0.2. - [Release notes](https://github.com/justmoon/node-extend/releases) - [Changelog](https://github.com/justmoon/node-extend/blob/master/CHANGELOG.md) - [Commits](https://github.com/justmoon/node-extend/compare/v3.0.1...v3.0.2) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index e35acd52..e7168995 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1470,8 +1470,9 @@ ext@^1.7.0: type "^2.7.2" extend@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extglob@^0.3.1: version "0.3.2" From 2e86ebff2e4011fb6e7be51331529b7aed82ec52 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Sep 2024 22:53:07 +0800 Subject: [PATCH 92/94] Bump sshpk from 1.13.1 to 1.16.1 (#461) Bumps [sshpk](https://github.com/joyent/node-sshpk) from 1.13.1 to 1.16.1. - [Release notes](https://github.com/joyent/node-sshpk/releases) - [Commits](https://github.com/joyent/node-sshpk/compare/v1.13.1...v1.16.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/yarn.lock b/yarn.lock index e7168995..683e4ca2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -134,8 +134,11 @@ asap@~2.0.3: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" @@ -685,8 +688,9 @@ base64-js@^1.0.2: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: tweetnacl "^0.14.3" @@ -1055,6 +1059,7 @@ damerau-levenshtein@^1.0.0: dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" @@ -1160,10 +1165,12 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: jsbn "~0.1.0" + safer-buffer "^2.1.0" ecurve@^1.0.5: version "1.0.6" @@ -1646,6 +1653,7 @@ generate-object-property@^1.1.0: getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" @@ -2053,6 +2061,7 @@ js-yaml@^3.5.1: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jsesc@^1.3.0: version "1.3.0" @@ -2890,6 +2899,11 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + samsam@1.1.2, samsam@~1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" @@ -3034,17 +3048,18 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" sshpk@^1.7.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" ecc-jsbn "~0.1.1" + getpass "^0.1.1" jsbn "~0.1.0" + safer-buffer "^2.0.2" tweetnacl "~0.14.0" stream-browserify@^2.0.1: @@ -3210,6 +3225,7 @@ tunnel-agent@^0.6.0: tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= type-check@~0.3.2: version "0.3.2" From 81694a452a6c6ee0b1154ba76027c6b53e0a27ed Mon Sep 17 00:00:00 2001 From: Smitty Date: Thu, 26 Sep 2024 12:22:59 -0400 Subject: [PATCH 93/94] Remove ops that are removed or virtural (#386) Co-authored-by: roadscape Co-authored-by: ety001 --- doc/README.md | 65 --------------------------------------------------- 1 file changed, 65 deletions(-) diff --git a/doc/README.md b/doc/README.md index 9ead4a90..c1350c84 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1784,13 +1784,6 @@ steem.broadcast.accountWitnessVote(wif, account, witness, approve, function(err, }); ``` - - - - - - - - - - - - - - - - - - -### Challenge Authority -```js -steem.broadcast.challengeAuthority(wif, challenger, challenged, requireOwner, function(err, result) { - console.log(err, result); -}); -``` -- - - - - - - - - - - - - - - - - - ### Change Recovery Account ```js steem.broadcast.changeRecoveryAccount(wif, accountToRecover, newRecoveryAccount, extensions, function(err, result) { @@ -1819,13 +1812,6 @@ steem.broadcast.commentPayout(wif, author, permlink, payout, function(err, resul }); ``` - - - - - - - - - - - - - - - - - - -### Comment Reward -```js -steem.broadcast.commentReward(wif, author, permlink, sbdPayout, vestingPayout, function(err, result) { - console.log(err, result); -}); -``` -- - - - - - - - - - - - - - - - - - ### Convert ```js steem.broadcast.convert(wif, owner, requestid, amount, function(err, result) { @@ -1833,13 +1819,6 @@ steem.broadcast.convert(wif, owner, requestid, amount, function(err, result) { }); ``` - - - - - - - - - - - - - - - - - - -### Curate Reward -```js -steem.broadcast.curateReward(wif, curator, reward, commentAuthor, commentPermlink, function(err, result) { - console.log(err, result); -}); -``` -- - - - - - - - - - - - - - - - - - ### Custom ```js steem.broadcast.custom(wif, requiredAuths, id, data, function(err, result) { @@ -1915,13 +1894,6 @@ steem.broadcast.feedPublish(wif, publisher, exchangeRate, function(err, result) }); ``` - - - - - - - - - - - - - - - - - - -### Pow2 -```js -steem.broadcast.pow2(wif, work, newOwnerKey, props, function(err, result) { - console.log(err, result); -}); -``` -- - - - - - - - - - - - - - - - - - ### Fill Convert Request ```js steem.broadcast.fillConvertRequest(wif, owner, requestid, amountIn, amountOut, function(err, result) { @@ -2037,43 +2009,6 @@ steem.broadcast.limitOrderCreate2(wif, owner, orderid, amountToSell, exchangeRat console.log(err, result); }); ``` - -|Parameter|Description|Datatype|Notes| -|---|---|---|---| -|wif|Active private key|String|| -|owner|Account name|String|No leading @ symbol| -|orderid|User defined order identifier|Integer|Used to cancel orders| -|amountToSell|Amount to sell|String|"X.XXX ASSET" must have 3 decimal places. e.g. "25.100 SBD"| -|exchangeRate|The exchange rate|Integer|`amountToSell` is multiplied by the `exchangeRate` to have the same effect as `minToReceive`| -|fillOrKill|Fill order from current order book or kill the order|Boolean|`false` places the order into the Order Book until either canceled, filled, or the expiration time is reached| -|expiration|Time when order expires|Integer|Unit milliseconds. Zero is UNIX epoch| -|function()|Your callback|function|| - - -See also: [getOrderBook](#get-order-book), [getOpenOrders](#get-open-orders), [limitOrderCancel](#limit-order-cancel), [limitOrderCreate](#limit-order-create2) - - -- - - - - - - - - - - - - - - - - - -### Liquidity Reward -```js -steem.broadcast.liquidityReward(wif, owner, payout, function(err, result) { - console.log(err, result); -}); -``` -- - - - - - - - - - - - - - - - - - -### Pow -```js -steem.broadcast.pow(wif, worker, input, signature, work, function(err, result) { - console.log(err, result); -}); -``` -- - - - - - - - - - - - - - - - - - -### Prove Authority -```js -steem.broadcast.proveAuthority(wif, challenged, requireOwner, function(err, result) { - console.log(err, result); -}); -``` - - - - - - - - - - - - - - - - - - ### Recover Account ```js From 47d0c68e5594a60a65a82a46fdb4bd32be7290f5 Mon Sep 17 00:00:00 2001 From: DoctorLai Date: Thu, 26 Sep 2024 17:32:54 +0100 Subject: [PATCH 94/94] misleading variable name (#341) Co-authored-by: @justyy Co-authored-by: ety001 --- doc/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/README.md b/doc/README.md index c1350c84..06fda515 100644 --- a/doc/README.md +++ b/doc/README.md @@ -2444,7 +2444,7 @@ console.log(commentPermlink); - - - - - - - - - - - - - - - - - - ### Estimate Account Value ```js -var steemPower = steem.formatter.estimateAccountValue(account); +var accountValue = steem.formatter.estimateAccountValue(account); ``` - - - - - - - - - - - - - - - - - - ### Reputation