@substrate/api-sidecar 9.1.9 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +4 -2
  2. package/build/package.json +17 -19
  3. package/build/src/chains-config/index.js +2 -0
  4. package/build/src/chains-config/index.js.map +1 -1
  5. package/build/src/chains-config/metadata-consts/index.js +3 -0
  6. package/build/src/chains-config/metadata-consts/index.js.map +1 -1
  7. package/build/src/chains-config/metadata-consts/kusamaConsts.js +4 -1
  8. package/build/src/chains-config/metadata-consts/kusamaConsts.js.map +1 -1
  9. package/build/src/chains-config/metadata-consts/polkadotConsts.js +4 -1
  10. package/build/src/chains-config/metadata-consts/polkadotConsts.js.map +1 -1
  11. package/build/src/chains-config/metadata-consts/shidenConsts.d.ts +2 -0
  12. package/build/src/chains-config/metadata-consts/shidenConsts.js +20 -0
  13. package/build/src/chains-config/metadata-consts/shidenConsts.js.map +1 -0
  14. package/build/src/chains-config/metadata-consts/westendConsts.js +4 -1
  15. package/build/src/chains-config/metadata-consts/westendConsts.js.map +1 -1
  16. package/build/src/chains-config/shidenControllers.d.ts +5 -0
  17. package/build/src/chains-config/shidenControllers.js +36 -0
  18. package/build/src/chains-config/shidenControllers.js.map +1 -0
  19. package/build/src/controllers/accounts/AccountsBalanceInfoController.js +2 -1
  20. package/build/src/controllers/accounts/AccountsBalanceInfoController.js.map +1 -1
  21. package/build/src/controllers/blocks/BlocksController.js +5 -2
  22. package/build/src/controllers/blocks/BlocksController.js.map +1 -1
  23. package/build/src/controllers/blocks/BlocksExtrinsicsController.js +2 -1
  24. package/build/src/controllers/blocks/BlocksExtrinsicsController.js.map +1 -1
  25. package/build/src/controllers/pallets/PalletsStorageController.js +12 -6
  26. package/build/src/controllers/pallets/PalletsStorageController.js.map +1 -1
  27. package/build/src/main.js +0 -0
  28. package/build/src/services/accounts/AccountsAssetsService.js +1 -1
  29. package/build/src/services/accounts/AccountsAssetsService.js.map +1 -1
  30. package/build/src/services/accounts/AccountsAssetsService.spec.js +107 -1
  31. package/build/src/services/accounts/AccountsAssetsService.spec.js.map +1 -1
  32. package/build/src/services/accounts/AccountsBalanceInfoService.d.ts +2 -1
  33. package/build/src/services/accounts/AccountsBalanceInfoService.js +18 -20
  34. package/build/src/services/accounts/AccountsBalanceInfoService.js.map +1 -1
  35. package/build/src/services/accounts/AccountsBalanceInfoService.spec.js +68 -47
  36. package/build/src/services/accounts/AccountsBalanceInfoService.spec.js.map +1 -1
  37. package/build/src/services/accounts/AccountsStakingInfoService.spec.d.ts +4 -1
  38. package/build/src/services/accounts/AccountsStakingInfoService.spec.js +23 -7
  39. package/build/src/services/accounts/AccountsStakingInfoService.spec.js.map +1 -1
  40. package/build/src/services/accounts/AccountsVestingInfoService.js +19 -5
  41. package/build/src/services/accounts/AccountsVestingInfoService.js.map +1 -1
  42. package/build/src/services/accounts/AccountsVestingInfoService.spec.js +47 -2
  43. package/build/src/services/accounts/AccountsVestingInfoService.spec.js.map +1 -1
  44. package/build/src/services/blocks/BlocksService.d.ts +2 -1
  45. package/build/src/services/blocks/BlocksService.js +31 -26
  46. package/build/src/services/blocks/BlocksService.js.map +1 -1
  47. package/build/src/services/blocks/BlocksService.spec.js +80 -41
  48. package/build/src/services/blocks/BlocksService.spec.js.map +1 -1
  49. package/build/src/services/blocks/BlocksTraceService.spec.js +1 -1
  50. package/build/src/services/blocks/BlocksTraceService.spec.js.map +1 -1
  51. package/build/src/services/node/NodeNetworkService.spec.js +1 -1
  52. package/build/src/services/node/NodeNetworkService.spec.js.map +1 -1
  53. package/build/src/services/node/NodeTransactionPoolService.spec.js +5 -5
  54. package/build/src/services/node/NodeTransactionPoolService.spec.js.map +1 -1
  55. package/build/src/services/node/NodeVersionService.spec.js +1 -1
  56. package/build/src/services/node/NodeVersionService.spec.js.map +1 -1
  57. package/build/src/services/pallets/PalletsAssetsService.spec.js +113 -1
  58. package/build/src/services/pallets/PalletsAssetsService.spec.js.map +1 -1
  59. package/build/src/services/pallets/PalletsStakingProgressService.spec.js +48 -7
  60. package/build/src/services/pallets/PalletsStakingProgressService.spec.js.map +1 -1
  61. package/build/src/services/pallets/PalletsStorageService.d.ts +14 -2
  62. package/build/src/services/pallets/PalletsStorageService.js +56 -11
  63. package/build/src/services/pallets/PalletsStorageService.js.map +1 -1
  64. package/build/src/services/pallets/PalletsStorageService.spec.js +29 -7
  65. package/build/src/services/pallets/PalletsStorageService.spec.js.map +1 -1
  66. package/build/src/services/paras/ParasService.spec.d.ts +10 -1
  67. package/build/src/services/paras/ParasService.spec.js +201 -8
  68. package/build/src/services/paras/ParasService.spec.js.map +1 -1
  69. package/build/src/services/runtime/RuntimeCodeService.spec.js +1 -1
  70. package/build/src/services/runtime/RuntimeCodeService.spec.js.map +1 -1
  71. package/build/src/services/runtime/RuntimeMetadataService.spec.js +1 -1
  72. package/build/src/services/runtime/RuntimeMetadataService.spec.js.map +1 -1
  73. package/build/src/services/runtime/RuntimeSpecService.spec.js +1 -1
  74. package/build/src/services/runtime/RuntimeSpecService.spec.js.map +1 -1
  75. package/build/src/services/test-helpers/mock/data/block789629.json +2 -2
  76. package/build/src/services/test-helpers/mock/data/blocks789629Fork.json +2 -2
  77. package/build/src/services/test-helpers/mock/mockApi.d.ts +4 -12
  78. package/build/src/services/test-helpers/mock/mockApi.js +3 -377
  79. package/build/src/services/test-helpers/mock/mockApi.js.map +1 -1
  80. package/build/src/services/test-helpers/responses/accounts/vestingInfo789629.json +5 -1
  81. package/build/src/services/test-helpers/responses/blocks/block789629Extrinsic.json +3 -0
  82. package/build/src/services/test-helpers/responses/blocks/blocks789629.json +99 -154
  83. package/build/src/services/transaction/TransactionFeeEstimateService.spec.js +6 -3
  84. package/build/src/services/transaction/TransactionFeeEstimateService.spec.js.map +1 -1
  85. package/build/src/services/transaction/TransactionMaterialService.spec.js +1 -1
  86. package/build/src/services/transaction/TransactionMaterialService.spec.js.map +1 -1
  87. package/build/src/services/transaction/TransactionSubmitService.spec.js +8 -7
  88. package/build/src/services/transaction/TransactionSubmitService.spec.js.map +1 -1
  89. package/build/src/test-helpers/metadata/polkadotV9110Metadata.d.ts +1 -0
  90. package/build/src/test-helpers/metadata/polkadotV9110Metadata.js +5 -0
  91. package/build/src/test-helpers/metadata/polkadotV9110Metadata.js.map +1 -0
  92. package/build/src/test-helpers/registries/polkadotRegistry.d.ts +4 -0
  93. package/build/src/test-helpers/registries/polkadotRegistry.js +6 -1
  94. package/build/src/test-helpers/registries/polkadotRegistry.js.map +1 -1
  95. package/package.json +17 -19
