From 99e6edfcb23b24818db2a3bbf5c49f447b57ec62 Mon Sep 17 00:00:00 2001 From: Eric Ma Date: Tue, 16 Jun 2020 16:07:33 +0800 Subject: [PATCH 01/21] Add new API and new API impl --- .../api-rpc/src/api/get_all_permissions.ts | 58 ++++++++++ .../src/api/get_permissions_by_public_key.ts | 100 ++++++++++++++++++ .../api-rpc/src/api/get_smart_contracts.ts | 58 ++++++++++ packages/api-rpc/src/index.ts | 8 +- 4 files changed, 223 insertions(+), 1 deletion(-) create mode 100644 packages/api-rpc/src/api/get_all_permissions.ts create mode 100644 packages/api-rpc/src/api/get_permissions_by_public_key.ts create mode 100644 packages/api-rpc/src/api/get_smart_contracts.ts 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..8d3ea91 --- /dev/null +++ b/packages/api-rpc/src/api/get_all_permissions.ts @@ -0,0 +1,58 @@ +var request = require("request"); + +const config = require('./configuration').config; + +const get_all_permissions = async query => { + try { + // console.log("config: ", config); + // console.log("query: ", query); + + const { account_name, records_count, fetch_eosio } = 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: config.endpoint + "/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); + } + }); + }); + + return result; + } catch (error) { + console.error( + 'Caught exception in get all permissions query: ', + error.stack + ); + return []; + }; +}; + +module.exports = get_all_permissions; \ No newline at end of file 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..2321c99 --- /dev/null +++ b/packages/api-rpc/src/api/get_permissions_by_public_key.ts @@ -0,0 +1,100 @@ +var request = require("request"); + +const config = require('./configuration').config; + +const get_permissions_by_public_key = async query => { + try { + // console.log("config: ", config); + // console.log("query: ", query); + const { public_key, records_count } = query; + + const limit = Math.min(parseInt(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 + 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: config.endpoint + "/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; + }); + }); + + res = res.map(function(value, index, array) { + value.keypermslist = value.keypermslist.filter(function(value, inidex, array) { + return value.key == public_key; + }); + return value; + }); + + return res; + }); + + return result; + } catch (error) { + console.error( + 'Caught exception in get all permissions query: ', + error.stack + ); + return []; + }; +}; + +module.exports = 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..242a672 --- /dev/null +++ b/packages/api-rpc/src/api/get_smart_contracts.ts @@ -0,0 +1,58 @@ +var request = require("request"); + +const config = require('./configuration').config; + +const get_smart_contracts = async query => { + try { + // console.log("config: ", config); + // console.log("query: ", query); + + const { 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: config.endpoint + "/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); + } + }); + }); + + return result; + } catch (error) { + console.error( + 'Caught exception in get all permissions query: ', + error.stack + ); + return []; + }; +}; + +module.exports = get_smart_contracts; diff --git a/packages/api-rpc/src/index.ts b/packages/api-rpc/src/index.ts index 0ca3195..df35008 100644 --- a/packages/api-rpc/src/index.ts +++ b/packages/api-rpc/src/index.ts @@ -16,6 +16,9 @@ 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_smart_contracts from './api/get_smart_contracts'; export default { get_info, @@ -35,5 +38,8 @@ export default { sell_ram, deploy_contract, get_producer_schedule, - get_producers + get_producers, + get_all_permissions, + get_permissions_by_public_key, + get_smart_contracts } From ed2c6c100c0da7dd08eda70ce983985a685f3697 Mon Sep 17 00:00:00 2001 From: Eric Ma Date: Wed, 17 Jun 2020 16:35:26 +0800 Subject: [PATCH 02/21] api-rpc: get endpoint from query parameter --- packages/api-rpc/src/api/get_all_permissions.ts | 8 +++----- packages/api-rpc/src/api/get_permissions_by_public_key.ts | 6 ++---- packages/api-rpc/src/api/get_smart_contracts.ts | 6 ++---- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/packages/api-rpc/src/api/get_all_permissions.ts b/packages/api-rpc/src/api/get_all_permissions.ts index 8d3ea91..7ab38d2 100644 --- a/packages/api-rpc/src/api/get_all_permissions.ts +++ b/packages/api-rpc/src/api/get_all_permissions.ts @@ -1,13 +1,11 @@ var request = require("request"); -const config = require('./configuration').config; - const get_all_permissions = async query => { try { // console.log("config: ", config); // console.log("query: ", query); - const { account_name, records_count, fetch_eosio } = query; + const { endpoint, account_name, records_count } = query; const limit = Math.min(parseInt(records_count) || 200, 200); var upper_bound = ""; @@ -35,7 +33,7 @@ const get_all_permissions = async query => { // console.log("options: ", options); const result = await new Promise(function (resolve, reject) { - request.post({ url: config.endpoint + "/v1/chain/get_table_rows", json: true, body: options }, function (err, resp, body) { + request.post({ url: endpoint + "/v1/chain/get_table_rows", json: true, body: options }, function (err, resp, body) { if (err) { reject(err); } else { @@ -55,4 +53,4 @@ const get_all_permissions = async query => { }; }; -module.exports = get_all_permissions; \ No newline at end of file +module.exports = get_all_permissions; 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 index 2321c99..f4d036a 100644 --- a/packages/api-rpc/src/api/get_permissions_by_public_key.ts +++ b/packages/api-rpc/src/api/get_permissions_by_public_key.ts @@ -1,12 +1,10 @@ var request = require("request"); -const config = require('./configuration').config; - const get_permissions_by_public_key = async query => { try { // console.log("config: ", config); // console.log("query: ", query); - const { public_key, records_count } = query; + const { endpoint, public_key, records_count } = query; const limit = Math.min(parseInt(records_count) || 100, 100); @@ -58,7 +56,7 @@ const get_permissions_by_public_key = async query => { console.log("options: ", options); var req = new Promise(function (resolve, reject) { - request.post({ url: config.endpoint + "/v1/chain/get_table_rows", json: true, body: options }, function (err, resp, body) { + request.post({ url: endpoint + "/v1/chain/get_table_rows", json: true, body: options }, function (err, resp, body) { if (err) { reject(err); } else { diff --git a/packages/api-rpc/src/api/get_smart_contracts.ts b/packages/api-rpc/src/api/get_smart_contracts.ts index 242a672..b0046ce 100644 --- a/packages/api-rpc/src/api/get_smart_contracts.ts +++ b/packages/api-rpc/src/api/get_smart_contracts.ts @@ -1,13 +1,11 @@ var request = require("request"); -const config = require('./configuration').config; - const get_smart_contracts = async query => { try { // console.log("config: ", config); // console.log("query: ", query); - const { smart_contract_name, records_count } = query; + const { endpoint, smart_contract_name, records_count } = query; const limit = Math.min(parseInt(records_count) || 100, 100); var upper_bound = ""; @@ -35,7 +33,7 @@ const get_smart_contracts = async query => { // console.log("options: ", options); const result = await new Promise(function (resolve, reject) { - request.post({ url: config.endpoint + "/v1/chain/get_table_rows", json: true, body: options }, function (err, resp, body) { + request.post({ url: endpoint + "/v1/chain/get_table_rows", json: true, body: options }, function (err, resp, body) { if (err) { reject(err); } else { From a4be72c1e988db21126f6d5bbfa40612c8b1b00e Mon Sep 17 00:00:00 2001 From: Eric Ma Date: Wed, 17 Jun 2020 16:55:35 +0800 Subject: [PATCH 03/21] Delete old APIs from api-postgres-plugin --- packages/api-postgres-plugin/README.md | 19 ------ .../api/get_all_permissions.js | 35 ---------- .../api/get_permissions_by_public_key.js | 24 ------- .../api/get_smart_contracts.js | 24 ------- packages/api-postgres-plugin/index.d.ts | 3 - packages/api-postgres-plugin/index.js | 6 -- .../tests/get_all_permissions.js | 65 ------------------- .../tests/get_permissions_by_public_key.js | 60 ----------------- .../api-postgres-plugin/tests/index.test.js | 4 -- 9 files changed, 240 deletions(-) delete mode 100644 packages/api-postgres-plugin/api/get_all_permissions.js delete mode 100644 packages/api-postgres-plugin/api/get_permissions_by_public_key.js delete mode 100644 packages/api-postgres-plugin/api/get_smart_contracts.js delete mode 100644 packages/api-postgres-plugin/tests/get_all_permissions.js delete mode 100644 packages/api-postgres-plugin/tests/get_permissions_by_public_key.js 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_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_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/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..3a2f701 100644 --- a/packages/api-postgres-plugin/index.js +++ b/packages/api-postgres-plugin/index.js @@ -5,13 +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'); @@ -21,13 +18,10 @@ 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_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_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..62b1a2a 100644 --- a/packages/api-postgres-plugin/tests/index.test.js +++ b/packages/api-postgres-plugin/tests/index.test.js @@ -11,8 +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', () => { @@ -38,8 +36,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()); From eaaf8aebaaf0f84321d8ffe17065f62d627327fc Mon Sep 17 00:00:00 2001 From: Eric Ma Date: Thu, 18 Jun 2020 16:58:38 +0800 Subject: [PATCH 04/21] Added get_permission_link RPC call --- .../api/get_permission_link.js | 24 -------- packages/api-postgres-plugin/index.js | 2 - .../tests/get_permission_link.js | 59 ------------------- .../api-postgres-plugin/tests/index.test.js | 2 - .../api-rpc/src/api/get_permission_link.ts | 50 ++++++++++++++++ packages/api-rpc/src/index.ts | 2 + 6 files changed, 52 insertions(+), 87 deletions(-) delete mode 100644 packages/api-postgres-plugin/api/get_permission_link.js delete mode 100644 packages/api-postgres-plugin/tests/get_permission_link.js create mode 100644 packages/api-rpc/src/api/get_permission_link.ts 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/index.js b/packages/api-postgres-plugin/index.js index 3a2f701..0f159d7 100644 --- a/packages/api-postgres-plugin/index.js +++ b/packages/api-postgres-plugin/index.js @@ -9,7 +9,6 @@ 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_permission_link = require('./api/get_permission_link'); const { connectToDB } = require('./api/db'); module.exports = { @@ -22,6 +21,5 @@ module.exports = { get_action_history, get_action_details, get_actions_with_filter, - get_permission_link, connectToDB }; 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/index.test.js b/packages/api-postgres-plugin/tests/index.test.js index 62b1a2a..326da69 100644 --- a/packages/api-postgres-plugin/tests/index.test.js +++ b/packages/api-postgres-plugin/tests/index.test.js @@ -11,7 +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_permission_link = require('./get_permission_link'); describe('PostgreSQL Plugin Tests', () => { beforeEach(() => jest.restoreAllMocks()); @@ -36,7 +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_permission_link', get_permission_link); afterAll(() => endConnection()); }); 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..4b5d874 --- /dev/null +++ b/packages/api-rpc/src/api/get_permission_link.ts @@ -0,0 +1,50 @@ +var request = require("request"); + +const get_permission_link = async query => { + try { + // console.log("config: ", config); + // console.log("query: ", query); + const { endpoint, account_name, records_count } = query; + + const limit = Math.min(parseInt(records_count) || 100, 100); + + var options = { + "json": true, + "code": "eosio.authlink", + "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, resp, body) { + if (err) { + reject(err); + } else { + // console.log("body: ", body); + resolve(body.rows); + } + }); + }); + + return req; + } catch (error) { + console.error( + 'Caught exception in get all permissions query: ', + error.stack + ); + return []; + }; +}; + +module.exports = get_permission_link; diff --git a/packages/api-rpc/src/index.ts b/packages/api-rpc/src/index.ts index df35008..889e9c8 100644 --- a/packages/api-rpc/src/index.ts +++ b/packages/api-rpc/src/index.ts @@ -18,6 +18,7 @@ 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 { @@ -41,5 +42,6 @@ export default { get_producers, get_all_permissions, get_permissions_by_public_key, + get_permission_link, get_smart_contracts } From 6058a4dc02a418cc1f551e8124179ec1604aef4f Mon Sep 17 00:00:00 2001 From: Eric Ma Date: Fri, 19 Jun 2020 15:27:22 +0800 Subject: [PATCH 05/21] Improved TS code quality --- packages/api-rpc/src/api/get_all_permissions.ts | 8 ++++++-- .../api-rpc/src/api/get_permissions_by_public_key.ts | 10 +++++++--- packages/api-rpc/src/api/get_smart_contracts.ts | 8 ++++++-- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/api-rpc/src/api/get_all_permissions.ts b/packages/api-rpc/src/api/get_all_permissions.ts index 7ab38d2..3a57a37 100644 --- a/packages/api-rpc/src/api/get_all_permissions.ts +++ b/packages/api-rpc/src/api/get_all_permissions.ts @@ -1,6 +1,10 @@ var request = require("request"); -const get_all_permissions = async query => { +const get_all_permissions = async (query: { + endpoint: string, + account_name: string, + records_count: string +}) => { try { // console.log("config: ", config); // console.log("query: ", query); @@ -53,4 +57,4 @@ const get_all_permissions = async query => { }; }; -module.exports = get_all_permissions; +export default get_all_permissions; 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 index f4d036a..ed7adec 100644 --- a/packages/api-rpc/src/api/get_permissions_by_public_key.ts +++ b/packages/api-rpc/src/api/get_permissions_by_public_key.ts @@ -1,6 +1,10 @@ var request = require("request"); -const get_permissions_by_public_key = async query => { +const get_permissions_by_public_key = async (query: { + endpoint: string, + public_key: string, + records_count: string +}) => { try { // console.log("config: ", config); // console.log("query: ", query); @@ -26,7 +30,7 @@ const get_permissions_by_public_key = async query => { if (keyseg != "" && keyseg.length >= 8) { // get the keyseg 8 bytes, convert it to integer - scope = BigInt(0); + 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); @@ -95,4 +99,4 @@ const get_permissions_by_public_key = async query => { }; }; -module.exports = get_permissions_by_public_key; +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 index b0046ce..a893f5d 100644 --- a/packages/api-rpc/src/api/get_smart_contracts.ts +++ b/packages/api-rpc/src/api/get_smart_contracts.ts @@ -1,6 +1,10 @@ var request = require("request"); -const get_smart_contracts = async query => { +const get_smart_contracts = async (query: { + endpoint: string, + smart_contract_name: string, + records_count: string +}) => { try { // console.log("config: ", config); // console.log("query: ", query); @@ -53,4 +57,4 @@ const get_smart_contracts = async query => { }; }; -module.exports = get_smart_contracts; +export default get_smart_contracts; From 15ff87f5b83581fff57b676c1e650ff07965fa06 Mon Sep 17 00:00:00 2001 From: Eric Ma Date: Fri, 19 Jun 2020 16:24:57 +0800 Subject: [PATCH 06/21] Rebuild api-rpc --- packages/api-rpc/dist/api/buy_ram.js | 6 +- packages/api-rpc/dist/api/create_account.js | 6 +- packages/api-rpc/dist/api/deploy_contract.js | 6 +- packages/api-rpc/dist/api/get_abi.js | 6 +- .../api-rpc/dist/api/get_account_details.js | 6 +- .../api-rpc/dist/api/get_all_permissions.js | 92 +++++++++++++ packages/api-rpc/dist/api/get_block.js | 6 +- packages/api-rpc/dist/api/get_info.js | 6 +- .../api-rpc/dist/api/get_permission_link.js | 83 ++++++++++++ .../dist/api/get_permissions_by_public_key.js | 127 ++++++++++++++++++ .../api-rpc/dist/api/get_producer_schedule.js | 6 +- packages/api-rpc/dist/api/get_producers.js | 6 +- .../api-rpc/dist/api/get_smart_contracts.js | 92 +++++++++++++ packages/api-rpc/dist/api/get_table_rows.js | 6 +- packages/api-rpc/dist/api/push_action.js | 6 +- packages/api-rpc/dist/api/request_tokens.js | 6 +- packages/api-rpc/dist/api/sell_ram.js | 6 +- packages/api-rpc/dist/api/stake_cpu.js | 6 +- packages/api-rpc/dist/api/stake_net.js | 6 +- packages/api-rpc/dist/api/unstake_cpu.js | 6 +- packages/api-rpc/dist/api/unstake_net.js | 6 +- packages/api-rpc/dist/api/update_auth.js | 6 +- packages/api-rpc/dist/index.js | 10 +- packages/api-rpc/index.d.ts | 7 + .../api-rpc/src/api/get_all_permissions.ts | 2 +- .../api-rpc/src/api/get_permission_link.ts | 11 +- .../src/api/get_permissions_by_public_key.ts | 12 +- .../api-rpc/src/api/get_smart_contracts.ts | 2 +- 28 files changed, 480 insertions(+), 66 deletions(-) create mode 100644 packages/api-rpc/dist/api/get_all_permissions.js create mode 100644 packages/api-rpc/dist/api/get_permission_link.js create mode 100644 packages/api-rpc/dist/api/get_permissions_by_public_key.js create mode 100644 packages/api-rpc/dist/api/get_smart_contracts.js 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..debdd08 --- /dev/null +++ b/packages/api-rpc/dist/api/get_permission_link.js @@ -0,0 +1,83 @@ +"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 { + 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.authlink", + "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); + } + }); + }); + 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..bfff574 --- /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 + }; + 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); + } + }); + }); + 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; + }); + 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..103d7f6 100644 --- a/packages/api-rpc/index.d.ts +++ b/packages/api-rpc/index.d.ts @@ -132,6 +132,12 @@ declare namespace Rpc { parent: string } + interface GetPermissionLinkQuery { + endpoint: string, + account_name: string, + records_count: string + } + function get_info(query: GetInfoQuery) : Promise; function create_account(query: CreateAccountQuery): Promise; function deploy_contract(query: DeployContractQuery): Promise; @@ -140,6 +146,7 @@ declare namespace Rpc { function get_block(query: GetBlockQuery): Promise; function get_producer_schedule(query: GetInfoQuery): Promise; function get_producers(query: GetInfoQuery): Promise; + function get_permission_link(query: GetPermissionLinkQuery): Promise; function get_table_rows(query: GetTableRowsQuery): Promise function push_action(query: PushActionQuery): Promise; function buy_ram(query: BuyRamQuery): Promise; diff --git a/packages/api-rpc/src/api/get_all_permissions.ts b/packages/api-rpc/src/api/get_all_permissions.ts index 3a57a37..a6a917f 100644 --- a/packages/api-rpc/src/api/get_all_permissions.ts +++ b/packages/api-rpc/src/api/get_all_permissions.ts @@ -37,7 +37,7 @@ const get_all_permissions = async (query: { // 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, resp, body) { + 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 { diff --git a/packages/api-rpc/src/api/get_permission_link.ts b/packages/api-rpc/src/api/get_permission_link.ts index 4b5d874..c537f55 100644 --- a/packages/api-rpc/src/api/get_permission_link.ts +++ b/packages/api-rpc/src/api/get_permission_link.ts @@ -1,6 +1,10 @@ var request = require("request"); -const get_permission_link = async query => { +const get_permission_link = async (query: { + endpoint: string, + account_name: string, + records_count: string +}) => { try { // console.log("config: ", config); // console.log("query: ", query); @@ -27,7 +31,7 @@ const get_permission_link = async query => { 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, resp, body) { + 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 { @@ -47,4 +51,5 @@ const get_permission_link = async query => { }; }; -module.exports = get_permission_link; +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 index ed7adec..0b68b00 100644 --- a/packages/api-rpc/src/api/get_permissions_by_public_key.ts +++ b/packages/api-rpc/src/api/get_permissions_by_public_key.ts @@ -60,7 +60,7 @@ const get_permissions_by_public_key = async (query: { 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, resp, body) { + 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 { @@ -70,17 +70,17 @@ const get_permissions_by_public_key = async (query: { }); }); - result = req.then(function(res) { + var result = req.then(function(res: any) { // res[0].keyseg = "comment"; // console.log("then result: ", res); - res = res.filter(function(value, index, array) { - return value.keypermslist.some(function(value, index, array) { + 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, index, array) { - value.keypermslist = value.keypermslist.filter(function(value, inidex, array) { + 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; diff --git a/packages/api-rpc/src/api/get_smart_contracts.ts b/packages/api-rpc/src/api/get_smart_contracts.ts index a893f5d..60e314f 100644 --- a/packages/api-rpc/src/api/get_smart_contracts.ts +++ b/packages/api-rpc/src/api/get_smart_contracts.ts @@ -37,7 +37,7 @@ const get_smart_contracts = async (query: { // 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, resp, body) { + 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 { From b7019624d4c690ef7441905d0dc1391b9919024d Mon Sep 17 00:00:00 2001 From: Eric Ma Date: Fri, 19 Jun 2020 16:33:40 +0800 Subject: [PATCH 07/21] Print less --- packages/api-rpc/dist/api/get_permission_link.js | 1 - packages/api-rpc/dist/api/get_permissions_by_public_key.js | 1 - packages/api-rpc/src/api/get_permission_link.ts | 2 +- packages/api-rpc/src/api/get_permissions_by_public_key.ts | 2 +- 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/api-rpc/dist/api/get_permission_link.js b/packages/api-rpc/dist/api/get_permission_link.js index debdd08..5b3c8b0 100644 --- a/packages/api-rpc/dist/api/get_permission_link.js +++ b/packages/api-rpc/dist/api/get_permission_link.js @@ -58,7 +58,6 @@ var get_permission_link = function (query) { return __awaiter(void 0, void 0, vo "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) { 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 index bfff574..b20f156 100644 --- a/packages/api-rpc/dist/api/get_permissions_by_public_key.js +++ b/packages/api-rpc/dist/api/get_permissions_by_public_key.js @@ -86,7 +86,6 @@ var get_permissions_by_public_key = function (query) { return __awaiter(void 0, "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) { diff --git a/packages/api-rpc/src/api/get_permission_link.ts b/packages/api-rpc/src/api/get_permission_link.ts index c537f55..60137f4 100644 --- a/packages/api-rpc/src/api/get_permission_link.ts +++ b/packages/api-rpc/src/api/get_permission_link.ts @@ -28,7 +28,7 @@ const get_permission_link = async (query: { "show_payer": false }; - console.log("options: ", options); + // 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) { 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 index 0b68b00..a6f9cb5 100644 --- a/packages/api-rpc/src/api/get_permissions_by_public_key.ts +++ b/packages/api-rpc/src/api/get_permissions_by_public_key.ts @@ -57,7 +57,7 @@ const get_permissions_by_public_key = async (query: { "show_payer": false }; - console.log("options: ", options); + // 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) { From 5eb0f29890245dd16b1ad310ab81474e8a6cb543 Mon Sep 17 00:00:00 2001 From: Shupeng Wang Date: Fri, 19 Jun 2020 16:34:26 +0800 Subject: [PATCH 08/21] change schema name --- .../api/get_action_details.js | 24 +++++++++---------- .../api/get_action_history.js | 4 ++-- .../api-postgres-plugin/api/get_actions.js | 4 ++-- .../api-postgres-plugin/api/get_blocks.js | 2 +- .../api/get_transactions.js | 4 ++-- .../api/get_trx_action_list.js | 4 ++-- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/packages/api-postgres-plugin/api/get_action_details.js b/packages/api-postgres-plugin/api/get_action_details.js index 60a489a..7e58fbb 100644 --- a/packages/api-postgres-plugin/api/get_action_details.js +++ b/packages/api-postgres-plugin/api/get_action_details.js @@ -6,24 +6,24 @@ 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 + SELECT * FROM testnet.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; // Fetch action data from blockchain @@ -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..2f8d1f2 100644 --- a/packages/api-postgres-plugin/api/get_action_history.js +++ b/packages/api-postgres-plugin/api/get_action_history.js @@ -8,7 +8,7 @@ const get_action_history = async query => { ${account_name !== undefined ? ` SELECT transaction_id, action_ordinal, act_account, act_name, act_data, timestamp, block_num, actor, permission - FROM chain.action_trace + FROM testnet.action_trace WHERE creator_action_ordinal = 0 AND act_account = ANY('{${account_name}}') ` : `` @@ -17,7 +17,7 @@ const get_action_history = async query => { ${actor_name !== undefined ? ` SELECT transaction_id, action_ordinal, act_account, act_name, act_data, timestamp, block_num, actor, permission - FROM chain.action_trace + FROM testnet.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..96f82eb 100644 --- a/packages/api-postgres-plugin/api/get_actions.js +++ b/packages/api-postgres-plugin/api/get_actions.js @@ -6,10 +6,10 @@ const get_actions = async 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 - FROM chain.action_trace + FROM testnet.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_blocks.js b/packages/api-postgres-plugin/api/get_blocks.js index 6c6bd5a..cad2c2c 100644 --- a/packages/api-postgres-plugin/api/get_blocks.js +++ b/packages/api-postgres-plugin/api/get_blocks.js @@ -8,7 +8,7 @@ const get_blocks = async query => { ${show_empty === 'true' ? ` SELECT block_id, block_num, timestamp, transaction_count, producer - FROM chain.block_info + FROM testnet.block_info ` : ` SELECT * diff --git a/packages/api-postgres-plugin/api/get_transactions.js b/packages/api-postgres-plugin/api/get_transactions.js index e1c1085..90f168c 100644 --- a/packages/api-postgres-plugin/api/get_transactions.js +++ b/packages/api-postgres-plugin/api/get_transactions.js @@ -5,8 +5,8 @@ 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 - FROM chain.transaction_trace + SELECT id, block_num, transaction_expiration, status + FROM testnet.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..00512fa 100644 --- a/packages/api-postgres-plugin/api/get_trx_action_list.js +++ b/packages/api-postgres-plugin/api/get_trx_action_list.js @@ -6,8 +6,8 @@ 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 - WHERE creator_action_ordinal = 0 ${account_name !== undefined ? `AND act_account = '${account_name}'` : ''} + FROM testnet.action_trace + WHERE creator_action_oridnal = 0 ${account_name !== undefined ? `AND act_account = '${account_name}'` : ''} ORDER BY block_num DESC LIMIT ${limit} `; From 23c75f9863195d7507bef4955a3a69dedf5a996e Mon Sep 17 00:00:00 2001 From: Eric Ma Date: Fri, 19 Jun 2020 17:02:06 +0800 Subject: [PATCH 09/21] Less messages --- packages/api-rpc/dist/api/get_permissions_by_public_key.js | 1 + packages/api-rpc/src/api/get_permissions_by_public_key.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) 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 index b20f156..1850dab 100644 --- a/packages/api-rpc/dist/api/get_permissions_by_public_key.js +++ b/packages/api-rpc/dist/api/get_permissions_by_public_key.js @@ -111,6 +111,7 @@ var get_permissions_by_public_key = function (query) { return __awaiter(void 0, }); return value; }); + // console.log("res: ", res); return res; }); return [2 /*return*/, result]; 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 index a6f9cb5..9f6bd39 100644 --- a/packages/api-rpc/src/api/get_permissions_by_public_key.ts +++ b/packages/api-rpc/src/api/get_permissions_by_public_key.ts @@ -6,7 +6,6 @@ const get_permissions_by_public_key = async (query: { records_count: string }) => { try { - // console.log("config: ", config); // console.log("query: ", query); const { endpoint, public_key, records_count } = query; @@ -86,6 +85,8 @@ const get_permissions_by_public_key = async (query: { return value; }); + // console.log("res: ", res); + return res; }); From c070949c878cc44b103d63e6eb9772cfe7a8b953 Mon Sep 17 00:00:00 2001 From: Eric Ma Date: Fri, 19 Jun 2020 17:55:41 +0800 Subject: [PATCH 10/21] Fix a bug in request for eosio.authln --- packages/api-rpc/dist/api/get_permission_link.js | 6 +++++- packages/api-rpc/index.d.ts | 7 ------- packages/api-rpc/src/api/get_permission_link.ts | 8 +++++--- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/packages/api-rpc/dist/api/get_permission_link.js b/packages/api-rpc/dist/api/get_permission_link.js index 5b3c8b0..da339c9 100644 --- a/packages/api-rpc/dist/api/get_permission_link.js +++ b/packages/api-rpc/dist/api/get_permission_link.js @@ -41,11 +41,13 @@ var get_permission_link = function (query) { return __awaiter(void 0, void 0, vo 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.authlink", + "code": "eosio.authln", "scope": account_name, "table": "authlinks", "table_key": "", @@ -58,6 +60,7 @@ var get_permission_link = function (query) { return __awaiter(void 0, void 0, vo "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) { @@ -69,6 +72,7 @@ var get_permission_link = function (query) { return __awaiter(void 0, void 0, vo } }); }); + console.log("req: ", req); return [2 /*return*/, req]; } catch (error) { diff --git a/packages/api-rpc/index.d.ts b/packages/api-rpc/index.d.ts index 103d7f6..209df59 100644 --- a/packages/api-rpc/index.d.ts +++ b/packages/api-rpc/index.d.ts @@ -132,12 +132,6 @@ declare namespace Rpc { parent: string } - interface GetPermissionLinkQuery { - endpoint: string, - account_name: string, - records_count: string - } - function get_info(query: GetInfoQuery) : Promise; function create_account(query: CreateAccountQuery): Promise; function deploy_contract(query: DeployContractQuery): Promise; @@ -146,7 +140,6 @@ declare namespace Rpc { function get_block(query: GetBlockQuery): Promise; function get_producer_schedule(query: GetInfoQuery): Promise; function get_producers(query: GetInfoQuery): Promise; - function get_permission_link(query: GetPermissionLinkQuery): Promise; function get_table_rows(query: GetTableRowsQuery): Promise function push_action(query: PushActionQuery): Promise; function buy_ram(query: BuyRamQuery): Promise; diff --git a/packages/api-rpc/src/api/get_permission_link.ts b/packages/api-rpc/src/api/get_permission_link.ts index 60137f4..78566c7 100644 --- a/packages/api-rpc/src/api/get_permission_link.ts +++ b/packages/api-rpc/src/api/get_permission_link.ts @@ -7,14 +7,14 @@ const get_permission_link = async (query: { }) => { try { // console.log("config: ", config); - // console.log("query: ", query); + console.log("query: ", query); const { endpoint, account_name, records_count } = query; const limit = Math.min(parseInt(records_count) || 100, 100); var options = { "json": true, - "code": "eosio.authlink", + "code": "eosio.authln", "scope": account_name, "table": "authlinks", "table_key": "", @@ -28,7 +28,7 @@ const get_permission_link = async (query: { "show_payer": false }; - // console.log("options: ", options); + 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) { @@ -40,6 +40,8 @@ const get_permission_link = async (query: { } }); }); + + console.log("req: ", req); return req; } catch (error) { From d251e44ce7045e6ca43b0992b8fdf054a4ef5ed6 Mon Sep 17 00:00:00 2001 From: Shupeng Wang Date: Mon, 22 Jun 2020 16:28:58 +0800 Subject: [PATCH 11/21] change schema name --- packages/api-postgres-plugin/api/get_block_details.js | 2 +- packages/api-postgres-plugin/api/get_blocks.js | 4 ++-- packages/api-postgres-plugin/api/get_transaction_details.js | 4 +--- packages/api-rpc/src/api/create_account.ts | 1 + 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/api-postgres-plugin/api/get_block_details.js b/packages/api-postgres-plugin/api/get_block_details.js index 15024ee..570d089 100644 --- a/packages/api-postgres-plugin/api/get_block_details.js +++ b/packages/api-postgres-plugin/api/get_block_details.js @@ -10,7 +10,7 @@ const get_block_details = async (query) => { id_or_num = id_or_num.toUpperCase(); let result = []; let query_gen = ` - SELECT * FROM chain.block_info + SELECT * FROM testnet.block_info WHERE ${isNaN(Number(id_or_num)) ? `block_id = '${id_or_num}'` : `block_num = ${id_or_num}`}`; let blocksPromise = new Promise((resolve, reject)=>{ diff --git a/packages/api-postgres-plugin/api/get_blocks.js b/packages/api-postgres-plugin/api/get_blocks.js index cad2c2c..27f4a65 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 testnet.block_info ` : ` - SELECT * - FROM chain.received_nonempty_block + SELECT block_id, block_num, timestamp, transaction_count, producer + FROM testnet.block_info where transaction_count != 0 ` } ORDER BY block_num DESC diff --git a/packages/api-postgres-plugin/api/get_transaction_details.js b/packages/api-postgres-plugin/api/get_transaction_details.js index f26258c..c67f90c 100644 --- a/packages/api-postgres-plugin/api/get_transaction_details.js +++ b/packages/api-postgres-plugin/api/get_transaction_details.js @@ -8,9 +8,7 @@ const get_transaction_details = async (query) => { 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) - FROM chain.transaction_trace as tt + FROM testnet.transaction_trace as tt WHERE id = '${id}'`; let transactionPromise = new Promise((resolve, reject)=>{ 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, From 5292e1072f3590e180e9f2d731fb4c9ffc2eb5c8 Mon Sep 17 00:00:00 2001 From: Shupeng Wang Date: Mon, 22 Jun 2020 16:38:37 +0800 Subject: [PATCH 12/21] fix --- packages/api-postgres-plugin/api/get_transaction_details.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api-postgres-plugin/api/get_transaction_details.js b/packages/api-postgres-plugin/api/get_transaction_details.js index c67f90c..d88824b 100644 --- a/packages/api-postgres-plugin/api/get_transaction_details.js +++ b/packages/api-postgres-plugin/api/get_transaction_details.js @@ -7,7 +7,7 @@ const get_transaction_details = async (query) => { id = id.toUpperCase(); let result = []; let query_gen = ` - SELECT tt.*, + SELECT tt.* FROM testnet.transaction_trace as tt WHERE id = '${id}'`; From 8c77dfe88d0b9b12b0b6ed3e337e1f982c284168 Mon Sep 17 00:00:00 2001 From: Shupeng Wang Date: Mon, 22 Jun 2020 17:01:07 +0800 Subject: [PATCH 13/21] remove filter by token --- .../api/get_actions_with_filter.js | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) 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..2345561 100644 --- a/packages/api-postgres-plugin/api/get_actions_with_filter.js +++ b/packages/api-postgres-plugin/api/get_actions_with_filter.js @@ -12,13 +12,13 @@ const get_actions_with_filter = async query => { } = query; const limit = Math.min(parseInt(page_size) || 100, 100); const table = ` - chain.action_trace + testnet.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_oridnal = 0 AND act_account = '${account_name}'` : + action_filter === 'signed' ? `creator_action_oridnal = 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 @@ -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 From 1cd1f13e5f3a6f913eb28400c1f4b5c83708278b Mon Sep 17 00:00:00 2001 From: Shupeng Wang Date: Mon, 22 Jun 2020 17:33:29 +0800 Subject: [PATCH 14/21] ugly but works :) --- .../api/get_actions_with_filter.js | 64 ++++++++++++++++++- 1 file changed, 61 insertions(+), 3 deletions(-) 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 2345561..2c5b64c 100644 --- a/packages/api-postgres-plugin/api/get_actions_with_filter.js +++ b/packages/api-postgres-plugin/api/get_actions_with_filter.js @@ -11,7 +11,7 @@ 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 = ` testnet.action_trace WHERE ${action_filter !== undefined && account_name !== undefined @@ -33,7 +33,7 @@ const get_actions_with_filter = async query => { } `; - const statement = ` + let statement = ` SELECT transaction_id AS id, block_num, @@ -49,7 +49,65 @@ 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 + testnet.transfer_t.transaction_id AS id, + testnet.transfer_t.block_num AS block_num, + testnet.transfer_t.timestamp AS timestamp, + testnet.action_trace.act_account AS act_account, + testnet.action_trace.act_name AS act_name, + testnet.action_trace.actor AS actor, + testnet.action_trace.receipt_global_sequence AS receipt_global_sequence, + testnet.transfer_t.token_to AS token_to, + testnet.transfer_t.token_from AS token_from, + testnet.transfer_t.quantity_amount as amount, + testnet.transfer_t.quantity_symbol as symbol + FROM testnet.transfer_t + INNER JOIN testnet.action_trace ON testnet.action_trace.transaction_id = testnet.transfer_t.transaction_id + WHERE + token_to = '${account_name}' + ORDER BY + testnet.action_trace.receipt_global_sequence ${direction === 'next' ? 'DESC' : 'ASC'} + LIMIT ${limit} + ` + + count_statement = `SELECT COUNT(transaction_id) AS count FROM testnet.transfer_t WHERE token_to = '${account_name}'` + } + + + if(action_filter === 'sent'){ + statement = ` + SELECT + testnet.transfer_t.transaction_id AS id, + testnet.transfer_t.block_num AS block_num, + testnet.transfer_t.timestamp AS timestamp, + testnet.action_trace.act_account AS act_account, + testnet.action_trace.act_name AS act_name, + testnet.action_trace.actor AS actor, + testnet.action_trace.receipt_global_sequence AS receipt_global_sequence, + testnet.transfer_t.token_to AS token_to, + testnet.transfer_t.token_from AS token_from, + testnet.transfer_t.quantity_amount as amount, + testnet.transfer_t.quantity_symbol as symbol + FROM testnet.transfer_t + INNER JOIN testnet.action_trace ON testnet.action_trace.transaction_id = testnet.transfer_t.transaction_id + WHERE + token_from = '${account_name}' + ORDER BY + testnet.action_trace.receipt_global_sequence ${direction === 'next' ? 'DESC' : 'ASC'} + LIMIT ${limit} + ` + + count_statement = `SELECT COUNT(transaction_id) AS count FROM testnet.transfer_t WHERE token_from = '${account_name}'` + } + + + + console.log(statement) try { const data = (await db.queryAsync(statement, '')).rows; From 48219d3a2212d7e9dc566c33672a6259bca79ba7 Mon Sep 17 00:00:00 2001 From: Shupeng Wang Date: Mon, 22 Jun 2020 17:51:08 +0800 Subject: [PATCH 15/21] update --- packages/api-postgres-plugin/api/get_action_details.js | 2 +- packages/api-postgres-plugin/api/get_action_history.js | 8 ++++---- packages/api-postgres-plugin/api/get_actions.js | 2 +- packages/api-postgres-plugin/tests/get_action_history.js | 2 +- packages/api-postgres-plugin/tests/get_actions.js | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/api-postgres-plugin/api/get_action_details.js b/packages/api-postgres-plugin/api/get_action_details.js index 7e58fbb..80fea7f 100644 --- a/packages/api-postgres-plugin/api/get_action_details.js +++ b/packages/api-postgres-plugin/api/get_action_details.js @@ -25,7 +25,7 @@ const get_action_details = async (query) => { 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); diff --git a/packages/api-postgres-plugin/api/get_action_history.js b/packages/api-postgres-plugin/api/get_action_history.js index 2f8d1f2..9cf0575 100644 --- a/packages/api-postgres-plugin/api/get_action_history.js +++ b/packages/api-postgres-plugin/api/get_action_history.js @@ -7,18 +7,18 @@ 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 testnet.action_trace - WHERE creator_action_ordinal = 0 AND act_account = ANY('{${account_name}}') + WHERE creator_action_oridnal = 0 AND act_account = ANY('{${account_name}}') ` : `` } ${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 testnet.action_trace - WHERE creator_action_ordinal = 0 AND actor = ANY('{${actor_name}}') + WHERE creator_action_oridnal = 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 96f82eb..cf903a8 100644 --- a/packages/api-postgres-plugin/api/get_actions.js +++ b/packages/api-postgres-plugin/api/get_actions.js @@ -5,7 +5,7 @@ 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 testnet.action_trace WHERE creator_action_ordinal = 0 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(); From e5178326d36c0185219d7dc90f7347272da613c2 Mon Sep 17 00:00:00 2001 From: ZhuBoao <361255448@qq.com> Date: Tue, 23 Jun 2020 17:45:59 +0800 Subject: [PATCH 16/21] Fix ts declearations for , , --- .../src/api/get_smart_contracts.ts | 4 +-- packages/api-rpc/index.d.ts | 29 ++++++++++++++++++- .../api-rpc/src/api/get_permission_link.ts | 5 ++-- .../src/api/get_permissions_by_public_key.ts | 4 +-- 4 files changed, 34 insertions(+), 8 deletions(-) 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-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/get_permission_link.ts b/packages/api-rpc/src/api/get_permission_link.ts index 78566c7..495d8c1 100644 --- a/packages/api-rpc/src/api/get_permission_link.ts +++ b/packages/api-rpc/src/api/get_permission_link.ts @@ -3,14 +3,14 @@ var request = require("request"); const get_permission_link = async (query: { endpoint: string, account_name: string, - records_count: string + records_count: number }) => { try { // console.log("config: ", config); console.log("query: ", query); const { endpoint, account_name, records_count } = query; - const limit = Math.min(parseInt(records_count) || 100, 100); + const limit = Math.min(records_count || 100, 100); var options = { "json": true, @@ -54,4 +54,3 @@ const get_permission_link = async (query: { }; 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 index 9f6bd39..e15737a 100644 --- a/packages/api-rpc/src/api/get_permissions_by_public_key.ts +++ b/packages/api-rpc/src/api/get_permissions_by_public_key.ts @@ -3,13 +3,13 @@ var request = require("request"); const get_permissions_by_public_key = async (query: { endpoint: string, public_key: string, - records_count: string + records_count: number }) => { try { // console.log("query: ", query); const { endpoint, public_key, records_count } = query; - const limit = Math.min(parseInt(records_count) || 100, 100); + const limit = Math.min(records_count || 100, 100); var scopeStr = ""; var keyseg = ""; From 6a4016669dc3ba8a7265629fcaf85f446c1017fb Mon Sep 17 00:00:00 2001 From: ZhuBoao <361255448@qq.com> Date: Tue, 14 Jul 2020 11:15:35 +0800 Subject: [PATCH 17/21] Replace schema name to chain --- .../api/get_action_details.js | 2 +- .../api/get_action_history.js | 4 +- .../api-postgres-plugin/api/get_actions.js | 2 +- .../api/get_actions_with_filter.js | 62 +++++++++---------- .../api/get_block_details.js | 2 +- .../api-postgres-plugin/api/get_blocks.js | 4 +- .../api/get_transaction_details.js | 2 +- .../api/get_transactions.js | 2 +- .../api/get_trx_action_list.js | 2 +- 9 files changed, 41 insertions(+), 41 deletions(-) diff --git a/packages/api-postgres-plugin/api/get_action_details.js b/packages/api-postgres-plugin/api/get_action_details.js index 80fea7f..54d74fe 100644 --- a/packages/api-postgres-plugin/api/get_action_details.js +++ b/packages/api-postgres-plugin/api/get_action_details.js @@ -8,7 +8,7 @@ const get_action_details = async (query) => { id = id.toUpperCase(); let query_gen = ` - SELECT * FROM testnet.action_trace + 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)=>{ diff --git a/packages/api-postgres-plugin/api/get_action_history.js b/packages/api-postgres-plugin/api/get_action_history.js index 9cf0575..ffdc56e 100644 --- a/packages/api-postgres-plugin/api/get_action_history.js +++ b/packages/api-postgres-plugin/api/get_action_history.js @@ -8,7 +8,7 @@ const get_action_history = async query => { ${account_name !== undefined ? ` SELECT transaction_id, action_ordinal, act_account, act_name, timestamp, block_num, actor, permission - FROM testnet.action_trace + FROM chain.action_trace WHERE creator_action_oridnal = 0 AND act_account = ANY('{${account_name}}') ` : `` @@ -17,7 +17,7 @@ const get_action_history = async query => { ${actor_name !== undefined ? ` SELECT transaction_id, action_ordinal, act_account, act_name, timestamp, block_num, actor, permission - FROM testnet.action_trace + FROM chain.action_trace WHERE creator_action_oridnal = 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 cf903a8..c32a29e 100644 --- a/packages/api-postgres-plugin/api/get_actions.js +++ b/packages/api-postgres-plugin/api/get_actions.js @@ -6,7 +6,7 @@ const get_actions = async query => { const limit = Math.min(parseInt(records_count) || 100, 100); const statement = ` SELECT transaction_id, action_ordinal, act_account, act_name, timestamp, block_num, actor, permission - FROM testnet.action_trace + FROM chain.action_trace WHERE creator_action_ordinal = 0 ${account_name !== undefined ? `AND act_account = '${account_name}'` : ''} 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 2c5b64c..063a1d9 100644 --- a/packages/api-postgres-plugin/api/get_actions_with_filter.js +++ b/packages/api-postgres-plugin/api/get_actions_with_filter.js @@ -12,7 +12,7 @@ const get_actions_with_filter = async query => { } = query; const limit = Math.min(parseInt(page_size) || 100, 100); var table = ` - testnet.action_trace + chain.action_trace WHERE ${action_filter !== undefined && account_name !== undefined ? action_filter === 'contract' ? `creator_action_oridnal = 0 AND act_account = '${account_name}'` : @@ -55,54 +55,54 @@ const get_actions_with_filter = async query => { if(action_filter === 'received'){ statement = ` SELECT - testnet.transfer_t.transaction_id AS id, - testnet.transfer_t.block_num AS block_num, - testnet.transfer_t.timestamp AS timestamp, - testnet.action_trace.act_account AS act_account, - testnet.action_trace.act_name AS act_name, - testnet.action_trace.actor AS actor, - testnet.action_trace.receipt_global_sequence AS receipt_global_sequence, - testnet.transfer_t.token_to AS token_to, - testnet.transfer_t.token_from AS token_from, - testnet.transfer_t.quantity_amount as amount, - testnet.transfer_t.quantity_symbol as symbol - FROM testnet.transfer_t - INNER JOIN testnet.action_trace ON testnet.action_trace.transaction_id = testnet.transfer_t.transaction_id + chain.transfer_t.transaction_id AS id, + chain.transfer_t.block_num AS block_num, + chain.transfer_t.timestamp AS timestamp, + 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 WHERE token_to = '${account_name}' ORDER BY - testnet.action_trace.receipt_global_sequence ${direction === 'next' ? 'DESC' : 'ASC'} + chain.action_trace.receipt_global_sequence ${direction === 'next' ? 'DESC' : 'ASC'} LIMIT ${limit} ` - count_statement = `SELECT COUNT(transaction_id) AS count FROM testnet.transfer_t WHERE token_to = '${account_name}'` + count_statement = `SELECT COUNT(transaction_id) AS count FROM chain.transfer_t WHERE token_to = '${account_name}'` } if(action_filter === 'sent'){ statement = ` SELECT - testnet.transfer_t.transaction_id AS id, - testnet.transfer_t.block_num AS block_num, - testnet.transfer_t.timestamp AS timestamp, - testnet.action_trace.act_account AS act_account, - testnet.action_trace.act_name AS act_name, - testnet.action_trace.actor AS actor, - testnet.action_trace.receipt_global_sequence AS receipt_global_sequence, - testnet.transfer_t.token_to AS token_to, - testnet.transfer_t.token_from AS token_from, - testnet.transfer_t.quantity_amount as amount, - testnet.transfer_t.quantity_symbol as symbol - FROM testnet.transfer_t - INNER JOIN testnet.action_trace ON testnet.action_trace.transaction_id = testnet.transfer_t.transaction_id + chain.transfer_t.transaction_id AS id, + chain.transfer_t.block_num AS block_num, + chain.transfer_t.timestamp AS timestamp, + 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 WHERE token_from = '${account_name}' ORDER BY - testnet.action_trace.receipt_global_sequence ${direction === 'next' ? 'DESC' : 'ASC'} + chain.action_trace.receipt_global_sequence ${direction === 'next' ? 'DESC' : 'ASC'} LIMIT ${limit} ` - count_statement = `SELECT COUNT(transaction_id) AS count FROM testnet.transfer_t WHERE token_from = '${account_name}'` + count_statement = `SELECT COUNT(transaction_id) AS count FROM chain.transfer_t WHERE token_from = '${account_name}'` } diff --git a/packages/api-postgres-plugin/api/get_block_details.js b/packages/api-postgres-plugin/api/get_block_details.js index 570d089..15024ee 100644 --- a/packages/api-postgres-plugin/api/get_block_details.js +++ b/packages/api-postgres-plugin/api/get_block_details.js @@ -10,7 +10,7 @@ const get_block_details = async (query) => { id_or_num = id_or_num.toUpperCase(); let result = []; let query_gen = ` - SELECT * FROM testnet.block_info + SELECT * FROM chain.block_info WHERE ${isNaN(Number(id_or_num)) ? `block_id = '${id_or_num}'` : `block_num = ${id_or_num}`}`; let blocksPromise = new Promise((resolve, reject)=>{ diff --git a/packages/api-postgres-plugin/api/get_blocks.js b/packages/api-postgres-plugin/api/get_blocks.js index 27f4a65..35cc0b5 100644 --- a/packages/api-postgres-plugin/api/get_blocks.js +++ b/packages/api-postgres-plugin/api/get_blocks.js @@ -8,11 +8,11 @@ const get_blocks = async query => { ${show_empty === 'true' ? ` SELECT block_id, block_num, timestamp, transaction_count, producer - FROM testnet.block_info + FROM chain.block_info ` : ` SELECT block_id, block_num, timestamp, transaction_count, producer - FROM testnet.block_info where transaction_count != 0 + FROM chain.block_info where transaction_count != 0 ` } ORDER BY block_num DESC diff --git a/packages/api-postgres-plugin/api/get_transaction_details.js b/packages/api-postgres-plugin/api/get_transaction_details.js index d88824b..ebeef6c 100644 --- a/packages/api-postgres-plugin/api/get_transaction_details.js +++ b/packages/api-postgres-plugin/api/get_transaction_details.js @@ -8,7 +8,7 @@ const get_transaction_details = async (query) => { let result = []; let query_gen = ` SELECT tt.* - FROM testnet.transaction_trace as tt + FROM chain.transaction_trace as tt WHERE id = '${id}'`; let transactionPromise = new Promise((resolve, reject)=>{ diff --git a/packages/api-postgres-plugin/api/get_transactions.js b/packages/api-postgres-plugin/api/get_transactions.js index 90f168c..62f3ee2 100644 --- a/packages/api-postgres-plugin/api/get_transactions.js +++ b/packages/api-postgres-plugin/api/get_transactions.js @@ -6,7 +6,7 @@ const get_transactions = async query => { const limit = Math.min(parseInt(records_count) || 100, 100); const statement = ` SELECT id, block_num, transaction_expiration, status - FROM testnet.transaction_trace + 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 00512fa..13e63f1 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 testnet.action_trace + FROM chain.action_trace WHERE creator_action_oridnal = 0 ${account_name !== undefined ? `AND act_account = '${account_name}'` : ''} ORDER BY block_num DESC LIMIT ${limit} From e869901d1dbb68fb1b31cbf163b05561040b5e9e Mon Sep 17 00:00:00 2001 From: ZhuBoao <361255448@qq.com> Date: Tue, 14 Jul 2020 15:57:44 +0800 Subject: [PATCH 18/21] Fixed typo --- packages/api-postgres-plugin/api/get_action_history.js | 4 ++-- packages/api-postgres-plugin/api/get_actions_with_filter.js | 4 ++-- packages/api-postgres-plugin/api/get_trx_action_list.js | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/api-postgres-plugin/api/get_action_history.js b/packages/api-postgres-plugin/api/get_action_history.js index ffdc56e..8f75b2e 100644 --- a/packages/api-postgres-plugin/api/get_action_history.js +++ b/packages/api-postgres-plugin/api/get_action_history.js @@ -9,7 +9,7 @@ const get_action_history = async query => { ? ` SELECT transaction_id, action_ordinal, act_account, act_name, timestamp, block_num, actor, permission FROM chain.action_trace - WHERE creator_action_oridnal = 0 AND act_account = ANY('{${account_name}}') + WHERE creator_action_ordinal = 0 AND act_account = ANY('{${account_name}}') ` : `` } @@ -18,7 +18,7 @@ const get_action_history = async query => { ? ` SELECT transaction_id, action_ordinal, act_account, act_name, timestamp, block_num, actor, permission FROM chain.action_trace - WHERE creator_action_oridnal = 0 AND actor = ANY('{${actor_name}}') + WHERE creator_action_ordinal = 0 AND actor = ANY('{${actor_name}}') ` : `` } 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 063a1d9..6dae59e 100644 --- a/packages/api-postgres-plugin/api/get_actions_with_filter.js +++ b/packages/api-postgres-plugin/api/get_actions_with_filter.js @@ -15,8 +15,8 @@ const get_actions_with_filter = async query => { chain.action_trace WHERE ${action_filter !== undefined && account_name !== undefined - ? action_filter === 'contract' ? `creator_action_oridnal = 0 AND act_account = '${account_name}'` : - action_filter === 'signed' ? `creator_action_oridnal = 0 AND actor = '${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' 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 13e63f1..c94df65 100644 --- a/packages/api-postgres-plugin/api/get_trx_action_list.js +++ b/packages/api-postgres-plugin/api/get_trx_action_list.js @@ -7,7 +7,7 @@ const get_trx_action_list = async query => { const statement = ` SELECT transaction_id AS id, block_num, timestamp, act_account, act_name, action_ordinal FROM chain.action_trace - WHERE creator_action_oridnal = 0 ${account_name !== undefined ? `AND act_account = '${account_name}'` : ''} + WHERE creator_action_ordinal = 0 ${account_name !== undefined ? `AND act_account = '${account_name}'` : ''} ORDER BY block_num DESC LIMIT ${limit} `; From 08c6e0580d366fc6f735990510b4a34ccc4d8006 Mon Sep 17 00:00:00 2001 From: ZhuBoao <361255448@qq.com> Date: Mon, 27 Jul 2020 16:39:13 +0800 Subject: [PATCH 19/21] Fixed unit test --- packages/api-postgres-plugin/tests/get_actions_with_filter.js | 4 ---- 1 file changed, 4 deletions(-) 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( From 2063a8f139c3b3ad658089e815a0e48b2ca1055c Mon Sep 17 00:00:00 2001 From: Terry Leung Date: Tue, 8 Sep 2020 16:23:25 +0800 Subject: [PATCH 20/21] Deduce multiple rows by adding back WHERE clauses in QUERY for send / receive tokens --- .../api/get_actions_with_filter.js | 14 ++++++++------ packages/docker-ship/remove_ship_docker.sh | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) 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 6dae59e..252347b 100644 --- a/packages/api-postgres-plugin/api/get_actions_with_filter.js +++ b/packages/api-postgres-plugin/api/get_actions_with_filter.js @@ -15,10 +15,10 @@ const get_actions_with_filter = async query => { 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 @@ -58,6 +58,7 @@ const get_actions_with_filter = async query => { 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, @@ -69,7 +70,7 @@ const get_actions_with_filter = async query => { FROM chain.transfer_t INNER JOIN chain.action_trace ON chain.action_trace.transaction_id = chain.transfer_t.transaction_id WHERE - token_to = '${account_name}' + 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} @@ -85,6 +86,7 @@ const get_actions_with_filter = async query => { 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, @@ -96,7 +98,7 @@ const get_actions_with_filter = async query => { FROM chain.transfer_t INNER JOIN chain.action_trace ON chain.action_trace.transaction_id = chain.transfer_t.transaction_id WHERE - token_from = '${account_name}' + 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} 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 From 79a536a1e88fe8564c16f4fb573ff2687e6b6ca0 Mon Sep 17 00:00:00 2001 From: Terry Leung Date: Wed, 9 Sep 2020 09:13:09 +0800 Subject: [PATCH 21/21] Further fix for the multiple row issue. --- packages/api-postgres-plugin/api/get_actions_with_filter.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 252347b..bee3e58 100644 --- a/packages/api-postgres-plugin/api/get_actions_with_filter.js +++ b/packages/api-postgres-plugin/api/get_actions_with_filter.js @@ -68,7 +68,7 @@ const get_actions_with_filter = async query => { 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 + 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 @@ -96,7 +96,7 @@ const get_actions_with_filter = async query => { 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 + 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