From 473daf612144461921d4720e1827f4f1c55cf7f9 Mon Sep 17 00:00:00 2001 From: Adrien M <adrien@lol-academy.net> Date: Tue, 23 Aug 2016 07:05:52 +0200 Subject: [PATCH] fixed browserification - ignored websocket in package --- examples/browser.html | 6 +- examples/steem.js | 1075 +++++++++++++++++++++++++++++++++++++++++ examples/steem.min.js | 2 +- lib/api.js | 13 +- lib/browser.js | 4 +- package.json | 6 +- 6 files changed, 1095 insertions(+), 11 deletions(-) create mode 100644 examples/steem.js diff --git a/examples/browser.html b/examples/browser.html index 2759f5d..c6683f1 100644 --- a/examples/browser.html +++ b/examples/browser.html @@ -6,12 +6,12 @@ </head> <body> -<script src="https://cdn.steemjs.com/lib/steem.min.js"></script> +<script src="steem.min.js"></script> <script> -steem.getAccounts(['ned', 'dan'], function(err, response){ +steem.api.getAccounts(['ned', 'dan'], function(err, response){ console.log(err, response); }); </script> </body> -</html> \ No newline at end of file +</html> diff --git a/examples/steem.js b/examples/steem.js new file mode 100644 index 0000000..a2bf239 --- /dev/null +++ b/examples/steem.js @@ -0,0 +1,1075 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ +var isNode = require('detect-node'); +if (isNode) + var WebSocketNode = require('ws'); + +var Steem = { + url: 'wss://steemit.com/wspa', + apiIds: { + 'database_api': 0, + 'login_api': 1, + 'follow_api': 2, + 'network_broadcast_api': 4 + }, + id: 0, + reqs: [], + isOpen: false, + isReady: false +}; + +Steem.setWebSocket = function(url) { + this.url = url; +}; + +Steem.init = function(callback) { + if (!this.isReady) { + if (isNode) { + this.ws = new WebSocketNode(this.url); + this.ws.setMaxListeners(0); + } else + this.ws = new WebSocket(this.url); + this.ws.addEventListener('close', function() { + this.isOpen = false; + }.bind(this)); + this.isReady = true; + } + if (!this.isOpen) { + this.ws.addEventListener('open', function() { + this.isOpen = true; + this.getApiByName('database_api', function() {}); + this.getApiByName('login_api', function() {}); + this.getApiByName('follow_api', function() {}); + this.getApiByName('network_broadcast_api', function() {}); + callback(); + }.bind(this)); + } else { + callback(); + } +}; + +Steem.iterate = function() { + this.id++; + var id = this.id; + this.reqs.push(id); + return id; +}; + +Steem.getApi = function(api, callback) { + if (this.apiIds[api] || this.apiIds[api] === 0) { + callback('', this.apiIds[api]); + } else { + this.getApiByName(api, function(err, result) { + this.apiIds[api] = result; + callback('', result); + }.bind(this)); + } +}; + +Steem.send = function(api, data, callback) { + data.id = data.id || 0; + data.params = data.params || []; + this.init(function(){ + var call = {}; + call.id = data.id; + call.method = 'call'; + call.params = [this.apiIds[api], data.method, data.params]; + this.ws.send(JSON.stringify(call)); + }.bind(this)); + + this.ws.addEventListener('message', function(msg) { + var data = JSON.parse(msg.data); + var err = (data.error && data.error.data && data.error.data.stack)? data.error.data.stack : ''; + callback(err, data); + }.bind(this)); + + this.ws.addEventListener('error', function(error){ + callback(error, null); + }); +}; + + +// [database_api] + +// Subscriptions + +/* set_subscribe_callback */ +Steem.setSubscribeCallback = function(cb, clearFilter, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'set_subscribe_callback', + 'params': [cb, clearFilter] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* set_pending_transaction_callback */ +Steem.setPendingTransactionCallback = function(cb, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'set_pending_transaction_callback', + 'params': [cb] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* set_block_applied_callback */ +Steem.setBlockAppliedCallback = function(cb, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'set_block_applied_callback', + 'params': [cb] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* cancel_all_subscriptions */ +Steem.cancelAllSubscriptions = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'cancel_all_subscriptions' + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// tags + +/* get_trending_tags */ +Steem.getTrendingTags = function(afterTag, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_trending_tags', + 'params': [afterTag, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_discussions_by_trending */ +Steem.getDiscussionsByTrending = function(query, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_discussions_by_trending', + 'params': [query] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_discussions_by_created */ +Steem.getDiscussionsByCreated = function(query, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_discussions_by_created', + 'params': [query] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_discussions_by_active */ +Steem.getDiscussionsByActive = function(query, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_discussions_by_active', + 'params': [query] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_discussions_by_cashout */ +Steem.getDiscussionsByCashout = function(query, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_discussions_by_cashout', + 'params': [query] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_discussions_by_payout */ +Steem.getDiscussionsByPayout = function(query, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_discussions_by_payout', + 'params': [query] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_discussions_by_votes */ +Steem.getDiscussionsByVotes = function(query, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_discussions_by_votes', + 'params': [query] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_discussions_by_children */ +Steem.getDiscussionsByChildren = function(query, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_discussions_by_children', + 'params': [query] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_discussions_by_hot */ +Steem.getDiscussionsByHot = function(query, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_discussions_by_hot', + 'params': [query] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_discussions_by_feed */ +Steem.getDiscussionsByFeed = function(query, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_discussions_by_feed', + 'params': [query] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +// Blocks and transactions + +/* get_block_header */ +Steem.getBlockHeader = function(blockNum, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_block_header', + 'params': [blockNum] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_block */ +Steem.getBlock = function(blockNum, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_block', + 'params': [blockNum] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_state */ +Steem.getState = function(path, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_state', + 'params': [path] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_trending_categories */ +Steem.getTrendingCategories = function(after, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_trending_categories', + 'params': [after, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_best_categories */ +Steem.getBestCategories = function(after, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_best_categories', + 'params': [after, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_active_categories */ +Steem.getActiveCategories = function(after, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_active_categories', + 'params': [after, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_recent_categories */ +Steem.getRecentCategories = function(after, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_recent_categories', + 'params': [after, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// Globals + +/* get_config */ +Steem.getConfig = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_config', + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_dynamic_global_properties */ +Steem.getDynamicGlobalProperties = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_dynamic_global_properties' + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_chain_properties */ +Steem.getChainProperties = function(after, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_chain_properties' + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_feed_history */ +Steem.getFeedHistory = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_feed_history' + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_current_median_history_price */ +Steem.getCurrentMedianHistoryPrice = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_current_median_history_price' + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_witness_schedule */ +Steem.getWitnessSchedule = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_recent_categories', + 'params': [after, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_hardfork_version */ +Steem.getHardforkVersion = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_hardfork_version' + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_next_scheduled_hardfork */ +Steem.getNextScheduledHardfork = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_next_scheduled_hardfork' + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// Keys + +/* get_key_references */ +Steem.getKeyReferences = function(key, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_key_references', + 'params': [key] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// Accounts + +/* get_accounts */ +Steem.getAccounts = function(names, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_accounts', + 'params': [names] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_account_references */ +Steem.getAccountReferences = function(accountId , callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_account_references', + 'params': [accountId] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* lookup_account_names */ +Steem.lookupAccountNames = function(accountNames, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'lookup_account_names', + 'params': [accountNames] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* lookup_accounts */ +Steem.lookupAccounts = function(lowerBoundName, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'lookup_accounts', + 'params': [lowerBoundName, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_account_count */ +Steem.getAccountCount = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_account_count' + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_conversion_requests */ +Steem.getConversionRequests = function(accountName, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_conversion_requests', + 'params': [accountName] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_account_history */ +Steem.getAccountHistory = function(account, from, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_account_history', + 'params': [account, from, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_owner_history */ +Steem.getOwnerHistory = function(account, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_owner_history', + 'params': [account] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_recovery_request */ +Steem.getRecoveryRequest = function(account, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_recovery_request', + 'params': [account] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// Market + +/* get_order_book */ +Steem.getOrderBook = function(limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'getOrderBook', + 'params': [limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_open_orders */ +Steem.getOpenOrders = function(owner, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_open_orders', + 'params': [owner] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_liquidity_queue */ +Steem.getLiquidityQueue = function(startAccount, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_liquidity_queue', + 'params': [startAccount, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// Authority / validation + +/* get_transaction_hex */ +Steem.getTransactionHex = function(trx, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_transaction_hex', + 'params': [trx] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_transaction */ +Steem.getTransaction = function(trxId, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_transaction', + 'params': [trxId] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_required_signatures */ +Steem.getRequiredSignatures = function(trx, availableKeys, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_required_signatures', + 'params': [trx, availableKeys] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_potential_signatures */ +Steem.getPotentialSignatures = function(trx, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_potential_signatures', + 'params': [trx] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* verify_authority */ +Steem.verifyAuthority = function(trx, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'verify_authority', + 'params': [trx] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* verify_account_authority */ +Steem.verifyAccountAuthority = function(nameOrId, signers, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'verify_account_authority', + 'params': [nameOrId, signers] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// votes + +/* get_active_votes */ +Steem.getActiveVotes = function(author, permlink, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_active_votes', + 'params': [author, permlink] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_account_votes */ +Steem.getAccountVotes = function(voter, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_account_votes', + 'params': [voter] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// content + +/* get_content */ +Steem.getContent = function(author, permlink, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_content', + 'params': [author, permlink] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_content_replies */ +Steem.getContentReplies = function(parent, parentPermlink, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_content_replies', + 'params': [parent, parentPermlink] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_discussions_by_author_before_date */ +Steem.getDiscussionsByAuthorBeforeDate = function(author, startPermlink, beforeDate, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_discussions_by_author_before_date', + 'params': [author, startPermlink, beforeDate, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_replies_by_last_update */ +Steem.getRepliesByLastUpdate = function(startAuthor, startPermlink, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_replies_by_last_update', + 'params': [startAuthor, startPermlink, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// Witnesses + +/* get_witnesses */ +Steem.getWitnesses = function(witnessIds, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_witnesses', + 'params': [witnessIds] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_witness_by_account */ +Steem.getWitnessByAccount = function(accountName, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_witness_by_account', + 'params': [accountName] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_witnesses_by_vote */ +Steem.getWitnessesByVote = function(from, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_witnesses_by_vote', + 'params': [from, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* lookup_witness_accounts */ +Steem.lookupWitnessAccounts = function(lowerBoundName, limit, callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'lookup_witness_accounts', + 'params': [lowerBoundName, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_witness_count */ +Steem.getWitnessCount = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_witness_count' + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_active_witnesses */ +Steem.getActiveWitnesses = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_active_witnesses' + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_miner_queue */ +Steem.getMinerQueue = function(callback) { + var iterator = this.iterate(); + this.send('database_api', { + 'id': iterator, + 'method': 'get_miner_queue' + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// [login_api] + +/* login */ +Steem.login = function(username, password, callback) { + var iterator = this.iterate(); + this.send('login_api', { + 'id': iterator, + 'method': 'login', + 'params': [username, password] + }, function(err, data) { + if (iterator == data.id) { + this.getApiByName('network_broadcast_api', function() {}); + callback(err, data.result); + } + }.bind(this)); +}; + +/* get_api_by_name */ +Steem.getApiByName = function(apiName, callback) { + var iterator = this.iterate(); + this.send('login_api', { + 'id': iterator, + 'method': 'get_api_by_name', + 'params': [apiName] + }, function(err, data) { + if (iterator == data.id) { + this.apiIds[apiName] = data.result; + callback(err, data.result); + } + }.bind(this)); +}; + + +// [follow_api] + +/* get_followers */ +Steem.getFollowers = function(following, startFollower, followType, limit, callback) { + var iterator = this.iterate(); + this.send('follow_api', { + 'id': iterator, + 'method': 'get_followers', + 'params': [following, startFollower, followType, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* get_following */ +Steem.getFollowing = function(follower, startFollowing, followType, limit, callback) { + var iterator = this.iterate(); + this.send('follow_api', { + 'id': iterator, + 'method': 'get_following', + 'params': [follower, startFollowing, followType, limit] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// [network_broadcast_api] + +/* broadcast_transaction */ +Steem.broadcastTransaction = function(trx, callback) { + var iterator = this.iterate(); + this.send('network_broadcast_api', { + 'id': iterator, + 'method': 'broadcast_transaction', + 'params': [trx] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* broadcast_transaction_synchronous */ +Steem.broadcastTransactionSynchronous = function(trx , callback) { + var iterator = this.iterate(); + this.send('network_broadcast_api', { + 'id': iterator, + 'method': 'broadcast_transaction_synchronous', + 'params': [trx] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* broadcast_block */ +Steem.broadcastBlock = function(b, callback) { + var iterator = this.iterate(); + this.send('network_broadcast_api', { + 'id': iterator, + 'method': 'broadcast_block', + 'params': [b] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + +/* broadcast_transaction_with_callback */ +Steem.broadcastTransactionWithCallback = function(confirmationCallback, trx, callback) { + var iterator = this.iterate(); + this.send('network_broadcast_api', { + 'id': iterator, + 'method': 'broadcast_transaction_with_callback', + 'params': [confirmationCallback, trx] + }, function(err, data) { + if (iterator == data.id) callback(err, data.result); + }); +}; + + +// [Stream] + +Steem.streamBlockNumber = function(callback) { + var current = ''; + var self = this; + setInterval(function() { + self.getDynamicGlobalProperties(function(err, result) { + var blockId = result.head_block_number; + if (blockId != current) { + current = blockId; + callback(null, current); + } + }); + }, 200); +}; + +Steem.streamBlock = function(callback) { + var current = ''; + var last = ''; + var self = this; + this.streamBlockNumber(function(err, id) { + current = id; + if (current != last) { + last = current; + self.getBlock(current, function(err, result) { + callback(null, result); + }); + } + }); +}; + +Steem.streamTransactions = function(callback) { + this.streamBlock(function(err, result) { + if (!!result) { + result.transactions.forEach(function(transaction) { + callback(null, transaction); + }); + } + }) +}; + +Steem.streamOperations = function(callback) { + this.streamBlock(function(err, result) { + if (!!result) { + result.transactions.forEach(function(transaction) { + transaction.operations.forEach(function (operation) { + callback(null, operation); + }); + }); + } + }) +}; + + +module.exports = Steem; + +},{"detect-node":4,"ws":5}],2:[function(require,module,exports){ +steem = { + api: require('./api'), + formatter: require('./formatter'), +}; + +},{"./api":1,"./formatter":3}],3:[function(require,module,exports){ +module.exports = { + reputation: function (reputation) { + if (reputation == null) return reputation; + reputation = parseInt(reputation); + var rep = String(reputation); + var neg = rep.charAt(0) === '-'; + rep = neg ? rep.substring(1) : rep; + var str = rep; + var leadingDigits = parseInt(str.substring(0, 4)); + var log = Math.log(leadingDigits) / Math.log(10); + var n = str.length - 1; + var 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; + }, + vestToSteem: function(vestingShares, totalVestingShares, totalVestingFundSteem) { + return parseFloat(totalVestingFundSteem) * (parseFloat(vestingShares) / parseFloat(totalVestingShares)); + }, + sanitizePermlink: function(permlink) { + permlink = permlink.replace(/_|\s|\./g, '-') + permlink = permlink.replace(/[^\w-]/g, '') + return permlink.toLowerCase() + }, + derivePermlink: function(title, parent_permlink) { + var permlink = '' + if (parent_permlink){ + permlink += 're-' + permlink += parent_permlink + permlink += '-' + permlink += (new Date()).getTime() + return permlink; + } + else return this.sanitizePermlink(title) + }, + amount: function(amount, asset) { + // maybe improve this + return amount.toFixed(3) + ' ' + asset; + } +}; + +},{}],4:[function(require,module,exports){ +(function (global){ +module.exports = false; + +// Only Node.JS has a process variable that is of [[Class]] process +try { + module.exports = Object.prototype.toString.call(global.process) === '[object process]' +} catch(e) {} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],5:[function(require,module,exports){ + +},{}]},{},[2]); diff --git a/examples/steem.min.js b/examples/steem.min.js index 53e0906..2644dbb 100644 --- a/examples/steem.min.js +++ b/examples/steem.min.js @@ -1 +1 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){var Steem=require("./steem.js");steem=new Steem},{"./steem.js":2}],2:[function(require,module,exports){var Steem=function(url){this.url=url||"wss://steemit.com/wspa";this.apiIds={database_api:0,login_api:1,follow_api:2,network_broadcast_api:4};this.ws=new WebSocket(this.url);this.id=0;this.reqs=[];this.isOpen=false;this.ws.addEventListener("close",function(){this.isOpen=false}.bind(this))};Steem.prototype.open=function(callback){if(!this.isOpen){this.ws.addEventListener("open",function(){this.isOpen=true;callback()}.bind(this))}else{callback()}};Steem.prototype.iterate=function(){this.id++;var id=this.id;this.reqs.push(id);return id};Steem.prototype.getApi=function(api,callback){if(this.apiIds[api]||this.apiIds[api]===0){callback("",this.apiIds[api])}else{this.getApiByName(api,function(err,result){this.apiIds[api]=result;callback("",result)}.bind(this))}};Steem.prototype.send=function(api,data,callback){data.id=data.id||0;data.params=data.params||[];this.open(function(){var call={};call.id=data.id;call.method="call";call.params=[this.apiIds[api],data.method,data.params];this.ws.send(JSON.stringify(call))}.bind(this));this.ws.addEventListener("message",function(msg){var data=JSON.parse(msg.data);var err=data.error&&data.error.data&&data.error.data.stack?data.error.data.stack:"";callback(err,data)}.bind(this));this.ws.addEventListener("error",function(error){callback(error,null)})};Steem.prototype.setSubscribeCallback=function(cb,clearFilter,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"set_subscribe_callback",params:[cb,clearFilter]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.setPendingTransactionCallback=function(cb,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"set_pending_transaction_callback",params:[cb]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.setBlockAppliedCallback=function(cb,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"set_block_applied_callback",params:[cb]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.cancelAllSubscriptions=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"cancel_all_subscriptions"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getTrendingTags=function(afterTag,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_trending_tags",params:[afterTag,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getDiscussionsByTrending=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_trending",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getDiscussionsByCreated=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_created",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getDiscussionsByActive=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_active",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getDiscussionsByCashout=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_cashout",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getDiscussionsByPayout=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_payout",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getDiscussionsByVotes=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_votes",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getDiscussionsByChildren=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_children",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getDiscussionsByHot=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_hot",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getDiscussionsByFeed=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_feed",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getBlockHeader=function(blockNum,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_block_header",params:[blockNum]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getBlock=function(blockNum,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_block",params:[blockNum]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getState=function(path,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_state",params:[path]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getTrendingCategories=function(after,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_trending_categories",params:[after,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getBestCategories=function(after,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_best_categories",params:[after,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getActiveCategories=function(after,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_active_categories",params:[after,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getRecentCategories=function(after,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_recent_categories",params:[after,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getConfig=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_config"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getDynamicGlobalProperties=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_dynamic_global_properties"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getChainProperties=function(after,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_chain_properties"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getFeedHistory=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_feed_history"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getCurrentMedianHistoryPrice=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_current_median_history_price"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getWitnessSchedule=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_recent_categories",params:[after,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getHardforkVersion=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_hardfork_version"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getNextScheduledHardfork=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_next_scheduled_hardfork"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getKeyReferences=function(key,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_key_references",params:[key]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getAccounts=function(names,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_accounts",params:[names]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getAccountReferences=function(accountId,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_account_references",params:[accountId]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.lookupAccountNames=function(accountNames,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"lookup_account_names",params:[accountNames]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.lookupAccounts=function(lowerBoundName,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"lookup_accounts",params:[lowerBoundName,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getAccountCount=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_account_count"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getConversionRequests=function(accountName,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_conversion_requests",params:[accountName]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getAccountHistory=function(account,from,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_account_history",params:[account,from,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getOwnerHistory=function(account,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_owner_history",params:[account]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getRecoveryRequest=function(account,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_recovery_request",params:[account]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getOrderBook=function(limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"getOrderBook",params:[limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getOpenOrders=function(owner,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_open_orders",params:[owner]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getLiquidityQueue=function(startAccount,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_liquidity_queue",params:[startAccount,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getTransactionHex=function(trx,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_transaction_hex",params:[trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getTransaction=function(trxId,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_transaction",params:[trxId]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getRequiredSignatures=function(trx,availableKeys,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_required_signatures",params:[trx,availableKeys]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getPotentialSignatures=function(trx,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_potential_signatures",params:[trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.verifyAuthority=function(trx,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"verify_authority",params:[trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.verifyAccountAuthority=function(nameOrId,signers,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"verify_account_authority",params:[nameOrId,signers]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getActiveVotes=function(author,permlink,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_active_votes",params:[author,permlink]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getAccountVotes=function(voter,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_account_votes",params:[voter]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getContent=function(author,permlink,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_content",params:[author,permlink]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getContentReplies=function(parent,parentPermlink,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_content_replies",params:[parent,parentPermlink]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getDiscussionsByAuthorBeforeDate=function(author,startPermlink,beforeDate,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_author_before_date",params:[author,startPermlink,beforeDate,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getRepliesByLastUpdate=function(startAuthor,startPermlink,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_replies_by_last_update",params:[startAuthor,startPermlink,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getWitnesses=function(witnessIds,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_witnesses",params:[witnessIds]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getWitnessByAccount=function(accountName,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_witness_by_account",params:[accountName]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getWitnessesByVote=function(from,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_witnesses_by_vote",params:[from,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.lookupWitnessAccounts=function(lowerBoundName,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"lookup_witness_accounts",params:[lowerBoundName,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getWitnessCount=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_witness_count"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getActiveWitnesses=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_active_witnesses"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getMinerQueue=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_miner_queue"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.login=function(username,password,callback){var iterator=this.iterate();this.send("login_api",{id:iterator,method:"login",params:[username,password]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getApiByName=function(apiName,callback){var iterator=this.iterate();this.send("login_api",{id:iterator,method:"get_api_by_name",params:[apiName]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getFollowers=function(following,startFollower,followType,limit,callback){var iterator=this.iterate();this.send("follow_api",{id:iterator,method:"get_followers",params:[following,startFollower,followType,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.getFollowing=function(follower,startFollowing,followType,limit,callback){var iterator=this.iterate();this.send("follow_api",{id:iterator,method:"get_following",params:[follower,startFollowing,followType,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.broadcastTransaction=function(trx,callback){var iterator=this.iterate();this.send("network_broadcast_api",{id:iterator,method:"broadcast_transaction",params:[trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.broadcastTransactionSynchronous=function(trx,callback){var iterator=this.iterate();this.send("network_broadcast_api",{id:iterator,method:"broadcast_transaction_synchronous",params:[trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.broadcastBlock=function(b,callback){var iterator=this.iterate();this.send("network_broadcast_api",{id:iterator,method:"broadcast_block",params:[b]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.broadcastTransactionWithCallback=function(confirmationCallback,trx,callback){var iterator=this.iterate();this.send("network_broadcast_api",{id:iterator,method:"broadcast_transaction_with_callback",params:[confirmationCallback,trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.prototype.streamBlockNumber=function(callback){var current="";var self=this;setInterval(function(){self.getDynamicGlobalProperties(function(err,result){var blockId=result.head_block_number;if(blockId!=current){current=blockId;callback(null,current)}})},200)};Steem.prototype.streamBlock=function(callback){var current="";var last="";var self=this;this.streamBlockNumber(function(err,id){current=id;if(current!=last){last=current;self.getBlock(current,function(err,result){callback(null,result)})}})};Steem.prototype.streamTransactions=function(callback){this.streamBlock(function(err,result){if(!!result){result.transactions.forEach(function(transaction){callback(null,transaction)})}})};Steem.prototype.streamOperations=function(callback){this.streamBlock(function(err,result){if(!!result){result.transactions.forEach(function(transaction){transaction.operations.forEach(function(operation){callback(null,operation)})})}})};module.exports=Steem},{}]},{},[1]); +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){var isNode=require("detect-node");if(isNode)var WebSocketNode=require("ws");var Steem={url:"wss://steemit.com/wspa",apiIds:{database_api:0,login_api:1,follow_api:2,network_broadcast_api:4},id:0,reqs:[],isOpen:false,isReady:false};Steem.setWebSocket=function(url){this.url=url};Steem.init=function(callback){if(!this.isReady){if(isNode){this.ws=new WebSocketNode(this.url);this.ws.setMaxListeners(0)}else this.ws=new WebSocket(this.url);this.ws.addEventListener("close",function(){this.isOpen=false}.bind(this));this.isReady=true}if(!this.isOpen){this.ws.addEventListener("open",function(){this.isOpen=true;this.getApiByName("database_api",function(){});this.getApiByName("login_api",function(){});this.getApiByName("follow_api",function(){});this.getApiByName("network_broadcast_api",function(){});callback()}.bind(this))}else{callback()}};Steem.iterate=function(){this.id++;var id=this.id;this.reqs.push(id);return id};Steem.getApi=function(api,callback){if(this.apiIds[api]||this.apiIds[api]===0){callback("",this.apiIds[api])}else{this.getApiByName(api,function(err,result){this.apiIds[api]=result;callback("",result)}.bind(this))}};Steem.send=function(api,data,callback){data.id=data.id||0;data.params=data.params||[];this.init(function(){var call={};call.id=data.id;call.method="call";call.params=[this.apiIds[api],data.method,data.params];this.ws.send(JSON.stringify(call))}.bind(this));this.ws.addEventListener("message",function(msg){var data=JSON.parse(msg.data);var err=data.error&&data.error.data&&data.error.data.stack?data.error.data.stack:"";callback(err,data)}.bind(this));this.ws.addEventListener("error",function(error){callback(error,null)})};Steem.setSubscribeCallback=function(cb,clearFilter,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"set_subscribe_callback",params:[cb,clearFilter]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.setPendingTransactionCallback=function(cb,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"set_pending_transaction_callback",params:[cb]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.setBlockAppliedCallback=function(cb,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"set_block_applied_callback",params:[cb]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.cancelAllSubscriptions=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"cancel_all_subscriptions"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getTrendingTags=function(afterTag,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_trending_tags",params:[afterTag,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getDiscussionsByTrending=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_trending",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getDiscussionsByCreated=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_created",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getDiscussionsByActive=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_active",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getDiscussionsByCashout=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_cashout",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getDiscussionsByPayout=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_payout",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getDiscussionsByVotes=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_votes",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getDiscussionsByChildren=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_children",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getDiscussionsByHot=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_hot",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getDiscussionsByFeed=function(query,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_feed",params:[query]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getBlockHeader=function(blockNum,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_block_header",params:[blockNum]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getBlock=function(blockNum,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_block",params:[blockNum]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getState=function(path,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_state",params:[path]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getTrendingCategories=function(after,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_trending_categories",params:[after,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getBestCategories=function(after,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_best_categories",params:[after,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getActiveCategories=function(after,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_active_categories",params:[after,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getRecentCategories=function(after,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_recent_categories",params:[after,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getConfig=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_config"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getDynamicGlobalProperties=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_dynamic_global_properties"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getChainProperties=function(after,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_chain_properties"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getFeedHistory=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_feed_history"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getCurrentMedianHistoryPrice=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_current_median_history_price"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getWitnessSchedule=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_recent_categories",params:[after,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getHardforkVersion=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_hardfork_version"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getNextScheduledHardfork=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_next_scheduled_hardfork"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getKeyReferences=function(key,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_key_references",params:[key]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getAccounts=function(names,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_accounts",params:[names]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getAccountReferences=function(accountId,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_account_references",params:[accountId]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.lookupAccountNames=function(accountNames,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"lookup_account_names",params:[accountNames]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.lookupAccounts=function(lowerBoundName,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"lookup_accounts",params:[lowerBoundName,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getAccountCount=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_account_count"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getConversionRequests=function(accountName,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_conversion_requests",params:[accountName]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getAccountHistory=function(account,from,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_account_history",params:[account,from,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getOwnerHistory=function(account,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_owner_history",params:[account]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getRecoveryRequest=function(account,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_recovery_request",params:[account]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getOrderBook=function(limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"getOrderBook",params:[limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getOpenOrders=function(owner,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_open_orders",params:[owner]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getLiquidityQueue=function(startAccount,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_liquidity_queue",params:[startAccount,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getTransactionHex=function(trx,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_transaction_hex",params:[trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getTransaction=function(trxId,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_transaction",params:[trxId]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getRequiredSignatures=function(trx,availableKeys,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_required_signatures",params:[trx,availableKeys]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getPotentialSignatures=function(trx,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_potential_signatures",params:[trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.verifyAuthority=function(trx,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"verify_authority",params:[trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.verifyAccountAuthority=function(nameOrId,signers,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"verify_account_authority",params:[nameOrId,signers]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getActiveVotes=function(author,permlink,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_active_votes",params:[author,permlink]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getAccountVotes=function(voter,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_account_votes",params:[voter]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getContent=function(author,permlink,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_content",params:[author,permlink]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getContentReplies=function(parent,parentPermlink,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_content_replies",params:[parent,parentPermlink]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getDiscussionsByAuthorBeforeDate=function(author,startPermlink,beforeDate,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_discussions_by_author_before_date",params:[author,startPermlink,beforeDate,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getRepliesByLastUpdate=function(startAuthor,startPermlink,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_replies_by_last_update",params:[startAuthor,startPermlink,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getWitnesses=function(witnessIds,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_witnesses",params:[witnessIds]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getWitnessByAccount=function(accountName,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_witness_by_account",params:[accountName]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getWitnessesByVote=function(from,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_witnesses_by_vote",params:[from,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.lookupWitnessAccounts=function(lowerBoundName,limit,callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"lookup_witness_accounts",params:[lowerBoundName,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getWitnessCount=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_witness_count"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getActiveWitnesses=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_active_witnesses"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getMinerQueue=function(callback){var iterator=this.iterate();this.send("database_api",{id:iterator,method:"get_miner_queue"},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.login=function(username,password,callback){var iterator=this.iterate();this.send("login_api",{id:iterator,method:"login",params:[username,password]},function(err,data){if(iterator==data.id){this.getApiByName("network_broadcast_api",function(){});callback(err,data.result)}}.bind(this))};Steem.getApiByName=function(apiName,callback){var iterator=this.iterate();this.send("login_api",{id:iterator,method:"get_api_by_name",params:[apiName]},function(err,data){if(iterator==data.id){this.apiIds[apiName]=data.result;callback(err,data.result)}}.bind(this))};Steem.getFollowers=function(following,startFollower,followType,limit,callback){var iterator=this.iterate();this.send("follow_api",{id:iterator,method:"get_followers",params:[following,startFollower,followType,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.getFollowing=function(follower,startFollowing,followType,limit,callback){var iterator=this.iterate();this.send("follow_api",{id:iterator,method:"get_following",params:[follower,startFollowing,followType,limit]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.broadcastTransaction=function(trx,callback){var iterator=this.iterate();this.send("network_broadcast_api",{id:iterator,method:"broadcast_transaction",params:[trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.broadcastTransactionSynchronous=function(trx,callback){var iterator=this.iterate();this.send("network_broadcast_api",{id:iterator,method:"broadcast_transaction_synchronous",params:[trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.broadcastBlock=function(b,callback){var iterator=this.iterate();this.send("network_broadcast_api",{id:iterator,method:"broadcast_block",params:[b]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.broadcastTransactionWithCallback=function(confirmationCallback,trx,callback){var iterator=this.iterate();this.send("network_broadcast_api",{id:iterator,method:"broadcast_transaction_with_callback",params:[confirmationCallback,trx]},function(err,data){if(iterator==data.id)callback(err,data.result)})};Steem.streamBlockNumber=function(callback){var current="";var self=this;setInterval(function(){self.getDynamicGlobalProperties(function(err,result){var blockId=result.head_block_number;if(blockId!=current){current=blockId;callback(null,current)}})},200)};Steem.streamBlock=function(callback){var current="";var last="";var self=this;this.streamBlockNumber(function(err,id){current=id;if(current!=last){last=current;self.getBlock(current,function(err,result){callback(null,result)})}})};Steem.streamTransactions=function(callback){this.streamBlock(function(err,result){if(!!result){result.transactions.forEach(function(transaction){callback(null,transaction)})}})};Steem.streamOperations=function(callback){this.streamBlock(function(err,result){if(!!result){result.transactions.forEach(function(transaction){transaction.operations.forEach(function(operation){callback(null,operation)})})}})};module.exports=Steem},{"detect-node":4,ws:5}],2:[function(require,module,exports){steem={api:require("./api"),formatter:require("./formatter")}},{"./api":1,"./formatter":3}],3:[function(require,module,exports){module.exports={reputation:function(reputation){if(reputation==null)return reputation;reputation=parseInt(reputation);var rep=String(reputation);var neg=rep.charAt(0)==="-";rep=neg?rep.substring(1):rep;var str=rep;var leadingDigits=parseInt(str.substring(0,4));var log=Math.log(leadingDigits)/Math.log(10);var n=str.length-1;var 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},vestToSteem:function(vestingShares,totalVestingShares,totalVestingFundSteem){return parseFloat(totalVestingFundSteem)*(parseFloat(vestingShares)/parseFloat(totalVestingShares))},sanitizePermlink:function(permlink){permlink=permlink.replace(/_|\s|\./g,"-");permlink=permlink.replace(/[^\w-]/g,"");return permlink.toLowerCase()},derivePermlink:function(title,parent_permlink){var permlink="";if(parent_permlink){permlink+="re-";permlink+=parent_permlink;permlink+="-";permlink+=(new Date).getTime();return permlink}else return this.sanitizePermlink(title)},amount:function(amount,asset){return amount.toFixed(3)+" "+asset}}},{}],4:[function(require,module,exports){(function(global){module.exports=false;try{module.exports=Object.prototype.toString.call(global.process)==="[object process]"}catch(e){}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],5:[function(require,module,exports){},{}]},{},[2]); \ No newline at end of file diff --git a/lib/api.js b/lib/api.js index 04e1b7a..0d70cf6 100644 --- a/lib/api.js +++ b/lib/api.js @@ -1,4 +1,6 @@ -var WebSocket = require('ws'); +var isNode = require('detect-node'); +if (isNode) + var WebSocketNode = require('ws'); var Steem = { url: 'wss://steemit.com/wspa', @@ -20,8 +22,11 @@ Steem.setWebSocket = function(url) { Steem.init = function(callback) { if (!this.isReady) { - this.ws = new WebSocket(this.url); - this.ws.setMaxListeners(0); + if (isNode) { + this.ws = new WebSocketNode(this.url); + this.ws.setMaxListeners(0); + } else + this.ws = new WebSocket(this.url); this.ws.addEventListener('close', function() { this.isOpen = false; }.bind(this)); @@ -1001,4 +1006,4 @@ Steem.streamOperations = function(callback) { }; -module.exports = Steem; \ No newline at end of file +module.exports = Steem; diff --git a/lib/browser.js b/lib/browser.js index 8ecce55..8033a59 100644 --- a/lib/browser.js +++ b/lib/browser.js @@ -1,4 +1,4 @@ -module.exports = { +steem = { api: require('./api'), formatter: require('./formatter'), -}; \ No newline at end of file +}; diff --git a/package.json b/package.json index 3a0d821..cd174bc 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,10 @@ "main": "index.js", "scripts": { "test": "node test.js", - "build": "browserify lib/browser.js -o | uglifyjs > lib/steem.min.js && browserify lib/browser.js -o | uglifyjs > examples/steem.min.js" + "build": "browserify lib/browser.js -o examples/steem.js && uglifyjs examples/steem.js -o examples/steem.min.js" + }, + "browser": { + "ws": false }, "repository": { "type": "git", @@ -24,6 +27,7 @@ }, "homepage": "https://github.com/adcpm/steem#readme", "dependencies": { + "detect-node": "^2.0.3", "moment": "^2.14.1", "steemauth": "0.0.4", "ws": "^1.1.1" -- GitLab