@@ -12,27 +12,25 @@ class AccountsBalanceInfoService extends AbstractService_1.AbstractService {
12
12
  * @param address Address of the account to get the balance info of.
13
13
  * @param token Token to get the balance info of.
14
14
  */
15
- async fetchAccountBalanceInfo(hash, address, token) {
15
+ async fetchAccountBalanceInfo(hash, historicApi, address, token) {
16
16
  const { api } = this;
17
- // Retrieve the historic api for the given hash
18
- const historicalApi = await api.at(hash);
19
17
  /**
20
- * Check two different cases where a historicalApi is needed in order
18
+ * Check two different cases where a historicApi is needed in order
21
19
  * to have the correct runtime methods.
22
20
  *
23
21
  * a) Does the block use the oldest api where the free balance is found
24
- * using `historicalApi.query.balances.freeBalance`.
22
+ * using `historicApi.query.balances.freeBalance`.
25
23
  *
26
24
  * b) Does the block use an older api where the free balance is within the
27
25
  * AccountInfo type, but the storage does not yet have the `.at` method.
28
26
  */
29
- if (historicalApi.query.balances.freeBalance) {
27
+ if (historicApi.query.balances.freeBalance) {
30
28
  const [header, free, locks, reserved, nonce] = await Promise.all([
31
29
  api.rpc.chain.getHeader(hash),
32
- historicalApi.query.balances.freeBalance(address),
33
- historicalApi.query.balances.locks(address),
34
- historicalApi.query.balances.reservedBalance(address),
35
- historicalApi.query.system.accountNonce(address),
30
+ historicApi.query.balances.freeBalance(address),
31
+ historicApi.query.balances.locks(address),
32
+ historicApi.query.balances.reservedBalance(address),
33
+ historicApi.query.system.accountNonce(address),
36
34
  ]);
37
35
  // Values dont exist for these historic runtimes
38
36
  const miscFrozen = api.registry.createType('Balance', 0), feeFrozen = api.registry.createType('Balance', 0);
@@ -56,11 +54,11 @@ class AccountsBalanceInfoService extends AbstractService_1.AbstractService {
56
54
  throw new http_errors_1.BadRequest('Account not found');
57
55
  }
58
56
  }
59
- else if (!historicalApi.query.system.account.at) {
57
+ else if (!historicApi.query.system.account.at) {
60
58
  const [header, accountInfo, locks] = await Promise.all([
61
59
  api.rpc.chain.getHeader(hash),
62
- historicalApi.query.system.account(address),
63
- historicalApi.query.balances.locks(address),
60
+ historicApi.query.system.account(address),
61
+ historicApi.query.balances.locks(address),
64
62
  ]);
65
63
  const { data: { free, reserved, feeFrozen, miscFrozen }, nonce, } = accountInfo;
66
64
  const at = {
@@ -85,16 +83,16 @@ class AccountsBalanceInfoService extends AbstractService_1.AbstractService {
85
83
  }
86
84
  let locks, header, accountInfo, accountData;
87
85
  // We assume the first token is the native token
88
- if (token.toUpperCase() === api.registry.chainTokens[0].toUpperCase()) {
86
+ if (token.toUpperCase() === historicApi.registry.chainTokens[0].toUpperCase()) {
89
87
  [header, locks, accountInfo] = await Promise.all([
90
88
  api.rpc.chain.getHeader(hash),
91
- api.query.balances.locks.at(hash, address),
92
- api.query.system.account.at(hash, address),
89
+ historicApi.query.balances.locks(address),
90
+ historicApi.query.system.account(address),
93
91
  ]);
94
92
  accountData =
95
93
  accountInfo.data != null
96
94
  ? accountInfo.data
97
- : await api.query.balances.account.at(hash, address);
95
+ : await historicApi.query.balances.account(address);
98
96
  }
99
97
  else {
100
98
  // Assume we are using ORML token pallet
@@ -102,11 +100,11 @@ class AccountsBalanceInfoService extends AbstractService_1.AbstractService {
102
100
  try {
103
101
  [header, locksAny, accountDataAny, accountInfo] = await Promise.all([
104
102
  api.rpc.chain.getHeader(hash),
105
- api.query.tokens.locks.at(hash, address, { Token: token }),
106
- api.query.tokens.accounts.at(hash, address, {
103
+ historicApi.query.tokens.locks(address, { Token: token }),
104
+ historicApi.query.tokens.accounts(address, {
107
105
  Token: token,
108
106
  }),
109
- api.query.system.account.at(hash, address),
107
+ historicApi.query.system.account(address),
110
108
  ]);
111
109
  }
112
110
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"AccountsBalanceInfoService.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsBalanceInfoService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccountsBalanceInfoService.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsBalanceInfoService.ts"],"names":[],"mappings":"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"}
@@ -4,52 +4,93 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers");
7
- const metadata_1 = require("../../test-helpers/metadata/metadata");
8
7
  const registries_1 = require("../../test-helpers/registries");
9
- const typeFactory_1 = require("../../test-helpers/typeFactory");
10
8
  const mock_1 = require("../test-helpers/mock");
11
9
  const balanceInfo789629_json_1 = __importDefault(require("../test-helpers/responses/accounts/balanceInfo789629.json"));
12
10
  const AccountsBalanceInfoService_1 = require("./AccountsBalanceInfoService");
13
- const accountsBalanceInfoService = new AccountsBalanceInfoService_1.AccountsBalanceInfoService(mock_1.mockApi);
14
- /**
15
- * Historical Queries MockApi
16
- */
17
- const historicalMockApi = {
11
+ const locksAt = (_address) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Vec<BalanceLock>', '0x047374616b696e672000e8764817000000000000000000000002'));
12
+ const accountAt = (_address) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('AccountInfo', '0x0600000003dbb656ab7400000000000000000000000000000000000000000000000000000000e8764817000000000000000000000000e87648170000000000000000000000'));
13
+ const freeBalanceAt = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Balance', 123456789));
14
+ const mockHistoricApi = {
15
+ registry: registries_1.polkadotRegistry,
18
16
  query: {
19
17
  balances: {
20
- freeBalance: async () => registries_1.polkadotRegistry.createType('Balance', 123456789),
18
+ freeBalance: freeBalanceAt,
21
19
  reservedBalance: async () => registries_1.polkadotRegistry.createType('Balance', 1),
22
- locks: async () => registries_1.polkadotRegistry.createType('Vec<BalanceLock>', []),
20
+ locks: locksAt,
23
21
  },
24
22
  system: {
25
23
  accountNonce: async () => registries_1.polkadotRegistry.createType('Index', 1),
24
+ account: accountAt,
26
25
  },
27
26
  },
28
27
  };
28
+ const mockApi = {
29
+ ...mock_1.defaultMockApi,
30
+ at: (_hash) => mockHistoricApi,
31
+ };
32
+ const accountsBalanceInfoService = new AccountsBalanceInfoService_1.AccountsBalanceInfoService(mockApi);
29
33
  describe('AccountsBalanceInfoService', () => {
30
34
  describe('fetchAccountBalanceInfo', () => {
31
35
  it('works when ApiPromise works (block 789629)', async () => {
32
- expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountsBalanceInfoService.fetchAccountBalanceInfo(mock_1.blockHash789629, mock_1.testAddress, 'DOT'))).toStrictEqual(balanceInfo789629_json_1.default);
36
+ const tempHistoricApi = { ...mockHistoricApi };
37
+ tempHistoricApi.query.balances.freeBalance = undefined;
38
+ const tempMockApi = {
39
+ ...mock_1.defaultMockApi,
40
+ at: (_hash) => tempHistoricApi,
41
+ };
42
+ const tempAccountsBalanceInfoService = new AccountsBalanceInfoService_1.AccountsBalanceInfoService(tempMockApi);
43
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await tempAccountsBalanceInfoService.fetchAccountBalanceInfo(mock_1.blockHash789629, mockHistoricApi, mock_1.testAddress, 'DOT'))).toStrictEqual(balanceInfo789629_json_1.default);
44
+ });
45
+ it('Correctly queries historical blocks', async () => {
46
+ const result = await accountsBalanceInfoService.fetchAccountBalanceInfo(mock_1.blockHash789629, mockHistoricApi, mock_1.testAddress, 'DOT');
47
+ const expectedResponse = {
48
+ at: {
49
+ hash: '0x7b713de604a99857f6c25eacc115a4f28d2611a23d9ddff99ab0e4f1c17a8578',
50
+ height: '789629',
51
+ },
52
+ feeFrozen: '100000000000',
53
+ free: '501090793179',
54
+ locks: [
55
+ {
56
+ amount: '100000000000',
57
+ id: '0x7374616b696e6720',
58
+ reasons: 'All',
59
+ },
60
+ ],
61
+ miscFrozen: '100000000000',
62
+ nonce: '6',
63
+ reserved: '0',
64
+ tokenSymbol: 'DOT',
65
+ };
66
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(result)).toStrictEqual(expectedResponse);
33
67
  });
34
68
  describe('token recognition', () => {
69
+ const tokenHistoricApi = { ...mockHistoricApi };
70
+ Object.assign(tokenHistoricApi.query.system.account, { at: true });
71
+ tokenHistoricApi.query.balances.freeBalance = undefined;
72
+ const tokenMockApi = {
73
+ ...mock_1.defaultMockApi,
74
+ at: (_hash) => tokenHistoricApi,
75
+ };
76
+ const tokenAccountsBalanceInfoService = new AccountsBalanceInfoService_1.AccountsBalanceInfoService(tokenMockApi);
35
77
  let tempQueryTokens, tempQueryBalance, mockTokensLocksAt, mockTokenAccountAt, mockBalancesLocksAt;
36
78
  beforeAll(() => {
37
79
  // Important: these temp values should never be reassinged. They are used so we can assign
38
80
  // the mockApi properties back to their original values after this sub-section of tests run.
39
- tempQueryTokens = mock_1.mockApi.query.tokens;
40
- tempQueryBalance = mock_1.mockApi.query.balances;
41
- const tokensAccountAt = async (hash, address) => (await mock_1.mockApi.query.system.account.at(hash, address)).data;
81
+ tempQueryTokens = tokenHistoricApi.query.tokens;
82
+ tempQueryBalance = tokenHistoricApi.query.balances;
83
+ const tokensAccountAt = async (address) => (await tokenHistoricApi.query.system.account(address)).data;
42
84
  // Wrap our functions in a jest mock so we can collect data on how they are called
43
- mockTokensLocksAt = jest.fn(mock_1.mockApi.query.balances.locks.at);
85
+ mockTokensLocksAt = jest.fn(tokenHistoricApi.query.balances.locks);
44
86
  mockTokenAccountAt = jest.fn(tokensAccountAt);
45
- mock_1.mockApi.query.tokens = {
46
- locks: { at: mockTokensLocksAt },
47
- accounts: { at: mockTokenAccountAt },
48
- };
49
- mockBalancesLocksAt = jest.fn(mock_1.mockApi.query.balances.locks.at);
50
- mock_1.mockApi.query.balances = {
51
- locks: { at: mockBalancesLocksAt },
87
+ tokenHistoricApi.query.tokens = {
88
+ locks: mockTokensLocksAt,
89
+ accounts: mockTokenAccountAt,
52
90
  };
91
+ mockBalancesLocksAt = jest.fn(tokenHistoricApi.query.balances.locks);
92
+ tokenHistoricApi.query.balances.locks =
93
+ mockBalancesLocksAt;
53
94
  });
54
95
  afterEach(() => {
55
96
  // Clear data about how the mocks where called after each `it` test.
@@ -58,45 +99,25 @@ describe('AccountsBalanceInfoService', () => {
58
99
  mockBalancesLocksAt.mockClear();
59
100
  });
60
101
  afterAll(() => {
61
- mock_1.mockApi.query.tokens = tempQueryTokens;
62
- mock_1.mockApi.query.balances = tempQueryBalance;
102
+ tokenHistoricApi.query.tokens = tempQueryTokens;
103
+ tokenHistoricApi.query.balances = tempQueryBalance;
63
104
  });
64
105
  it('only has `["DOT"]` (all uppercase chars) for the mockApi registry', () => {
65
- expect(mock_1.mockApi.registry.chainTokens).toStrictEqual(['DOT']);
66
- expect(mock_1.mockApi.registry.chainDecimals).toStrictEqual([12]);
106
+ expect(tokenHistoricApi.registry.chainTokens).toStrictEqual(['DOT']);
107
+ expect(tokenHistoricApi.registry.chainDecimals).toStrictEqual([12]);
67
108
  });
68
109
  it('querrys tokens pallet storage with a non-native token', async () => {
69
- expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountsBalanceInfoService.fetchAccountBalanceInfo(mock_1.blockHash789629, mock_1.testAddress, 'fOoToKeN')).tokenSymbol).toEqual('fOoToKeN');
110
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await tokenAccountsBalanceInfoService.fetchAccountBalanceInfo(mock_1.blockHash789629, tokenHistoricApi, mock_1.testAddress, 'fOoToKeN')).tokenSymbol).toEqual('fOoToKeN');
70
111
  expect(mockTokensLocksAt).toBeCalled();
71
112
  expect(mockTokenAccountAt).toBeCalled();
72
113
  expect(mockBalancesLocksAt).not.toBeCalled();
73
114
  });
74
115
  it('does not query tokens pallet storage with the native token', async () => {
75
- expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountsBalanceInfoService.fetchAccountBalanceInfo(mock_1.blockHash789629, mock_1.testAddress, 'doT')).tokenSymbol).toEqual('doT');
116
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await tokenAccountsBalanceInfoService.fetchAccountBalanceInfo(mock_1.blockHash789629, tokenHistoricApi, mock_1.testAddress, 'doT')).tokenSymbol).toEqual('doT');
76
117
  expect(mockTokensLocksAt).not.toBeCalled();
77
118
  expect(mockTokenAccountAt).not.toBeCalled();
78
119
  expect(mockBalancesLocksAt).toBeCalled();
79
120
  });
80
- it('Correctly queries historical blocks', async () => {
81
- // Set the at to a historical runtime, before the storage key format changed
82
- mock_1.mockApi.at = () => Promise.resolve().then(() => historicalMockApi);
83
- const result = await accountsBalanceInfoService.fetchAccountBalanceInfo(mock_1.blockHash789629, mock_1.testAddress, 'DOT');
84
- const expectedResponse = {
85
- at: {
86
- hash: '0x7b713de604a99857f6c25eacc115a4f28d2611a23d9ddff99ab0e4f1c17a8578',
87
- height: '789629',
88
- },
89
- feeFrozen: '0',
90
- free: '123456789',
91
- locks: [],
92
- miscFrozen: '0',
93
- nonce: '1',
94
- reserved: '1',
95
- tokenSymbol: 'DOT',
96
- };
97
- expect((0, sanitizeNumbers_1.sanitizeNumbers)(result)).toStrictEqual(expectedResponse);
98
- mock_1.mockApi.at = async () => (0, typeFactory_1.createApiWithAugmentations)(metadata_1.polkadotMetadata.toHex());
99
- });
100
121
  });
101
122
  });
102
123
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AccountsBalanceInfoService.spec.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsBalanceInfoService.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccountsBalanceInfoService.spec.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsBalanceInfoService.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1,4 @@
1
- export {};
1
+ import { Option } from '@polkadot/types';
2
+ import { AccountId, Hash, StakingLedger } from '@polkadot/types/interfaces';
3
+ export declare const bondedAt: (_hash: Hash, _address: string) => Promise<Option<AccountId>>;
4
+ export declare const ledgerAt: (_hash: Hash, _address: string) => Promise<Option<StakingLedger>>;
@@ -3,29 +3,45 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- /* eslint-disable @typescript-eslint/no-explicit-any */
7
- /* eslint-disable @typescript-eslint/no-unsafe-member-access */
6
+ exports.ledgerAt = exports.bondedAt = void 0;
8
7
  const http_errors_1 = require("http-errors");
9
8
  const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers");
10
9
  const registries_1 = require("../../test-helpers/registries");
11
10
  const mock_1 = require("../test-helpers/mock");
12
11
  const stakingInfo789629_json_1 = __importDefault(require("../test-helpers/responses/accounts/stakingInfo789629.json"));
13
12
  const AccountsStakingInfoService_1 = require("./AccountsStakingInfoService");
14
- const accountStakingInfoService = new AccountsStakingInfoService_1.AccountsStakingInfoService(mock_1.mockApi);
13
+ const bondedAt = (_hash, _address) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<AccountId>', mock_1.testAddressController));
14
+ exports.bondedAt = bondedAt;
15
+ const ledgerAt = (_hash, _address) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<StakingLedger>', '0x2c2a55b5e0d28cc772b47bb9b25981cbb69eca73f7c3388fb6464e7d24be470e0700e87648170700e8764817008c000000000100000002000000030000000400000005000000060000000700000008000000090000001700000018000000190000001a0000001b0000001c0000001d0000001e0000001f000000200000002100000022000000230000002400000025000000260000002700000028000000290000002a0000002b0000002c0000002d0000002e0000002f000000'));
16
+ exports.ledgerAt = ledgerAt;
17
+ const payeeAt = (_hash, _address) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('RewardDestination', 'Controller'));
18
+ const slashingSpansAt = (_hash, _address) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('SlashingSpans'));
19
+ const mockApi = {
20
+ ...mock_1.defaultMockApi,
21
+ query: {
22
+ staking: {
23
+ bonded: { at: exports.bondedAt },
24
+ ledger: { at: exports.ledgerAt },
25
+ payee: { at: payeeAt },
26
+ slashingSpans: { at: slashingSpansAt },
27
+ },
28
+ },
29
+ };
30
+ const accountStakingInfoService = new AccountsStakingInfoService_1.AccountsStakingInfoService(mockApi);
15
31
  describe('AccountsStakingInfoService', () => {
16
32
  describe('fetchAccountStakingInfo', () => {
17
33
  it('works with a valid stash address (block 789629)', async () => {
18
34
  expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountStakingInfoService.fetchAccountStakingInfo(mock_1.blockHash789629, mock_1.testAddress))).toStrictEqual(stakingInfo789629_json_1.default);
19
35
  });
20
36
  it('throws a 400 when the given address is not a stash', async () => {
21
- mock_1.mockApi.query.staking.bonded.at = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<AccountId>', null));
37
+ mockApi.query.staking.bonded.at = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<AccountId>', null));
22
38
  await expect(accountStakingInfoService.fetchAccountStakingInfo(mock_1.blockHash789629, 'NotStash')).rejects.toStrictEqual(new http_errors_1.BadRequest('The address NotStash is not a stash address.'));
23
- mock_1.mockApi.query.staking.bonded.at = mock_1.bondedAt;
39
+ mockApi.query.staking.bonded.at = exports.bondedAt;
24
40
  });
25
41
  it('throws a 404 when the staking ledger cannot be found', async () => {
26
- mock_1.mockApi.query.staking.ledger.at = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<StakingLedger>', null));
42
+ mockApi.query.staking.ledger.at = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<StakingLedger>', null));
27
43
  await expect(accountStakingInfoService.fetchAccountStakingInfo(mock_1.blockHash789629, mock_1.testAddress)).rejects.toStrictEqual(new http_errors_1.InternalServerError(`Staking ledger could not be found for controller address "${mock_1.testAddressController.toString()}"`));
28
- mock_1.mockApi.query.staking.ledger.at = mock_1.ledgerAt;
44
+ mockApi.query.staking.ledger.at = exports.ledgerAt;
29
45
  });
30
46
  });
