diff --git a/packages/api-mongodb-plugin/src/api/get_smart_contracts.ts b/packages/api-mongodb-plugin/src/api/get_smart_contracts.ts index 91a0ec9..d3854a8 100644 --- a/packages/api-mongodb-plugin/src/api/get_smart_contracts.ts +++ b/packages/api-mongodb-plugin/src/api/get_smart_contracts.ts @@ -1,6 +1,6 @@ import AccountsModel from '../models/account'; -const get_smart_contracts = async (query: { records_count: string }) => { +const get_smart_contracts = async (query: { records_count: number }) => { try{ let { records_count } = query; let result: object; @@ -12,7 +12,7 @@ const get_smart_contracts = async (query: { records_count: string }) => { query_gen.sort({_id: -1}); (records_count !== undefined) ? - query_gen.limit(parseInt(records_count)): query_gen.limit(100); + query_gen.limit(records_count): query_gen.limit(100); result = await query_gen.exec(); return result; diff --git a/packages/api-postgres-plugin/README.md b/packages/api-postgres-plugin/README.md index ccfa9ca..0768b30 100644 --- a/packages/api-postgres-plugin/README.md +++ b/packages/api-postgres-plugin/README.md @@ -20,13 +20,6 @@ Get the list of actions based on certain criteria: * `account_name` - string - if this value is passed then it fetches latest 100 transactions for smart contract `account_name` * `records_count` - string - Number of actions to fetch (default is 100) -### `get_all_permissions` - -Get the list of all last permissions based on the number of `records_count` to show. - -* `records_count` - string -* `account_name` - if this is passed then fetches the permission for only that `account_name` - ### `get_block_details` Get the details of the block based on its ID or number as indicated by `id_or_num` and RPC `endpoint` to fetch action payload. @@ -41,18 +34,6 @@ Get the list of blocks based on certain criteria: * `show_empty` - string - Whether to show empty blocks or not * `records_count` - string - Number of blocks to show -### get_permissions_by_public_key - -Get the list of permissions based on its public_key - -* `public_key` - string - -### `get_smart_contracts` - -Get the list of all available smart contracts based on the number of `records_count` to show. - -* `records_count` - string - ### `get_transaction_details` Get the details for a particular transaction based on its `id` and RPC `endpoint` to fetch action payload. diff --git a/packages/api-postgres-plugin/api/get_action_details.js b/packages/api-postgres-plugin/api/get_action_details.js index 60a489a..54d74fe 100644 --- a/packages/api-postgres-plugin/api/get_action_details.js +++ b/packages/api-postgres-plugin/api/get_action_details.js @@ -6,26 +6,26 @@ const get_action_details = async (query) => { let result = []; let { id, action_ordinal, endpoint, block_num } = query; id = id.toUpperCase(); - + let query_gen = ` SELECT * FROM chain.action_trace WHERE transaction_id = '${id}' AND action_ordinal = ${action_ordinal} ${(block_num !== undefined) ? `AND block_num = '${block_num}'` : ''}`; - + let promise = new Promise((resolve, reject)=>{ db.query(query_gen, "", (err, result) => { if (err) { console.error('Error executing get action details query:: ', err.stack); resolve([]); - }else{ - resolve(result.rows); - } + }else{ + resolve(result.rows); + } }) - }) + }) let resultObj = await promise; - - if(resultObj.length > 0 && resultObj[0].hasOwnProperty("transaction_id")){ + + if(resultObj.length > 0 && resultObj[0].hasOwnProperty("transaction_id")){ // Delete serialized act data from response - delete resultObj[0].act_data; + // delete resultObj[0].act_data; // Fetch action data from blockchain let blockDetailsRpcRes = await apiRpc["get_block"]({endpoint: endpoint, id_or_num: resultObj[0].block_num}); let transaction = blockDetailsRpcRes.transactions.filter(eachTrx => (eachTrx.trx.id !== undefined ? eachTrx.trx.id.toUpperCase() : eachTrx.id) === resultObj[0].transaction_id); @@ -36,9 +36,9 @@ const get_action_details = async (query) => { }); }else{ result = resultObj; - } - - return result; + } + + return result; }catch(err){ console.log("caught exception ", err) diff --git a/packages/api-postgres-plugin/api/get_action_history.js b/packages/api-postgres-plugin/api/get_action_history.js index 9a82e4a..8f75b2e 100644 --- a/packages/api-postgres-plugin/api/get_action_history.js +++ b/packages/api-postgres-plugin/api/get_action_history.js @@ -7,7 +7,7 @@ const get_action_history = async query => { const statement = ` ${account_name !== undefined ? ` - SELECT transaction_id, action_ordinal, act_account, act_name, act_data, timestamp, block_num, actor, permission + SELECT transaction_id, action_ordinal, act_account, act_name, timestamp, block_num, actor, permission FROM chain.action_trace WHERE creator_action_ordinal = 0 AND act_account = ANY('{${account_name}}') ` @@ -16,7 +16,7 @@ const get_action_history = async query => { ${account_name !== undefined && actor_name !== undefined ? `UNION` : ``} ${actor_name !== undefined ? ` - SELECT transaction_id, action_ordinal, act_account, act_name, act_data, timestamp, block_num, actor, permission + SELECT transaction_id, action_ordinal, act_account, act_name, timestamp, block_num, actor, permission FROM chain.action_trace WHERE creator_action_ordinal = 0 AND actor = ANY('{${actor_name}}') ` diff --git a/packages/api-postgres-plugin/api/get_actions.js b/packages/api-postgres-plugin/api/get_actions.js index 1f53750..c32a29e 100644 --- a/packages/api-postgres-plugin/api/get_actions.js +++ b/packages/api-postgres-plugin/api/get_actions.js @@ -5,11 +5,11 @@ const get_actions = async query => { const { account_name, records_count } = query; const limit = Math.min(parseInt(records_count) || 100, 100); const statement = ` - SELECT transaction_id, action_ordinal, act_account, act_name, act_data, timestamp, block_num, actor, permission + SELECT transaction_id, action_ordinal, act_account, act_name, timestamp, block_num, actor, permission FROM chain.action_trace WHERE creator_action_ordinal = 0 - ${account_name !== undefined ? `AND act_account = '${account_name}'` : ''} + ${account_name !== undefined ? `AND act_account = '${account_name}'` : ''} ORDER BY block_num DESC LIMIT ${limit} `; diff --git a/packages/api-postgres-plugin/api/get_actions_with_filter.js b/packages/api-postgres-plugin/api/get_actions_with_filter.js index 680d1a9..bee3e58 100644 --- a/packages/api-postgres-plugin/api/get_actions_with_filter.js +++ b/packages/api-postgres-plugin/api/get_actions_with_filter.js @@ -11,14 +11,14 @@ const get_actions_with_filter = async query => { show_data_size = 'false' } = query; const limit = Math.min(parseInt(page_size) || 100, 100); - const table = ` + var table = ` chain.action_trace WHERE ${action_filter !== undefined && account_name !== undefined - ? action_filter === 'contract' ? `creator_action_ordinal = 0 AND act_account = '${account_name}'` : - action_filter === 'signed' ? `creator_action_ordinal = 0 AND actor = '${account_name}'` : - action_filter === 'received' ? `receiver = 'eosio.token' AND act_account = 'eosio.token' AND act_name = 'transfer' AND token_to = '${account_name}'` : - action_filter === 'sent' ? `receiver = 'eosio.token' AND act_account = 'eosio.token' AND act_name = 'transfer' AND token_from = '${account_name}'` : + ? action_filter === 'contract' ? `creator_action_ordinal = 0 AND act_account = '${account_name}'` : + action_filter === 'signed' ? `creator_action_ordinal = 0 AND actor = '${account_name}'` : + // action_filter === 'received' ? `receiver = 'eosio.token' AND act_account = 'eosio.token' AND act_name = 'transfer' AND token_to = '${account_name}'` : + // action_filter === 'sent' ? `receiver = 'eosio.token' AND act_account = 'eosio.token' AND act_name = 'transfer' AND token_from = '${account_name}'` : 'transaction_id IS NOT NULL' : 'transaction_id IS NOT NULL'} ${max_rgs !== undefined @@ -33,7 +33,7 @@ const get_actions_with_filter = async query => { } `; - const statement = ` + let statement = ` SELECT transaction_id AS id, block_num, @@ -41,11 +41,7 @@ const get_actions_with_filter = async query => { act_account, act_name, actor, - receipt_global_sequence, - token_to, - token_from, - amount, - symbol + receipt_global_sequence FROM ${table} ORDER BY @@ -53,7 +49,67 @@ const get_actions_with_filter = async query => { LIMIT ${limit} `; - const count_statement = `SELECT COUNT(transaction_id) AS count FROM ${table}`; + let count_statement = `SELECT COUNT(transaction_id) AS count FROM ${table}`; + + + if(action_filter === 'received'){ + statement = ` + SELECT + chain.transfer_t.transaction_id AS id, + chain.transfer_t.block_num AS block_num, + chain.transfer_t.timestamp AS timestamp, + chain.action_trace.receiver AS receiver, + chain.action_trace.act_account AS act_account, + chain.action_trace.act_name AS act_name, + chain.action_trace.actor AS actor, + chain.action_trace.receipt_global_sequence AS receipt_global_sequence, + chain.transfer_t.token_to AS token_to, + chain.transfer_t.token_from AS token_from, + chain.transfer_t.quantity_amount as amount, + chain.transfer_t.quantity_symbol as symbol + FROM chain.transfer_t + INNER JOIN chain.action_trace ON chain.action_trace.transaction_id = chain.transfer_t.transaction_id AND chain.action_trace.action_ordinal = chain.transfer_t.action_ordinal + WHERE + receiver = 'eosio.token' AND act_account = 'eosio.token' AND act_name = 'transfer' AND actor != 'eosio' AND token_to = '${account_name}' + ORDER BY + chain.action_trace.receipt_global_sequence ${direction === 'next' ? 'DESC' : 'ASC'} + LIMIT ${limit} + ` + + count_statement = `SELECT COUNT(transaction_id) AS count FROM chain.transfer_t WHERE token_to = '${account_name}'` + } + + + if(action_filter === 'sent'){ + statement = ` + SELECT + chain.transfer_t.transaction_id AS id, + chain.transfer_t.block_num AS block_num, + chain.transfer_t.timestamp AS timestamp, + chain.action_trace.receiver AS receiver, + chain.action_trace.act_account AS act_account, + chain.action_trace.act_name AS act_name, + chain.action_trace.actor AS actor, + chain.action_trace.receipt_global_sequence AS receipt_global_sequence, + chain.transfer_t.token_to AS token_to, + chain.transfer_t.token_from AS token_from, + chain.transfer_t.quantity_amount as amount, + chain.transfer_t.quantity_symbol as symbol + FROM chain.transfer_t + INNER JOIN chain.action_trace ON chain.action_trace.transaction_id = chain.transfer_t.transaction_id AND chain.action_trace.action_ordinal = chain.transfer_t.action_ordinal + WHERE + receiver = 'eosio.token' AND act_account = 'eosio.token' AND act_name = 'transfer' AND actor != 'eosio' AND token_from = '${account_name}' + ORDER BY + chain.action_trace.receipt_global_sequence ${direction === 'next' ? 'DESC' : 'ASC'} + LIMIT ${limit} + ` + + count_statement = `SELECT COUNT(transaction_id) AS count FROM chain.transfer_t WHERE token_from = '${account_name}'` + } + + + + console.log(statement) try { const data = (await db.queryAsync(statement, '')).rows; diff --git a/packages/api-postgres-plugin/api/get_all_permissions.js b/packages/api-postgres-plugin/api/get_all_permissions.js deleted file mode 100644 index a6e5c99..0000000 --- a/packages/api-postgres-plugin/api/get_all_permissions.js +++ /dev/null @@ -1,35 +0,0 @@ -const db = require('./db'); - -const get_all_permissions = async query => { - try { - const { account_name, records_count, fetch_eosio } = query; - // records_count is 200 here for explorer project - const limit = Math.min(parseInt(records_count) || 200, 200); - - const statement = ` - (SELECT owner AS account, name AS permission, auth_keys AS public_key, last_updated - FROM chain.permission - WHERE - auth_keys::text <> '{}'::text - ${account_name !== undefined ? `AND owner = '${account_name}'` : ''} - ORDER BY block_num DESC - LIMIT ${limit}) - ${fetch_eosio === 'true' - ? ` - UNION - SELECT owner AS account, name AS permission, auth_keys AS public_key, last_updated FROM chain.permission WHERE owner='eosio' - ` - : '' - }`; - - return (await db.queryAsync(statement, '')).rows; - } catch (error) { - console.error( - 'Caught exception in get all permissions query: ', - error.stack - ); - return []; - } -}; - -module.exports = get_all_permissions; diff --git a/packages/api-postgres-plugin/api/get_blocks.js b/packages/api-postgres-plugin/api/get_blocks.js index 6c6bd5a..35cc0b5 100644 --- a/packages/api-postgres-plugin/api/get_blocks.js +++ b/packages/api-postgres-plugin/api/get_blocks.js @@ -11,8 +11,8 @@ const get_blocks = async query => { FROM chain.block_info ` : ` - SELECT * - FROM chain.received_nonempty_block + SELECT block_id, block_num, timestamp, transaction_count, producer + FROM chain.block_info where transaction_count != 0 ` } ORDER BY block_num DESC diff --git a/packages/api-postgres-plugin/api/get_permission_link.js b/packages/api-postgres-plugin/api/get_permission_link.js deleted file mode 100644 index 9dfa89a..0000000 --- a/packages/api-postgres-plugin/api/get_permission_link.js +++ /dev/null @@ -1,24 +0,0 @@ -const db = require('./db'); - -const get_permission_link = async query => { - try { - const { account_name, records_count } = query; - const limit = Math.min(parseInt(records_count) || 100, 100); - const statement = ` - SELECT account, code as contract, message_type as action_name, required_permission as permission - FROM chain.permission_link - ${account_name !== undefined ? `WHERE account = '${account_name}'` : ''} - LIMIT ${limit} - `; - - return (await db.queryAsync(statement, '')).rows; - } catch (error) { - console.error( - 'Caught exception in get permission link query: ', - error.stack - ); - return []; - } -}; - -module.exports = get_permission_link; diff --git a/packages/api-postgres-plugin/api/get_permissions_by_public_key.js b/packages/api-postgres-plugin/api/get_permissions_by_public_key.js deleted file mode 100644 index e19242b..0000000 --- a/packages/api-postgres-plugin/api/get_permissions_by_public_key.js +++ /dev/null @@ -1,24 +0,0 @@ -const db = require('./db'); - -const get_permissions_by_public_key = async query => { - try { - const { public_key, records_count } = query; - const limit = Math.min(parseInt(records_count) || 100, 100); - const statement = ` - SELECT owner AS account, name AS permission, auth_keys AS public_key, last_updated - FROM chain.permission - ${public_key !== undefined ? `WHERE permission.auth_keys::text LIKE '%${public_key}%'` : ''} - LIMIT ${limit} - `; - - return (await db.queryAsync(statement, '')).rows; - } catch (error) { - console.error( - 'Caught exception in get permissions by public key query: ', - error.stack - ); - return []; - } -}; - -module.exports = get_permissions_by_public_key; diff --git a/packages/api-postgres-plugin/api/get_smart_contracts.js b/packages/api-postgres-plugin/api/get_smart_contracts.js deleted file mode 100644 index 3955149..0000000 --- a/packages/api-postgres-plugin/api/get_smart_contracts.js +++ /dev/null @@ -1,24 +0,0 @@ -const db = require('./db'); - -const get_smart_contracts = async query => { - try { - const { smart_contract_name, records_count } = query; - const limit = Math.min(parseInt(records_count) || 100, 100); - const statement = ` - SELECT * - FROM chain.account - WHERE abi <> '' ${smart_contract_name !== undefined ? `AND name LIKE '${smart_contract_name}%'` : ''} - LIMIT ${limit} - `; - - return (await db.queryAsync(statement, '')).rows; - } catch (error) { - console.error( - 'Caught exception in get smart contracts query: ', - error.stack - ); - return []; - } -}; - -module.exports = get_smart_contracts; diff --git a/packages/api-postgres-plugin/api/get_transaction_details.js b/packages/api-postgres-plugin/api/get_transaction_details.js index f26258c..ebeef6c 100644 --- a/packages/api-postgres-plugin/api/get_transaction_details.js +++ b/packages/api-postgres-plugin/api/get_transaction_details.js @@ -7,9 +7,7 @@ const get_transaction_details = async (query) => { id = id.toUpperCase(); let result = []; let query_gen = ` - SELECT tt.*, - (SELECT ata.actor FROM chain.action_trace_authorization ata WHERE ata.block_num = tt.block_num AND ata.transaction_id = tt.id AND ata.action_ordinal=1 LIMIT 1), - (SELECT ata.permission FROM chain.action_trace_authorization ata WHERE ata.block_num = tt.block_num AND ata.transaction_id = tt.id AND ata.action_ordinal=1 LIMIT 1) + SELECT tt.* FROM chain.transaction_trace as tt WHERE id = '${id}'`; diff --git a/packages/api-postgres-plugin/api/get_transactions.js b/packages/api-postgres-plugin/api/get_transactions.js index e1c1085..62f3ee2 100644 --- a/packages/api-postgres-plugin/api/get_transactions.js +++ b/packages/api-postgres-plugin/api/get_transactions.js @@ -5,7 +5,7 @@ const get_transactions = async query => { const { records_count } = query; const limit = Math.min(parseInt(records_count) || 100, 100); const statement = ` - SELECT id, block_num, partial_expiration, status + SELECT id, block_num, transaction_expiration, status FROM chain.transaction_trace ORDER BY block_num DESC, transaction_ordinal DESC LIMIT ${limit} diff --git a/packages/api-postgres-plugin/api/get_trx_action_list.js b/packages/api-postgres-plugin/api/get_trx_action_list.js index 7ffaa3f..c94df65 100644 --- a/packages/api-postgres-plugin/api/get_trx_action_list.js +++ b/packages/api-postgres-plugin/api/get_trx_action_list.js @@ -6,7 +6,7 @@ const get_trx_action_list = async query => { const limit = Math.min(parseInt(records_count) || 100, 100); const statement = ` SELECT transaction_id AS id, block_num, timestamp, act_account, act_name, action_ordinal - FROM chain.action_trace + FROM chain.action_trace WHERE creator_action_ordinal = 0 ${account_name !== undefined ? `AND act_account = '${account_name}'` : ''} ORDER BY block_num DESC LIMIT ${limit} diff --git a/packages/api-postgres-plugin/index.d.ts b/packages/api-postgres-plugin/index.d.ts index 40f35c3..9491837 100644 --- a/packages/api-postgres-plugin/index.d.ts +++ b/packages/api-postgres-plugin/index.d.ts @@ -184,10 +184,7 @@ declare namespace Postgres { function get_action_details(query: ActionDetailsQuery): Promise; function get_actions_with_filter(query: ActionsWithFilterQuery): Promise; - function get_smart_contracts(query: SmartContractsQuery): Promise; function connectToDB(query?: DBConnectionQuery): Promise - function get_permissions_by_public_key(query: PermissionQuery): Promise; - function get_all_permissions(query: GetAllPermissionsQuery): Promise function get_permission_link(query: GetPermissionQuery): Promise } diff --git a/packages/api-postgres-plugin/index.js b/packages/api-postgres-plugin/index.js index e0411ed..0f159d7 100644 --- a/packages/api-postgres-plugin/index.js +++ b/packages/api-postgres-plugin/index.js @@ -5,14 +5,10 @@ const get_block_details = require('./api/get_block_details'); const get_transactions = require('./api/get_transactions'); const get_trx_action_list = require('./api/get_trx_action_list'); const get_transaction_details = require('./api/get_transaction_details'); -const get_all_permissions = require('./api/get_all_permissions'); -const get_smart_contracts = require('./api/get_smart_contracts'); const get_actions = require('./api/get_actions'); const get_action_history = require('./api/get_action_history'); const get_action_details = require('./api/get_action_details'); const get_actions_with_filter = require('./api/get_actions_with_filter'); -const get_permissions_by_public_key = require('./api/get_permissions_by_public_key'); -const get_permission_link = require('./api/get_permission_link'); const { connectToDB } = require('./api/db'); module.exports = { @@ -21,13 +17,9 @@ module.exports = { get_transactions, get_trx_action_list, get_transaction_details, - get_all_permissions, - get_smart_contracts, get_actions, get_action_history, get_action_details, get_actions_with_filter, - get_permissions_by_public_key, - get_permission_link, connectToDB }; diff --git a/packages/api-postgres-plugin/tests/get_action_history.js b/packages/api-postgres-plugin/tests/get_action_history.js index 69c354b..2fb0477 100644 --- a/packages/api-postgres-plugin/tests/get_action_history.js +++ b/packages/api-postgres-plugin/tests/get_action_history.js @@ -53,7 +53,7 @@ module.exports = () => { expect(action.action_ordinal).toBeDefined(); expect(action.act_account).toBeDefined(); expect(action.act_name).toBeDefined(); - expect(action.act_data).toBeDefined(); + // expect(action.act_data).toBeDefined(); expect(action.timestamp).toBeInstanceOf(Date); expect(action.block_num).toBeDefined(); expect(action.actor).toBeDefined(); diff --git a/packages/api-postgres-plugin/tests/get_actions.js b/packages/api-postgres-plugin/tests/get_actions.js index 6c31027..428cada 100644 --- a/packages/api-postgres-plugin/tests/get_actions.js +++ b/packages/api-postgres-plugin/tests/get_actions.js @@ -47,7 +47,7 @@ module.exports = () => { expect(action.action_ordinal).toBeDefined(); expect(action.act_account).toBeDefined(); expect(action.act_name).toBeDefined(); - expect(action.act_data).toBeDefined(); + // expect(action.act_data).toBeDefined(); expect(action.timestamp).toBeInstanceOf(Date); expect(action.block_num).toBeDefined(); expect(action.actor).toBeDefined(); diff --git a/packages/api-postgres-plugin/tests/get_actions_with_filter.js b/packages/api-postgres-plugin/tests/get_actions_with_filter.js index 7234e33..386b2c8 100644 --- a/packages/api-postgres-plugin/tests/get_actions_with_filter.js +++ b/packages/api-postgres-plugin/tests/get_actions_with_filter.js @@ -81,10 +81,6 @@ module.exports = () => { expect(action.act_account).toBeDefined(); expect(action.act_name).toBeDefined(); expect(action.receipt_global_sequence).toBeDefined(); - expect(action.token_to).toBeDefined(); - expect(action.token_from).toBeDefined(); - expect(action.amount).toBeDefined(); - expect(action.symbol).toBeDefined(); if (index > 0) { expect(parseInt(action.receipt_global_sequence, 10)).toBeLessThan( diff --git a/packages/api-postgres-plugin/tests/get_all_permissions.js b/packages/api-postgres-plugin/tests/get_all_permissions.js deleted file mode 100644 index bb948d8..0000000 --- a/packages/api-postgres-plugin/tests/get_all_permissions.js +++ /dev/null @@ -1,65 +0,0 @@ -const Postgres = require('../api/db'); -const get_all_permissions = require('../api/get_all_permissions'); - -const testcaseParameters = [ - [undefined, undefined, undefined], - ['eosio', undefined, undefined], - ['eosio', 100, undefined], - ['eosio', 100, 'true'], - ['sdfsdf', 100, 'true'], - ['eosio', 100000, 'true'], - ['eosio', '10', 'true'], - ['eosio', 'sdfsdf', 'true'], - ['eosio', 100, 'false'], - ['eosio', 100, 'sdfsdfsd'] -]; - -module.exports = () => { - it('when `queryAsync` fails, it should return an empty array', async done => { - const queryAsyncCall = jest - .spyOn(Postgres, 'queryAsync') - .mockRejectedValue(new Error('failed for whatever reason')); - - const permissions = await get_all_permissions({ - account_name: 'eosio', - records_count: 100, - fetch_eosio: 'true' - }); - - expect(queryAsyncCall).toBeCalledTimes(1); - expect(permissions).toBeInstanceOf(Array); - expect(permissions.length).toEqual(0); - - done(); - }); - - describe.each(testcaseParameters)( - 'account_name = %s, records_count = %i, fetch_eosio = %s', - (account_name, records_count, fetch_eosio) => { - it('format validation', async done => { - const queryAsyncCall = jest.spyOn(Postgres, 'queryAsync'); - - const permissions = await get_all_permissions({ - account_name, - records_count, - fetch_eosio - }); - - expect(queryAsyncCall).toBeCalledTimes(1); - expect(permissions).toBeInstanceOf(Array); - expect(permissions.length).toBeLessThanOrEqual( - Math.min(parseInt(records_count) || 100, 100) - ); - - permissions.forEach(permission => { - expect(permission.account).toBeDefined(); - expect(permission.permission).toBeDefined(); - expect(permission.public_key).toBeDefined(); - expect(permission.last_updated).toBeInstanceOf(Date); - }); - - done(); - }); - } - ); -}; diff --git a/packages/api-postgres-plugin/tests/get_permission_link.js b/packages/api-postgres-plugin/tests/get_permission_link.js deleted file mode 100644 index 162490b..0000000 --- a/packages/api-postgres-plugin/tests/get_permission_link.js +++ /dev/null @@ -1,59 +0,0 @@ -const Postgres = require('../api/db'); -const get_permission_link = require('../api/get_permission_link'); - -const testcaseParameters = [ - [undefined, undefined], - ['eosio', undefined], - ['eosio', 100000], - ['eosio', '10'], - ['eosio', 'sdfsdf'], - ['sdfsdf', 100] -]; - -module.exports = () => { - it('when `queryAsync` fails, it should return an empty array', async done => { - const queryAsyncCall = jest - .spyOn(Postgres, 'queryAsync') - .mockRejectedValue(new Error('failed for whatever reason')); - - const permissionLinks = await get_permission_link({ - account_name: 'eosio', - records_count: 100 - }); - - expect(queryAsyncCall).toBeCalledTimes(1); - expect(permissionLinks).toBeInstanceOf(Array); - expect(permissionLinks.length).toEqual(0); - - done(); - }); - - describe.each(testcaseParameters)( - 'account_name = %s, records_count = %i', - (account_name, records_count) => { - it('format validation', async done => { - const queryAsyncCall = jest.spyOn(Postgres, 'queryAsync'); - - const permissionLinks = await get_permission_link({ - account_name, - records_count - }); - - expect(queryAsyncCall).toBeCalledTimes(1); - expect(permissionLinks).toBeInstanceOf(Array); - expect(permissionLinks.length).toBeLessThanOrEqual( - Math.min(parseInt(records_count) || 100, 100) - ); - - permissionLinks.forEach(permissionLink => { - expect(permissionLink.account).toBeDefined(); - expect(permissionLink.contract).toBeDefined(); - expect(permissionLink.action_name).toBeDefined(); - expect(permissionLink.permission).toBeDefined(); - }); - - done(); - }); - } - ); -}; diff --git a/packages/api-postgres-plugin/tests/get_permissions_by_public_key.js b/packages/api-postgres-plugin/tests/get_permissions_by_public_key.js deleted file mode 100644 index b8615ff..0000000 --- a/packages/api-postgres-plugin/tests/get_permissions_by_public_key.js +++ /dev/null @@ -1,60 +0,0 @@ -const Postgres = require('../api/db'); -const get_permissions_by_public_key = require('../api/get_permissions_by_public_key'); - -const testcaseParameters = [ - [undefined, undefined], - ['EOS8GAuHPARBLr8xNrAGNfFfc4mTLZixrFepdTpH22Vp81SiFh94g', undefined], - ['EOS8GAuHPARBLr8xNrAGNfFfc4mTLZixrFepdTpH22Vp81SiFh94g', 100], - ['sdfsdf', 100], - ['EOS8GAuHPARBLr8xNrAGNfFfc4mTLZixrFepdTpH22Vp81SiFh94g', 100000], - ['EOS8GAuHPARBLr8xNrAGNfFfc4mTLZixrFepdTpH22Vp81SiFh94g', '10'], - ['EOS8GAuHPARBLr8xNrAGNfFfc4mTLZixrFepdTpH22Vp81SiFh94g', 'sdfsdf'] -]; - -module.exports = () => { - it('when `queryAsync` fails, it should return an empty array', async done => { - const queryAsyncCall = jest - .spyOn(Postgres, 'queryAsync') - .mockRejectedValue(new Error('failed for whatever reason')); - - const permissions = await get_permissions_by_public_key({ - public_key: 'EOS8GAuHPARBLr8xNrAGNfFfc4mTLZixrFepdTpH22Vp81SiFh94g', - records_count: 100 - }); - - expect(queryAsyncCall).toBeCalledTimes(1); - expect(permissions).toBeInstanceOf(Array); - expect(permissions.length).toEqual(0); - - done(); - }); - - describe.each(testcaseParameters)( - 'public_key = %s, records_count = %i', - (public_key, records_count) => { - it('format validation', async done => { - const queryAsyncCall = jest.spyOn(Postgres, 'queryAsync'); - - const permissions = await get_permissions_by_public_key({ - public_key, - records_count - }); - - expect(queryAsyncCall).toBeCalledTimes(1); - expect(permissions).toBeInstanceOf(Array); - expect(permissions.length).toBeLessThanOrEqual( - Math.min(parseInt(records_count) || 100, 100) - ); - - permissions.forEach(permission => { - expect(permission.account).toBeDefined(); - expect(permission.permission).toBeDefined(); - expect(permission.public_key).toBeDefined(); - expect(permission.last_updated).toBeInstanceOf(Date); - }); - - done(); - }); - } - ); -}; diff --git a/packages/api-postgres-plugin/tests/index.test.js b/packages/api-postgres-plugin/tests/index.test.js index a675b19..326da69 100644 --- a/packages/api-postgres-plugin/tests/index.test.js +++ b/packages/api-postgres-plugin/tests/index.test.js @@ -11,9 +11,6 @@ const get_actions_with_filter = require('./get_actions_with_filter'); const get_trx_action_list = require('./get_trx_action_list'); const get_transactions = require('./get_transactions'); const get_action_history = require('./get_action_history'); -const get_all_permissions = require('./get_all_permissions'); -const get_permissions_by_public_key = require('./get_permissions_by_public_key'); -const get_permission_link = require('./get_permission_link'); describe('PostgreSQL Plugin Tests', () => { beforeEach(() => jest.restoreAllMocks()); @@ -38,9 +35,6 @@ describe('PostgreSQL Plugin Tests', () => { describe('get_trx_action_list', get_trx_action_list); describe('get_transactions', get_transactions); describe('get_action_history', get_action_history); - describe('get_all_permissions', get_all_permissions); - describe('get_permissions_by_public_key', get_permissions_by_public_key); - describe('get_permission_link', get_permission_link); afterAll(() => endConnection()); }); diff --git a/packages/api-rpc/dist/api/buy_ram.js b/packages/api-rpc/dist/api/buy_ram.js index d5ff0be..9c2c377 100644 --- a/packages/api-rpc/dist/api/buy_ram.js +++ b/packages/api-rpc/dist/api/buy_ram.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,13 +35,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var eosjs_jssig_1 = require("eosjs/dist/eosjs-jssig"); var text_encoding_1 = require("text-encoding"); var fetch = require('node-fetch'); -var buy_ram = function (query) { return __awaiter(_this, void 0, void 0, function () { +var buy_ram = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, private_key, actor, permission, _a, quantity, rpc, signatureProvider, api, result, e_1; return __generator(this, function (_b) { switch (_b.label) { diff --git a/packages/api-rpc/dist/api/create_account.js b/packages/api-rpc/dist/api/create_account.js index f20318f..28140da 100644 --- a/packages/api-rpc/dist/api/create_account.js +++ b/packages/api-rpc/dist/api/create_account.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,13 +35,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var eosjs_jssig_1 = require("eosjs/dist/eosjs-jssig"); var text_encoding_1 = require("text-encoding"); var fetch = require('node-fetch'); -var create_account = function (query) { return __awaiter(_this, void 0, void 0, function () { +var create_account = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, creator_private_key, creator_account_name, creator_account_permission, new_account_name, new_account_owner_key, new_account_active_key, _a, delegate, _b, ram_bytes_buy_quantity, _c, stake_net_quantity, _d, stake_cpu_quantity, _e, initial_transfer_quantity, rpc, signatureProvider, api, actions, result, e_1; return __generator(this, function (_f) { switch (_f.label) { diff --git a/packages/api-rpc/dist/api/deploy_contract.js b/packages/api-rpc/dist/api/deploy_contract.js index 1e49d0d..4b65fbd 100644 --- a/packages/api-rpc/dist/api/deploy_contract.js +++ b/packages/api-rpc/dist/api/deploy_contract.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,13 +35,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var eosjs_jssig_1 = require("eosjs/dist/eosjs-jssig"); var text_encoding_1 = require("text-encoding"); var fetch = require('node-fetch'); -var deploy_contract = function (query) { return __awaiter(_this, void 0, void 0, function () { +var deploy_contract = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, account_name, private_key, permission, payload, rpc, signatureProvider, api, buffer, abiString, abi, abiDefinition, e_1; return __generator(this, function (_a) { switch (_a.label) { diff --git a/packages/api-rpc/dist/api/get_abi.js b/packages/api-rpc/dist/api/get_abi.js index 6f54557..9e2bcf2 100644 --- a/packages/api-rpc/dist/api/get_abi.js +++ b/packages/api-rpc/dist/api/get_abi.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,11 +35,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var fetch = require('node-fetch'); -var get_abi = function (query) { return __awaiter(_this, void 0, void 0, function () { +var get_abi = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, account_name, rpc, result, e_1; return __generator(this, function (_a) { switch (_a.label) { diff --git a/packages/api-rpc/dist/api/get_account_details.js b/packages/api-rpc/dist/api/get_account_details.js index 4c21500..f9e9f69 100644 --- a/packages/api-rpc/dist/api/get_account_details.js +++ b/packages/api-rpc/dist/api/get_account_details.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,11 +35,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var fetch = require('node-fetch'); -var get_account_details = function (query) { return __awaiter(_this, void 0, void 0, function () { +var get_account_details = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, account_name, rpc, result, e_1; return __generator(this, function (_a) { switch (_a.label) { diff --git a/packages/api-rpc/dist/api/get_all_permissions.js b/packages/api-rpc/dist/api/get_all_permissions.js new file mode 100644 index 0000000..22fc6c3 --- /dev/null +++ b/packages/api-rpc/dist/api/get_all_permissions.js @@ -0,0 +1,92 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var request = require("request"); +var get_all_permissions = function (query) { return __awaiter(void 0, void 0, void 0, function () { + var endpoint_1, account_name, records_count, limit, upper_bound, options, result, error_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 3]); + endpoint_1 = query.endpoint, account_name = query.account_name, records_count = query.records_count; + limit = Math.min(parseInt(records_count) || 200, 200); + upper_bound = ""; + // calculate the upper_bound + if (typeof account_name !== 'undefined') { + upper_bound = account_name + 'z'.repeat(12 - account_name.length); + } + options = { + "json": true, + "code": "eosio.accnts", + "scope": "eosio", + "table": "accounts", + "table_key": "", + "lower_bound": account_name, + "upper_bound": upper_bound, + "limit": limit, + "key_type": "", + "index_position": "", + "encode_type": "dec", + "reverse": false, + "show_payer": false + }; + return [4 /*yield*/, new Promise(function (resolve, reject) { + request.post({ url: endpoint_1 + "/v1/chain/get_table_rows", json: true, body: options }, function (err, resp, body) { + if (err) { + reject(err); + } + else { + // console.log("body: ", body); + resolve(body.rows); + } + }); + })]; + case 1: + result = _a.sent(); + return [2 /*return*/, result]; + case 2: + error_1 = _a.sent(); + console.error('Caught exception in get all permissions query: ', error_1.stack); + return [2 /*return*/, []]; + case 3: + ; + return [2 /*return*/]; + } + }); +}); }; +exports.default = get_all_permissions; diff --git a/packages/api-rpc/dist/api/get_block.js b/packages/api-rpc/dist/api/get_block.js index 4bc31c4..e9da9df 100644 --- a/packages/api-rpc/dist/api/get_block.js +++ b/packages/api-rpc/dist/api/get_block.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,11 +35,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var fetch = require('node-fetch'); -var get_block = function (query) { return __awaiter(_this, void 0, void 0, function () { +var get_block = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, id_or_num, rpc, result, e_1; return __generator(this, function (_a) { switch (_a.label) { diff --git a/packages/api-rpc/dist/api/get_info.js b/packages/api-rpc/dist/api/get_info.js index dad6228..b200233 100644 --- a/packages/api-rpc/dist/api/get_info.js +++ b/packages/api-rpc/dist/api/get_info.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,11 +35,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var fetch = require('node-fetch'); -var get_info = function (query) { return __awaiter(_this, void 0, void 0, function () { +var get_info = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, rpc, response, e_1; return __generator(this, function (_a) { switch (_a.label) { diff --git a/packages/api-rpc/dist/api/get_permission_link.js b/packages/api-rpc/dist/api/get_permission_link.js new file mode 100644 index 0000000..da339c9 --- /dev/null +++ b/packages/api-rpc/dist/api/get_permission_link.js @@ -0,0 +1,86 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var request = require("request"); +var get_permission_link = function (query) { return __awaiter(void 0, void 0, void 0, function () { + var endpoint_1, account_name, records_count, limit, options, req; + return __generator(this, function (_a) { + try { + // console.log("config: ", config); + console.log("query: ", query); + endpoint_1 = query.endpoint, account_name = query.account_name, records_count = query.records_count; + limit = Math.min(parseInt(records_count) || 100, 100); + options = { + "json": true, + "code": "eosio.authln", + "scope": account_name, + "table": "authlinks", + "table_key": "", + "lower_bound": "", + "upper_bound": "", + "limit": limit, + "key_type": "", + "index_position": "", + "encode_type": "dec", + "reverse": false, + "show_payer": false + }; + console.log("options: ", options); + req = new Promise(function (resolve, reject) { + request.post({ url: endpoint_1 + "/v1/chain/get_table_rows", json: true, body: options }, function (err, resp, body) { + if (err) { + reject(err); + } + else { + // console.log("body: ", body); + resolve(body.rows); + } + }); + }); + console.log("req: ", req); + return [2 /*return*/, req]; + } + catch (error) { + console.error('Caught exception in get all permissions query: ', error.stack); + return [2 /*return*/, []]; + } + ; + return [2 /*return*/]; + }); +}); }; +exports.default = get_permission_link; diff --git a/packages/api-rpc/dist/api/get_permissions_by_public_key.js b/packages/api-rpc/dist/api/get_permissions_by_public_key.js new file mode 100644 index 0000000..1850dab --- /dev/null +++ b/packages/api-rpc/dist/api/get_permissions_by_public_key.js @@ -0,0 +1,127 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var request = require("request"); +var get_permissions_by_public_key = function (query) { return __awaiter(void 0, void 0, void 0, function () { + var endpoint_1, public_key_1, records_count, limit, scopeStr, keyseg, scope, i, options, req, result; + return __generator(this, function (_a) { + try { + endpoint_1 = query.endpoint, public_key_1 = query.public_key, records_count = query.records_count; + limit = Math.min(parseInt(records_count) || 100, 100); + scopeStr = ""; + keyseg = ""; + // calculate the lower bound and upper bound + if (typeof public_key_1 !== 'undefined' && public_key_1.length >= 7) { + if (public_key_1.substr(0, 3) == "EOS") { + keyseg = public_key_1.substr(3); + } + else if (public_key_1.substr(0, 7) == "PUB_R1_" || public_key_1.substr(0, 7) == "PUB_WA_") { + keyseg = public_key_1.substr(7); + } + else { + // not supported key format + // TODO: may support PUB_K1_ by adding key format converting + keyseg = ""; + } + } + if (keyseg != "" && keyseg.length >= 8) { + scope = BigInt(0); + for (i = 0; i < 8; ++i) { + scope = (scope * BigInt(256)) + BigInt(keyseg.charCodeAt(i)); + // console.log("i: ", i, " scope: ", scope); + } + scopeStr = scope.toString(); + } + else { + // failure, the key is not recognized + return [2 /*return*/, []]; + } + options = { + "json": true, + "code": "eosio.accnts", + "scope": scopeStr, + "table": "pubkeys", + "table_key": "", + "lower_bound": "", + "upper_bound": "", + "limit": limit, + "key_type": "", + "index_position": "", + "encode_type": "dec", + "reverse": false, + "show_payer": false + }; + req = new Promise(function (resolve, reject) { + request.post({ url: endpoint_1 + "/v1/chain/get_table_rows", json: true, body: options }, function (err, resp, body) { + if (err) { + reject(err); + } + else { + // console.log("body: ", body); + resolve(body.rows); + } + }); + }); + result = req.then(function (res) { + // res[0].keyseg = "comment"; + // console.log("then result: ", res); + res = res.filter(function (value, index, array) { + return value.keypermslist.some(function (value, index, array) { + return value.key == public_key_1; + }); + }); + res = res.map(function (value, index, array) { + value.keypermslist = value.keypermslist.filter(function (value, inidex, array) { + return value.key == public_key_1; + }); + return value; + }); + // console.log("res: ", res); + return res; + }); + return [2 /*return*/, result]; + } + catch (error) { + console.error('Caught exception in get all permissions query: ', error.stack); + return [2 /*return*/, []]; + } + ; + return [2 /*return*/]; + }); +}); }; +exports.default = get_permissions_by_public_key; diff --git a/packages/api-rpc/dist/api/get_producer_schedule.js b/packages/api-rpc/dist/api/get_producer_schedule.js index 7644141..d594bb0 100644 --- a/packages/api-rpc/dist/api/get_producer_schedule.js +++ b/packages/api-rpc/dist/api/get_producer_schedule.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,11 +35,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var fetch = require('node-fetch'); -var get_producer_schedule = function (query) { return __awaiter(_this, void 0, void 0, function () { +var get_producer_schedule = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, rpc, response, e_1; return __generator(this, function (_a) { switch (_a.label) { diff --git a/packages/api-rpc/dist/api/get_producers.js b/packages/api-rpc/dist/api/get_producers.js index 30986e0..12040a3 100644 --- a/packages/api-rpc/dist/api/get_producers.js +++ b/packages/api-rpc/dist/api/get_producers.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,11 +35,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var fetch = require('node-fetch'); -var get_producers = function (query) { return __awaiter(_this, void 0, void 0, function () { +var get_producers = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, rpc, response, e_1; return __generator(this, function (_a) { switch (_a.label) { diff --git a/packages/api-rpc/dist/api/get_smart_contracts.js b/packages/api-rpc/dist/api/get_smart_contracts.js new file mode 100644 index 0000000..ce3615e --- /dev/null +++ b/packages/api-rpc/dist/api/get_smart_contracts.js @@ -0,0 +1,92 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var request = require("request"); +var get_smart_contracts = function (query) { return __awaiter(void 0, void 0, void 0, function () { + var endpoint_1, smart_contract_name, records_count, limit, upper_bound, options, result, error_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + _a.trys.push([0, 2, , 3]); + endpoint_1 = query.endpoint, smart_contract_name = query.smart_contract_name, records_count = query.records_count; + limit = Math.min(parseInt(records_count) || 100, 100); + upper_bound = ""; + // calculate the upper_bound + if (typeof smart_contract_name !== 'undefined') { + upper_bound = smart_contract_name + 'z'.repeat(12 - smart_contract_name.length); + } + options = { + "json": true, + "code": "eosio.contrs", + "scope": "eosio", + "table": "contracts", + "table_key": "", + "lower_bound": smart_contract_name, + "upper_bound": upper_bound, + "limit": limit, + "key_type": "", + "index_position": "", + "encode_type": "dec", + "reverse": false, + "show_payer": false + }; + return [4 /*yield*/, new Promise(function (resolve, reject) { + request.post({ url: endpoint_1 + "/v1/chain/get_table_rows", json: true, body: options }, function (err, resp, body) { + if (err) { + reject(err); + } + else { + // console.log("body: ", body); + resolve(body.rows); + } + }); + })]; + case 1: + result = _a.sent(); + return [2 /*return*/, result]; + case 2: + error_1 = _a.sent(); + console.error('Caught exception in get all permissions query: ', error_1.stack); + return [2 /*return*/, []]; + case 3: + ; + return [2 /*return*/]; + } + }); +}); }; +exports.default = get_smart_contracts; diff --git a/packages/api-rpc/dist/api/get_table_rows.js b/packages/api-rpc/dist/api/get_table_rows.js index f4b706b..c5c0116 100644 --- a/packages/api-rpc/dist/api/get_table_rows.js +++ b/packages/api-rpc/dist/api/get_table_rows.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,11 +35,10 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var fetch = require('node-fetch'); -var get_table_rows = function (query) { return __awaiter(_this, void 0, void 0, function () { +var get_table_rows = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, contract_name, table_name, scope_name, _a, index_position, _b, key_type, _c, encode_type, _d, upper_bound, _e, lower_bound, _f, reverse, rpc, result, e_1; return __generator(this, function (_g) { switch (_g.label) { diff --git a/packages/api-rpc/dist/api/push_action.js b/packages/api-rpc/dist/api/push_action.js index b476bab..518a2e6 100644 --- a/packages/api-rpc/dist/api/push_action.js +++ b/packages/api-rpc/dist/api/push_action.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,13 +35,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var eosjs_jssig_1 = require("eosjs/dist/eosjs-jssig"); var text_encoding_1 = require("text-encoding"); var fetch = require('node-fetch'); -var push_action = function (query) { return __awaiter(_this, void 0, void 0, function () { +var push_action = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, account_name, private_key, actor, permission, action_name, payload, rpc, signatureProvider, api, buffer, abi, abiDefinition, result, e_1; return __generator(this, function (_a) { switch (_a.label) { diff --git a/packages/api-rpc/dist/api/request_tokens.js b/packages/api-rpc/dist/api/request_tokens.js index eb77b28..20b6995 100644 --- a/packages/api-rpc/dist/api/request_tokens.js +++ b/packages/api-rpc/dist/api/request_tokens.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,7 +35,6 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var eosjs_jssig_1 = require("eosjs/dist/eosjs-jssig"); @@ -56,7 +56,7 @@ var fetch = require('node-fetch'); * @param requested_by * @returns request result */ -var request_tokens = function (query) { return __awaiter(_this, void 0, void 0, function () { +var request_tokens = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, private_key, actor, permission, _a, limit, _b, quantity, action_name, requested_from, requested_by, rpc, signatureProvider, api, result, e_1; return __generator(this, function (_c) { switch (_c.label) { diff --git a/packages/api-rpc/dist/api/sell_ram.js b/packages/api-rpc/dist/api/sell_ram.js index 18687af..141f15c 100644 --- a/packages/api-rpc/dist/api/sell_ram.js +++ b/packages/api-rpc/dist/api/sell_ram.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,13 +35,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var eosjs_jssig_1 = require("eosjs/dist/eosjs-jssig"); var text_encoding_1 = require("text-encoding"); var fetch = require('node-fetch'); -var sell_ram = function (query) { return __awaiter(_this, void 0, void 0, function () { +var sell_ram = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, private_key, actor, permission, _a, quantity, rpc, signatureProvider, api, result, e_1; return __generator(this, function (_b) { switch (_b.label) { diff --git a/packages/api-rpc/dist/api/stake_cpu.js b/packages/api-rpc/dist/api/stake_cpu.js index 2dd858e..130fef5 100644 --- a/packages/api-rpc/dist/api/stake_cpu.js +++ b/packages/api-rpc/dist/api/stake_cpu.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,13 +35,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var eosjs_jssig_1 = require("eosjs/dist/eosjs-jssig"); var text_encoding_1 = require("text-encoding"); var fetch = require('node-fetch'); -var stake_cpu = function (query) { return __awaiter(_this, void 0, void 0, function () { +var stake_cpu = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, private_key, actor, permission, _a, quantity, rpc, signatureProvider, api, result, e_1; return __generator(this, function (_b) { switch (_b.label) { diff --git a/packages/api-rpc/dist/api/stake_net.js b/packages/api-rpc/dist/api/stake_net.js index 1e6306c..534d0f0 100644 --- a/packages/api-rpc/dist/api/stake_net.js +++ b/packages/api-rpc/dist/api/stake_net.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,13 +35,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var eosjs_jssig_1 = require("eosjs/dist/eosjs-jssig"); var text_encoding_1 = require("text-encoding"); var fetch = require('node-fetch'); -var stake_net = function (query) { return __awaiter(_this, void 0, void 0, function () { +var stake_net = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, private_key, actor, permission, _a, quantity, rpc, signatureProvider, api, result, e_1; return __generator(this, function (_b) { switch (_b.label) { diff --git a/packages/api-rpc/dist/api/unstake_cpu.js b/packages/api-rpc/dist/api/unstake_cpu.js index 0eae180..aa270ab 100644 --- a/packages/api-rpc/dist/api/unstake_cpu.js +++ b/packages/api-rpc/dist/api/unstake_cpu.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,13 +35,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var eosjs_jssig_1 = require("eosjs/dist/eosjs-jssig"); var text_encoding_1 = require("text-encoding"); var fetch = require('node-fetch'); -var unstake_cpu = function (query) { return __awaiter(_this, void 0, void 0, function () { +var unstake_cpu = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, private_key, actor, permission, _a, quantity, rpc, signatureProvider, api, result, e_1; return __generator(this, function (_b) { switch (_b.label) { diff --git a/packages/api-rpc/dist/api/unstake_net.js b/packages/api-rpc/dist/api/unstake_net.js index ceccf77..58cae86 100644 --- a/packages/api-rpc/dist/api/unstake_net.js +++ b/packages/api-rpc/dist/api/unstake_net.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,13 +35,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var eosjs_jssig_1 = require("eosjs/dist/eosjs-jssig"); var text_encoding_1 = require("text-encoding"); var fetch = require('node-fetch'); -var unstake_net = function (query) { return __awaiter(_this, void 0, void 0, function () { +var unstake_net = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, private_key, actor, permission, _a, quantity, rpc, signatureProvider, api, result, e_1; return __generator(this, function (_b) { switch (_b.label) { diff --git a/packages/api-rpc/dist/api/update_auth.js b/packages/api-rpc/dist/api/update_auth.js index e3b26b1..de2d505 100644 --- a/packages/api-rpc/dist/api/update_auth.js +++ b/packages/api-rpc/dist/api/update_auth.js @@ -1,9 +1,10 @@ "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; @@ -34,13 +35,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) { if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; -var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var eosjs_1 = require("eosjs"); var eosjs_jssig_1 = require("eosjs/dist/eosjs-jssig"); var text_encoding_1 = require("text-encoding"); var fetch = require('node-fetch'); -var update_auth = function (query) { return __awaiter(_this, void 0, void 0, function () { +var update_auth = function (query) { return __awaiter(void 0, void 0, void 0, function () { var endpoint, account_name, private_key, new_key, permission, parent_1, rpc, signatureProvider, api, generatedActions, result, e_1; return __generator(this, function (_a) { switch (_a.label) { diff --git a/packages/api-rpc/dist/index.js b/packages/api-rpc/dist/index.js index 9e8cc22..c787e5a 100644 --- a/packages/api-rpc/dist/index.js +++ b/packages/api-rpc/dist/index.js @@ -21,6 +21,10 @@ var sell_ram_1 = __importDefault(require("./api/sell_ram")); var deploy_contract_1 = __importDefault(require("./api/deploy_contract")); var get_producer_schedule_1 = __importDefault(require("./api/get_producer_schedule")); var get_producers_1 = __importDefault(require("./api/get_producers")); +var get_all_permissions_1 = __importDefault(require("./api/get_all_permissions")); +var get_permissions_by_public_key_1 = __importDefault(require("./api/get_permissions_by_public_key")); +var get_permission_link_1 = __importDefault(require("./api/get_permission_link")); +var get_smart_contracts_1 = __importDefault(require("./api/get_smart_contracts")); exports.default = { get_info: get_info_1.default, create_account: create_account_1.default, @@ -39,5 +43,9 @@ exports.default = { sell_ram: sell_ram_1.default, deploy_contract: deploy_contract_1.default, get_producer_schedule: get_producer_schedule_1.default, - get_producers: get_producers_1.default + get_producers: get_producers_1.default, + get_all_permissions: get_all_permissions_1.default, + get_permissions_by_public_key: get_permissions_by_public_key_1.default, + get_permission_link: get_permission_link_1.default, + get_smart_contracts: get_smart_contracts_1.default }; diff --git a/packages/api-rpc/index.d.ts b/packages/api-rpc/index.d.ts index 209df59..59992e1 100644 --- a/packages/api-rpc/index.d.ts +++ b/packages/api-rpc/index.d.ts @@ -132,6 +132,30 @@ declare namespace Rpc { parent: string } + interface GetSmartContractsQuery { + endpoint: string, + records_count: number + } + + + interface GetSmartContractsQuery { + endpoint: string, + smart_contract_name: string, + records_count: number + } + + interface GetPermissionsByPublicKeyQuery { + endpoint: string, + public_key: string, + records_count: number + } + + interface GetPermissionLinkQuery { + endpoint: string, + account_name: string, + records_count: number + } + function get_info(query: GetInfoQuery) : Promise; function create_account(query: CreateAccountQuery): Promise; function deploy_contract(query: DeployContractQuery): Promise; @@ -148,7 +172,10 @@ declare namespace Rpc { function unstake_cpu(query: UnstakeCpuQuery): Promise; function stake_net(query: StakeNetQuery): Promise; function unstake_net(query: UnstakeNetQuery): Promise; - function update_auth(query: UpdateAuthQuery): Promise + function update_auth(query: UpdateAuthQuery): Promise; + function get_smart_contracts(query: GetSmartContractsQuery): Promise; + function get_permissions_by_public_key(query: GetPermissionsByPublicKeyQuery): Promise + function get_permission_link(query: GetPermissionLinkQuery): Promise /** * request_tokens diff --git a/packages/api-rpc/src/api/create_account.ts b/packages/api-rpc/src/api/create_account.ts index 0ee8969..0c97079 100644 --- a/packages/api-rpc/src/api/create_account.ts +++ b/packages/api-rpc/src/api/create_account.ts @@ -18,6 +18,7 @@ const create_account = async (query: { initial_transfer_quantity?: string }) => { try { + console.log("000000000",query) let { endpoint, private_key: creator_private_key, diff --git a/packages/api-rpc/src/api/get_all_permissions.ts b/packages/api-rpc/src/api/get_all_permissions.ts new file mode 100644 index 0000000..a6a917f --- /dev/null +++ b/packages/api-rpc/src/api/get_all_permissions.ts @@ -0,0 +1,60 @@ +var request = require("request"); + +const get_all_permissions = async (query: { + endpoint: string, + account_name: string, + records_count: string +}) => { + try { + // console.log("config: ", config); + // console.log("query: ", query); + + const { endpoint, account_name, records_count } = query; + const limit = Math.min(parseInt(records_count) || 200, 200); + + var upper_bound = ""; + // calculate the upper_bound + if (typeof account_name !== 'undefined') { + upper_bound = account_name + 'z'.repeat(12 - account_name.length); + } + + var options = { + "json": true, + "code": "eosio.accnts", + "scope": "eosio", + "table": "accounts", + "table_key": "", + "lower_bound": account_name, + "upper_bound": upper_bound, + "limit": limit, + "key_type": "", + "index_position": "", + "encode_type": "dec", + "reverse": false, + "show_payer": false + }; + + // console.log("options: ", options); + + const result = await new Promise(function (resolve, reject) { + request.post({ url: endpoint + "/v1/chain/get_table_rows", json: true, body: options }, function (err: any, resp: any, body: any) { + if (err) { + reject(err); + } else { + // console.log("body: ", body); + resolve(body.rows); + } + }); + }); + + return result; + } catch (error) { + console.error( + 'Caught exception in get all permissions query: ', + error.stack + ); + return []; + }; +}; + +export default get_all_permissions; diff --git a/packages/api-rpc/src/api/get_permission_link.ts b/packages/api-rpc/src/api/get_permission_link.ts new file mode 100644 index 0000000..495d8c1 --- /dev/null +++ b/packages/api-rpc/src/api/get_permission_link.ts @@ -0,0 +1,56 @@ +var request = require("request"); + +const get_permission_link = async (query: { + endpoint: string, + account_name: string, + records_count: number +}) => { + try { + // console.log("config: ", config); + console.log("query: ", query); + const { endpoint, account_name, records_count } = query; + + const limit = Math.min(records_count || 100, 100); + + var options = { + "json": true, + "code": "eosio.authln", + "scope": account_name, + "table": "authlinks", + "table_key": "", + "lower_bound": "", + "upper_bound": "", + "limit": limit, + "key_type": "", + "index_position": "", + "encode_type": "dec", + "reverse": false, + "show_payer": false + }; + + console.log("options: ", options); + + var req = new Promise(function (resolve, reject) { + request.post({ url: endpoint + "/v1/chain/get_table_rows", json: true, body: options }, function (err: any, resp: any, body: any) { + if (err) { + reject(err); + } else { + // console.log("body: ", body); + resolve(body.rows); + } + }); + }); + + console.log("req: ", req); + + return req; + } catch (error) { + console.error( + 'Caught exception in get all permissions query: ', + error.stack + ); + return []; + }; +}; + +export default get_permission_link; diff --git a/packages/api-rpc/src/api/get_permissions_by_public_key.ts b/packages/api-rpc/src/api/get_permissions_by_public_key.ts new file mode 100644 index 0000000..e15737a --- /dev/null +++ b/packages/api-rpc/src/api/get_permissions_by_public_key.ts @@ -0,0 +1,103 @@ +var request = require("request"); + +const get_permissions_by_public_key = async (query: { + endpoint: string, + public_key: string, + records_count: number +}) => { + try { + // console.log("query: ", query); + const { endpoint, public_key, records_count } = query; + + const limit = Math.min(records_count || 100, 100); + + var scopeStr = ""; + var keyseg = ""; + + // calculate the lower bound and upper bound + if (typeof public_key !== 'undefined' && public_key.length >= 7) { + if (public_key.substr(0, 3) == "EOS") { + keyseg = public_key.substr(3); + } else if (public_key.substr(0, 7) == "PUB_R1_" || public_key.substr(0, 7) == "PUB_WA_") { + keyseg = public_key.substr(7); + } else { + // not supported key format + // TODO: may support PUB_K1_ by adding key format converting + keyseg = ""; + } + } + + if (keyseg != "" && keyseg.length >= 8) { + // get the keyseg 8 bytes, convert it to integer + var scope = BigInt(0); + for (var i = 0; i < 8; ++i) { + scope = (scope * BigInt(256)) + BigInt(keyseg.charCodeAt(i)); + // console.log("i: ", i, " scope: ", scope); + } + scopeStr = scope.toString(); + } else { + // failure, the key is not recognized + return []; + } + + var options = { + "json": true, + "code": "eosio.accnts", + "scope": scopeStr, + "table": "pubkeys", + "table_key": "", + "lower_bound": "", + "upper_bound": "", + "limit": limit, + "key_type": "", + "index_position": "", + "encode_type": "dec", + "reverse": false, + "show_payer": false + }; + + // console.log("options: ", options); + + var req = new Promise(function (resolve, reject) { + request.post({ url: endpoint + "/v1/chain/get_table_rows", json: true, body: options }, function (err: any, resp: any, body: any) { + if (err) { + reject(err); + } else { + // console.log("body: ", body); + resolve(body.rows); + } + }); + }); + + var result = req.then(function(res: any) { + // res[0].keyseg = "comment"; + // console.log("then result: ", res); + res = res.filter(function(value: any, index: any, array: any) { + return value.keypermslist.some(function(value: any, index: any, array: any) { + return value.key == public_key; + }); + }); + + res = res.map(function(value: any, index: any, array: any) { + value.keypermslist = value.keypermslist.filter(function(value: any, inidex: any, array: any) { + return value.key == public_key; + }); + return value; + }); + + // console.log("res: ", res); + + return res; + }); + + return result; + } catch (error) { + console.error( + 'Caught exception in get all permissions query: ', + error.stack + ); + return []; + }; +}; + +export default get_permissions_by_public_key; diff --git a/packages/api-rpc/src/api/get_smart_contracts.ts b/packages/api-rpc/src/api/get_smart_contracts.ts new file mode 100644 index 0000000..60e314f --- /dev/null +++ b/packages/api-rpc/src/api/get_smart_contracts.ts @@ -0,0 +1,60 @@ +var request = require("request"); + +const get_smart_contracts = async (query: { + endpoint: string, + smart_contract_name: string, + records_count: string +}) => { + try { + // console.log("config: ", config); + // console.log("query: ", query); + + const { endpoint, smart_contract_name, records_count } = query; + const limit = Math.min(parseInt(records_count) || 100, 100); + + var upper_bound = ""; + // calculate the upper_bound + if (typeof smart_contract_name !== 'undefined') { + upper_bound = smart_contract_name + 'z'.repeat(12 - smart_contract_name.length); + } + + var options = { + "json": true, + "code": "eosio.contrs", + "scope": "eosio", + "table": "contracts", + "table_key": "", + "lower_bound": smart_contract_name, + "upper_bound": upper_bound, + "limit": limit, + "key_type": "", + "index_position": "", + "encode_type": "dec", + "reverse": false, + "show_payer": false + }; + + // console.log("options: ", options); + + const result = await new Promise(function (resolve, reject) { + request.post({ url: endpoint + "/v1/chain/get_table_rows", json: true, body: options }, function (err: any, resp: any, body: any) { + if (err) { + reject(err); + } else { + // console.log("body: ", body); + resolve(body.rows); + } + }); + }); + + return result; + } catch (error) { + console.error( + 'Caught exception in get all permissions query: ', + error.stack + ); + return []; + }; +}; + +export default get_smart_contracts; diff --git a/packages/api-rpc/src/index.ts b/packages/api-rpc/src/index.ts index 0ca3195..889e9c8 100644 --- a/packages/api-rpc/src/index.ts +++ b/packages/api-rpc/src/index.ts @@ -16,6 +16,10 @@ import sell_ram from './api/sell_ram'; import deploy_contract from './api/deploy_contract'; import get_producer_schedule from './api/get_producer_schedule'; import get_producers from './api/get_producers'; +import get_all_permissions from './api/get_all_permissions'; +import get_permissions_by_public_key from './api/get_permissions_by_public_key'; +import get_permission_link from './api/get_permission_link'; +import get_smart_contracts from './api/get_smart_contracts'; export default { get_info, @@ -35,5 +39,9 @@ export default { sell_ram, deploy_contract, get_producer_schedule, - get_producers + get_producers, + get_all_permissions, + get_permissions_by_public_key, + get_permission_link, + get_smart_contracts } diff --git a/packages/docker-ship/remove_ship_docker.sh b/packages/docker-ship/remove_ship_docker.sh index 016ee17..58dc7a3 100755 --- a/packages/docker-ship/remove_ship_docker.sh +++ b/packages/docker-ship/remove_ship_docker.sh @@ -15,7 +15,7 @@ fi echo "waiting for docker to stop" # check if mongodb container is running if [ "$(docker ps -q -f name=^$SHIP_CONTAINER_NAME$)" ]; then - docker stop $SHIP_CONTAINER_NAME + docker stop $SHIP_CONTAINER_NAME sleep 10 fi @@ -24,7 +24,7 @@ if [ "$(docker ps -q -a -f name=^$SHIP_CONTAINER_NAME$)" ]; then fi if [ "$(docker ps -q -f name=^$POSTGRES_CONTAINER_NAME$)" ]; then - docker stop $POSTGRES_CONTAINER_NAME + docker stop $POSTGRES_CONTAINER_NAME sleep 10 fi