diff --git a/src/server.ts b/src/server.ts index b9d7d4f2..6fddfd93 100644 --- a/src/server.ts +++ b/src/server.ts @@ -760,17 +760,17 @@ function findCreatedAccountSequenceInTransactionMeta( function mergeResponseExpirationLedgers(ledgerEntriesResponse: SorobanRpc.RawGetLedgerEntriesResponse, requestedKeys: xdr.LedgerKey[] ): SorobanRpc.RawGetLedgerEntriesResponse { - const expirationKeyToRawEntryResult:Map = new Map(); + const expirationKeyToRawEntryResult = new Map(); const requestedKeyXdrs = new Set(requestedKeys.map(requestedKey => requestedKey.toXDR('base64'))); (ledgerEntriesResponse.entries ?? []).forEach(rawEntryResult => { if (!rawEntryResult.key) { - // don't interpret here, just pass it through to the outgoing response as-is + // don't interpret raw ledger entry data here, just pass it through to the outgoing response as-is expirationKeyToRawEntryResult.set(Math.random().toString(), rawEntryResult) return; } - const parsedKey:xdr.LedgerKey = xdr.LedgerKey.fromXDR(rawEntryResult.key, 'base64'); + const parsedKey = xdr.LedgerKey.fromXDR(rawEntryResult.key, 'base64'); if (parsedKey.switch().value !== xdr.LedgerEntryType.expiration().value || requestedKeyXdrs.has(rawEntryResult.key)) { @@ -812,16 +812,8 @@ function mergeResponseExpirationLedgers(ledgerEntriesResponse: SorobanRpc.RawGet function expandRequestIncludeExpirationLedgers( keys: Array ): Array { - let includingExpiryKeys: Array = new Array() - keys.forEach(key => { - if (key.switch().value !== xdr.LedgerEntryType.expiration().value) { - const expirationKey = xdr.LedgerKey.expiration( - new xdr.LedgerKeyExpiration( - { keyHash: hash(key.toXDR())} - )); - includingExpiryKeys.push(expirationKey); - } - includingExpiryKeys.push(key); - }); - return includingExpiryKeys; + return keys.concat(keys + .filter(key => key.switch().value !== xdr.LedgerEntryType.expiration().value ) + .map(key => xdr.LedgerKey.expiration(new xdr.LedgerKeyExpiration({ keyHash: hash(key.toXDR())}))) + ); } diff --git a/test/unit/server/get_account_test.js b/test/unit/server/get_account_test.js index 11800bbf..ac1e134e 100644 --- a/test/unit/server/get_account_test.js +++ b/test/unit/server/get_account_test.js @@ -27,7 +27,7 @@ describe('Server#getAccount', function () { jsonrpc: '2.0', id: 1, method: 'getLedgerEntries', - params: [[ledgerExpirationKey.toXDR('base64'), key.toXDR('base64')]] + params: [[key.toXDR('base64'), ledgerExpirationKey.toXDR('base64')]] }) .returns( Promise.resolve({ @@ -67,7 +67,7 @@ describe('Server#getAccount', function () { jsonrpc: '2.0', id: 1, method: 'getLedgerEntries', - params: [[ledgerExpirationKey.toXDR('base64'), key.toXDR('base64')]] + params: [[key.toXDR('base64'), ledgerExpirationKey.toXDR('base64')]] }) .returns( Promise.resolve({ diff --git a/test/unit/server/get_contract_data_test.js b/test/unit/server/get_contract_data_test.js index 16a790d7..1c19cecb 100644 --- a/test/unit/server/get_contract_data_test.js +++ b/test/unit/server/get_contract_data_test.js @@ -59,7 +59,7 @@ describe('Server#getContractData', function () { id: 1, method: 'getLedgerEntries', params: [ - [ledgerExpirationKey.toXDR('base64'), ledgerKey.toXDR('base64')] + [ledgerKey.toXDR('base64'), ledgerExpirationKey.toXDR('base64')] ] }) .returns( @@ -115,7 +115,7 @@ describe('Server#getContractData', function () { id: 1, method: 'getLedgerEntries', params: [ - [ledgerExpirationKey.toXDR('base64'), ledgerKey.toXDR('base64')] + [ledgerKey.toXDR('base64'), ledgerExpirationKey.toXDR('base64')] ] }) .returns( @@ -169,8 +169,8 @@ describe('Server#getContractData', function () { method: 'getLedgerEntries', params: [ [ - ledgerExpirationKeyDupe.toXDR('base64'), - ledgerKeyDupe.toXDR('base64') + ledgerKeyDupe.toXDR('base64'), + ledgerExpirationKeyDupe.toXDR('base64') ] ] }) diff --git a/test/unit/server/get_ledger_entries_test.js b/test/unit/server/get_ledger_entries_test.js index 45fac0c0..dfa95873 100644 --- a/test/unit/server/get_ledger_entries_test.js +++ b/test/unit/server/get_ledger_entries_test.js @@ -58,7 +58,7 @@ describe('Server#getLedgerEntries', function () { id: 1, method: 'getLedgerEntries', params: [ - [ledgerExpirationKey.toXDR('base64'), ledgerKey.toXDR('base64')] + [ledgerKey.toXDR('base64'), ledgerExpirationKey.toXDR('base64')] ] }) .returns( @@ -115,7 +115,7 @@ describe('Server#getLedgerEntries', function () { id: 1, method: 'getLedgerEntries', params: [ - [ledgerExpirationKey.toXDR('base64'), ledgerKey.toXDR('base64')] + [ledgerKey.toXDR('base64'), ledgerExpirationKey.toXDR('base64')] ] }) .returns( @@ -167,7 +167,7 @@ describe('Server#getLedgerEntries', function () { id: 1, method: 'getLedgerEntries', params: [ - [ledgerExpirationKey.toXDR('base64'), ledgerKey.toXDR('base64')] + [ledgerKey.toXDR('base64'), ledgerExpirationKey.toXDR('base64')] ] }) .returns( diff --git a/test/unit/server/request_airdrop_test.js b/test/unit/server/request_airdrop_test.js index 183308ad..fae47cfa 100644 --- a/test/unit/server/request_airdrop_test.js +++ b/test/unit/server/request_airdrop_test.js @@ -126,7 +126,7 @@ describe('Server#requestAirdrop', function () { id: 1, method: 'getLedgerEntries', params: [ - [ledgerExpirationKey.toXDR('base64'), accountKey.toXDR('base64')] + [accountKey.toXDR('base64'), ledgerExpirationKey.toXDR('base64')] ] }) .returns(