31
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AccountsStakingInfoService.spec.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsStakingInfoService.spec.ts"],"names":[],"mappings":";;;;;AAAA,uDAAuD;AACvD,+DAA+D;AAC/D,6CAA8D;AAE9D,oEAAiE;AACjE,8DAAiE;AACjE,+CAO8B;AAC9B,uHAAuF;AACvF,6EAA0E;AAE1E,MAAM,yBAAyB,GAAG,IAAI,uDAA0B,CAAC,cAAO,CAAC,CAAC;AAE1E,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC3C,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,CACL,IAAA,iCAAe,EACd,MAAM,yBAAyB,CAAC,uBAAuB,CACtD,sBAAe,EACf,kBAAW,CACX,CACD,CACD,CAAC,aAAa,CAAC,gCAAc,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,cAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAc,CAAC,EAAE,GAAG,GAAG,EAAE,CAC/C,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAC3B,6BAAgB,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,CACtD,CAAC;YAEH,MAAM,MAAM,CACX,yBAAyB,CAAC,uBAAuB,CAChD,sBAAe,EACf,UAAU,CACV,CACD,CAAC,OAAO,CAAC,aAAa,CACtB,IAAI,wBAAU,CAAC,8CAA8C,CAAC,CAC9D,CAAC;YAED,cAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAc,CAAC,EAAE,GAAG,eAAQ,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,cAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAc,CAAC,EAAE,GAAG,GAAG,EAAE,CAC/C,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAC3B,6BAAgB,CAAC,UAAU,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAC1D,CAAC;YAEH,MAAM,MAAM,CACX,yBAAyB,CAAC,uBAAuB,CAChD,sBAAe,EACf,kBAAW,CACX,CACD,CAAC,OAAO,CAAC,aAAa,CACtB,IAAI,iCAAmB,CACtB,6DAA6D,4BAAqB,CAAC,QAAQ,EAAE,GAAG,CAChG,CACD,CAAC;YAED,cAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAc,CAAC,EAAE,GAAG,eAAQ,CAAC;QACrD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"AccountsStakingInfoService.spec.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsStakingInfoService.spec.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AccountsVestingInfoService = void 0;
4
+ const http_errors_1 = require("http-errors");
4
5
  const AbstractService_1 = require("../AbstractService");
5
6
  class AccountsVestingInfoService extends AbstractService_1.AbstractService {
6
7
  /**
@@ -11,18 +12,31 @@ class AccountsVestingInfoService extends AbstractService_1.AbstractService {
11
12
  */
12
13
  async fetchAccountVestingInfo(hash, address) {
13
14
  const { api } = this;
15
+ const historicApi = await api.at(hash);
16
+ if (!historicApi.query.vesting) {
17
+ throw new http_errors_1.BadRequest(`Vesting pallet does not exist on the specified blocks runtime version`);
18
+ }
14
19
  const [{ number }, vesting] = await Promise.all([
15
20
  api.rpc.chain.getHeader(hash),
16
- api.query.vesting.vesting.at(hash, address),
21
+ historicApi.query.vesting.vesting(address),
17
22
  ]);
18
23
  const at = {
19
24
  hash,
20
25
  height: number.unwrap().toString(10),
21
26
  };
22
- return {
23
- at,
24
- vesting: vesting.isNone ? {} : vesting.unwrap(),
25
- };
27
+ if (vesting.isNone) {
28
+ return {
29
+ at,
30
+ vesting: [],
31
+ };
32
+ }
33
+ else {
34
+ const unwrapVesting = vesting.unwrap();
35
+ return {
36
+ at,
37
+ vesting: Array.isArray(unwrapVesting) ? unwrapVesting : [unwrapVesting],
38
+ };
39
+ }
26
40
  }
27
41
  }
28
42
  exports.AccountsVestingInfoService = AccountsVestingInfoService;
@@ -1 +1 @@
1
- {"version":3,"file":"AccountsVestingInfoService.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsVestingInfoService.ts"],"names":[],"mappings":";;;AAGA,wDAAqD;AAErD,MAAa,0BAA2B,SAAQ,iCAAe;IAC9D;;;;;OAKG;IACH,KAAK,CAAC,uBAAuB,CAC5B,IAAe,EACf,OAAe;QAEf,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAErB,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;YAC7B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;SAC3C,CAAC,CAAC;QAEH,MAAM,EAAE,GAAG;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;SACpC,CAAC;QAEF,OAAO;YACN,EAAE;YACF,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;SAC/C,CAAC;IACH,CAAC;CACD;AA5BD,gEA4BC"}
1
+ {"version":3,"file":"AccountsVestingInfoService.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsVestingInfoService.ts"],"names":[],"mappings":";;;AACA,6CAAyC;AAGzC,wDAAqD;AAErD,MAAa,0BAA2B,SAAQ,iCAAe;IAC9D;;;;;OAKG;IACH,KAAK,CAAC,uBAAuB,CAC5B,IAAe,EACf,OAAe;QAEf,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAErB,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE;YAC/B,MAAM,IAAI,wBAAU,CACnB,uEAAuE,CACvE,CAAC;SACF;QAED,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;YAC7B,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;SAC1C,CAAC,CAAC;QAEH,MAAM,EAAE,GAAG;YACV,IAAI;YACJ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;SACpC,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,EAAE;YACnB,OAAO;gBACN,EAAE;gBACF,OAAO,EAAE,EAAE;aACX,CAAC;SACF;aAAM;YACN,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAEvC,OAAO;gBACN,EAAE;gBACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;aACvE,CAAC;SACF;IACF,CAAC;CACD;AA7CD,gEA6CC"}
@@ -4,14 +4,59 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers");
7
+ const polkadotV9110Metadata_1 = require("../../test-helpers/metadata/polkadotV9110Metadata");
8
+ const registries_1 = require("../../test-helpers/registries");
9
+ const typeFactory_1 = require("../../test-helpers/typeFactory");
7
10
  const mock_1 = require("../test-helpers/mock");
8
11
  const vestingInfo789629_json_1 = __importDefault(require("../test-helpers/responses/accounts/vestingInfo789629.json"));
9
12
  const AccountsVestingInfoService_1 = require("./AccountsVestingInfoService");
10
- const accountsVestingInfoService = new AccountsVestingInfoService_1.AccountsVestingInfoService(mock_1.mockApi);
13
+ const typeFactorApiV9110 = (0, typeFactory_1.createApiWithAugmentations)(polkadotV9110Metadata_1.polkadotMetadataRpcV9110);
14
+ const factory = new typeFactory_1.TypeFactory(typeFactorApiV9110);
15
+ const vestingRes = {
16
+ locked: '1749990000000000',
17
+ perBlock: '166475460',
18
+ startingBlock: '4961000',
19
+ };
20
+ const vestingAt = (_address) => Promise.resolve().then(() => {
21
+ const vestingInfo = typeFactorApiV9110.createType('PalletVestingVestingInfo', vestingRes);
22
+ const vecVestingInfo = factory.vecOf([vestingInfo]);
23
+ return factory.optionOf(vecVestingInfo);
24
+ });
25
+ const historicVestingAt = (_address) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<VestingInfo>', vestingRes));
26
+ const mockHistoricApi = {
27
+ query: {
28
+ vesting: {
29
+ vesting: vestingAt,
30
+ },
31
+ },
32
+ };
33
+ const mockApi = {
34
+ ...mock_1.defaultMockApi,
35
+ at: (_hash) => mockHistoricApi,
36
+ };
37
+ const accountsVestingInfoService = new AccountsVestingInfoService_1.AccountsVestingInfoService(mockApi);
11
38
  describe('AccountVestingInfoService', () => {
12
39
  describe('fetchAccountVestingInfo', () => {
13
- it('works when ApiPromise works (block 789629)', async () => {
40
+ it('works when ApiPromise works (block 789629) with V14 metadata', async () => {
41
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountsVestingInfoService.fetchAccountVestingInfo(mock_1.blockHash789629, mock_1.testAddress))).toStrictEqual(vestingInfo789629_json_1.default);
42
+ });
43
+ it('Vesting should return an empty array for None responses', async () => {
44
+ const tempVest = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<VestingInfo>', null));
45
+ mockHistoricApi.query.vesting.vesting = tempVest;
46
+ const expectedResponse = {
47
+ at: {
48
+ hash: '0x7b713de604a99857f6c25eacc115a4f28d2611a23d9ddff99ab0e4f1c17a8578',
49
+ height: '789629',
50
+ },
51
+ vesting: [],
52
+ };
53
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountsVestingInfoService.fetchAccountVestingInfo(mock_1.blockHash789629, mock_1.testAddress))).toStrictEqual(expectedResponse);
54
+ mockHistoricApi.query.vesting.vesting = vestingAt;
55
+ });
56
+ it('Should correctly adjust `Option<VestingInfo>` for pre V14 blocks to return an array', async () => {
57
+ mockHistoricApi.query.vesting.vesting = historicVestingAt;
14
58
  expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountsVestingInfoService.fetchAccountVestingInfo(mock_1.blockHash789629, mock_1.testAddress))).toStrictEqual(vestingInfo789629_json_1.default);
59
+ mockHistoricApi.query.vesting.vesting = vestingAt;
15
60
  });
16
61
  });
17
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"AccountsVestingInfoService.spec.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsVestingInfoService.spec.ts"],"names":[],"mappings":";;;;;AAAA,oEAAiE;AACjE,+CAA6E;AAC7E,uHAAuF;AACvF,6EAA0E;AAE1E,MAAM,0BAA0B,GAAG,IAAI,uDAA0B,CAAC,cAAO,CAAC,CAAC;AAE3E,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IAC1C,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,CACL,IAAA,iCAAe,EACd,MAAM,0BAA0B,CAAC,uBAAuB,CACvD,sBAAe,EACf,kBAAW,CACX,CACD,CACD,CAAC,aAAa,CAAC,gCAAc,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"AccountsVestingInfoService.spec.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsVestingInfoService.spec.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { ApiPromise } from '@polkadot/api';
2
+ import { ApiDecoration } from '@polkadot/api/types';
2
3
  import { BlockHash, Header } from '@polkadot/types/interfaces';
3
4
  import LRU from 'lru-cache';
4
5
  import { BlockWeightStore } from '../../types/chains-config';
@@ -31,7 +32,7 @@ export declare class BlocksService extends AbstractService {
31
32
  * @param hash `BlockHash` of the block to fetch.
32
33
  * @param FetchBlockOptions options for additonal information.
33
34
  */
34
- fetchBlock(hash: BlockHash, { eventDocs, extrinsicDocs, checkFinalized, queryFinalizedHead, omitFinalizedTag, }: FetchBlockOptions): Promise<IBlock>;
35
+ fetchBlock(hash: BlockHash, historicApi: ApiDecoration<'promise'>, { eventDocs, extrinsicDocs, checkFinalized, queryFinalizedHead, omitFinalizedTag, }: FetchBlockOptions): Promise<IBlock>;
35
36
  /**
36
37
  * Return the header of a block
37
38
  *