@substrate/api-sidecar 20.3.2 → 20.4.1

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 (178) hide show
  1. package/README.md +9 -0
  2. package/build/package.json +8 -18
  3. package/build/src/chains-config/assetHubKusamaControllers.js +17 -0
  4. package/build/src/chains-config/assetHubKusamaControllers.js.map +1 -1
  5. package/build/src/chains-config/assetHubNextWestendControllers.js +18 -0
  6. package/build/src/chains-config/assetHubNextWestendControllers.js.map +1 -1
  7. package/build/src/chains-config/assetHubPolkadotControllers.js +17 -0
  8. package/build/src/chains-config/assetHubPolkadotControllers.js.map +1 -1
  9. package/build/src/chains-config/assetHubWestendControllers.js +18 -0
  10. package/build/src/chains-config/assetHubWestendControllers.js.map +1 -1
  11. package/build/src/chains-config/index.d.ts +7 -1
  12. package/build/src/chains-config/index.js +38 -7
  13. package/build/src/chains-config/index.js.map +1 -1
  14. package/build/src/controllers/AbstractController.d.ts +13 -2
  15. package/build/src/controllers/AbstractController.js +56 -6
  16. package/build/src/controllers/AbstractController.js.map +1 -1
  17. package/build/src/controllers/accounts/AccountsAssetsController.d.ts +16 -0
  18. package/build/src/controllers/accounts/AccountsAssetsController.js +75 -8
  19. package/build/src/controllers/accounts/AccountsAssetsController.js.map +1 -1
  20. package/build/src/controllers/accounts/AccountsBalanceInfoController.d.ts +9 -0
  21. package/build/src/controllers/accounts/AccountsBalanceInfoController.js +50 -10
  22. package/build/src/controllers/accounts/AccountsBalanceInfoController.js.map +1 -1
  23. package/build/src/controllers/accounts/AccountsPoolAssetsController.d.ts +15 -0
  24. package/build/src/controllers/accounts/AccountsPoolAssetsController.js +74 -8
  25. package/build/src/controllers/accounts/AccountsPoolAssetsController.js.map +1 -1
  26. package/build/src/controllers/accounts/AccountsProxyInfoController.d.ts +1 -1
  27. package/build/src/controllers/accounts/AccountsProxyInfoController.js +30 -5
  28. package/build/src/controllers/accounts/AccountsProxyInfoController.js.map +1 -1
  29. package/build/src/controllers/accounts/AccountsStakingInfoController.d.ts +9 -0
  30. package/build/src/controllers/accounts/AccountsStakingInfoController.js +47 -6
  31. package/build/src/controllers/accounts/AccountsStakingInfoController.js.map +1 -1
  32. package/build/src/controllers/accounts/AccountsStakingPayoutsController.d.ts +9 -0
  33. package/build/src/controllers/accounts/AccountsStakingPayoutsController.js +71 -14
  34. package/build/src/controllers/accounts/AccountsStakingPayoutsController.js.map +1 -1
  35. package/build/src/controllers/accounts/AccountsVestingInfoController.d.ts +8 -0
  36. package/build/src/controllers/accounts/AccountsVestingInfoController.js +36 -8
  37. package/build/src/controllers/accounts/AccountsVestingInfoController.js.map +1 -1
  38. package/build/src/controllers/blocks/BlocksController.d.ts +10 -0
  39. package/build/src/controllers/blocks/BlocksController.js +244 -23
  40. package/build/src/controllers/blocks/BlocksController.js.map +1 -1
  41. package/build/src/controllers/blocks/BlocksExtrinsicsController.js +95 -36
  42. package/build/src/controllers/blocks/BlocksExtrinsicsController.js.map +1 -1
  43. package/build/src/controllers/blocks/BlocksRawExtrinsicsController.js +29 -4
  44. package/build/src/controllers/blocks/BlocksRawExtrinsicsController.js.map +1 -1
  45. package/build/src/controllers/controllerInjection.spec.js +5 -1
  46. package/build/src/controllers/controllerInjection.spec.js.map +1 -1
  47. package/build/src/controllers/index.d.ts +23 -0
  48. package/build/src/controllers/index.js +27 -4
  49. package/build/src/controllers/index.js.map +1 -1
  50. package/build/src/controllers/pallets/PalletsAssetConversionController.js +58 -6
  51. package/build/src/controllers/pallets/PalletsAssetConversionController.js.map +1 -1
  52. package/build/src/controllers/pallets/PalletsAssetsController.d.ts +8 -0
  53. package/build/src/controllers/pallets/PalletsAssetsController.js +38 -3
  54. package/build/src/controllers/pallets/PalletsAssetsController.js.map +1 -1
  55. package/build/src/controllers/pallets/PalletsConstsController.js +82 -18
  56. package/build/src/controllers/pallets/PalletsConstsController.js.map +1 -1
  57. package/build/src/controllers/pallets/PalletsDispatchablesController.d.ts +0 -8
  58. package/build/src/controllers/pallets/PalletsDispatchablesController.js +82 -28
  59. package/build/src/controllers/pallets/PalletsDispatchablesController.js.map +1 -1
  60. package/build/src/controllers/pallets/PalletsErrorsController.js +82 -18
  61. package/build/src/controllers/pallets/PalletsErrorsController.js.map +1 -1
  62. package/build/src/controllers/pallets/PalletsEventsController.js +82 -18
  63. package/build/src/controllers/pallets/PalletsEventsController.js.map +1 -1
  64. package/build/src/controllers/pallets/PalletsForeignAssetsController.d.ts +8 -0
  65. package/build/src/controllers/pallets/PalletsForeignAssetsController.js +38 -3
  66. package/build/src/controllers/pallets/PalletsForeignAssetsController.js.map +1 -1
  67. package/build/src/controllers/pallets/PalletsNominationPoolsController.js +58 -6
  68. package/build/src/controllers/pallets/PalletsNominationPoolsController.js.map +1 -1
  69. package/build/src/controllers/pallets/PalletsOnGoingReferendaController.js +30 -3
  70. package/build/src/controllers/pallets/PalletsOnGoingReferendaController.js.map +1 -1
  71. package/build/src/controllers/pallets/PalletsPoolAssetsController.js +30 -3
  72. package/build/src/controllers/pallets/PalletsPoolAssetsController.js.map +1 -1
  73. package/build/src/controllers/pallets/PalletsStakingProgressController.d.ts +1 -1
  74. package/build/src/controllers/pallets/PalletsStakingProgressController.js +30 -8
  75. package/build/src/controllers/pallets/PalletsStakingProgressController.js.map +1 -1
  76. package/build/src/controllers/pallets/PalletsStakingValidatorsController.js +30 -3
  77. package/build/src/controllers/pallets/PalletsStakingValidatorsController.js.map +1 -1
  78. package/build/src/controllers/pallets/PalletsStorageController.js +84 -19
  79. package/build/src/controllers/pallets/PalletsStorageController.js.map +1 -1
  80. package/build/src/controllers/rc/accounts/RcAccountsBalanceInfoController.d.ts +15 -0
  81. package/build/src/controllers/rc/accounts/RcAccountsBalanceInfoController.js +65 -0
  82. package/build/src/controllers/rc/accounts/RcAccountsBalanceInfoController.js.map +1 -0
  83. package/build/src/controllers/rc/accounts/RcAccountsProxyInfoController.d.ts +15 -0
  84. package/build/src/controllers/rc/accounts/RcAccountsProxyInfoController.js +59 -0
  85. package/build/src/controllers/rc/accounts/RcAccountsProxyInfoController.js.map +1 -0
  86. package/build/src/controllers/rc/accounts/index.d.ts +2 -0
  87. package/build/src/controllers/rc/accounts/index.js +26 -0
  88. package/build/src/controllers/rc/accounts/index.js.map +1 -0
  89. package/build/src/controllers/rc/blocks/RcBlocksController.d.ts +17 -0
  90. package/build/src/controllers/rc/blocks/RcBlocksController.js +263 -0
  91. package/build/src/controllers/rc/blocks/RcBlocksController.js.map +1 -0
  92. package/build/src/controllers/rc/blocks/RcBlocksExtrinsicsController.d.ts +11 -0
  93. package/build/src/controllers/rc/blocks/RcBlocksExtrinsicsController.js +80 -0
  94. package/build/src/controllers/rc/blocks/RcBlocksExtrinsicsController.js.map +1 -0
  95. package/build/src/controllers/rc/blocks/RcBlocksRawExtrinsicsController.d.ts +10 -0
  96. package/build/src/controllers/rc/blocks/RcBlocksRawExtrinsicsController.js +60 -0
  97. package/build/src/controllers/rc/blocks/RcBlocksRawExtrinsicsController.js.map +1 -0
  98. package/build/src/controllers/rc/blocks/RcBlocksTraceController.d.ts +12 -0
  99. package/build/src/controllers/rc/blocks/RcBlocksTraceController.js +89 -0
  100. package/build/src/controllers/rc/blocks/RcBlocksTraceController.js.map +1 -0
  101. package/build/src/controllers/rc/blocks/index.d.ts +4 -0
  102. package/build/src/controllers/rc/blocks/index.js +30 -0
  103. package/build/src/controllers/rc/blocks/index.js.map +1 -0
  104. package/build/src/controllers/rc/index.d.ts +4 -0
  105. package/build/src/controllers/rc/index.js +36 -0
  106. package/build/src/controllers/rc/index.js.map +1 -0
  107. package/build/src/controllers/rc/node/RcNodeNetworkController.d.ts +40 -0
  108. package/build/src/controllers/rc/node/RcNodeNetworkController.js +76 -0
  109. package/build/src/controllers/rc/node/RcNodeNetworkController.js.map +1 -0
  110. package/build/src/controllers/rc/node/RcNodeTransactionPoolController.d.ts +27 -0
  111. package/build/src/controllers/rc/node/RcNodeTransactionPoolController.js +66 -0
  112. package/build/src/controllers/rc/node/RcNodeTransactionPoolController.js.map +1 -0
  113. package/build/src/controllers/rc/node/RcNodeVersionController.d.ts +24 -0
  114. package/build/src/controllers/rc/node/RcNodeVersionController.js +59 -0
  115. package/build/src/controllers/rc/node/RcNodeVersionController.js.map +1 -0
  116. package/build/src/controllers/rc/node/index.d.ts +3 -0
  117. package/build/src/controllers/rc/node/index.js +13 -0
  118. package/build/src/controllers/rc/node/index.js.map +1 -0
  119. package/build/src/controllers/rc/pallets/RcPalletsConstsController.d.ts +10 -0
  120. package/build/src/controllers/rc/pallets/RcPalletsConstsController.js +79 -0
  121. package/build/src/controllers/rc/pallets/RcPalletsConstsController.js.map +1 -0
  122. package/build/src/controllers/rc/pallets/RcPalletsDispatchablesController.d.ts +10 -0
  123. package/build/src/controllers/rc/pallets/RcPalletsDispatchablesController.js +79 -0
  124. package/build/src/controllers/rc/pallets/RcPalletsDispatchablesController.js.map +1 -0
  125. package/build/src/controllers/rc/pallets/RcPalletsErrorsController.d.ts +10 -0
  126. package/build/src/controllers/rc/pallets/RcPalletsErrorsController.js +79 -0
  127. package/build/src/controllers/rc/pallets/RcPalletsErrorsController.js.map +1 -0
  128. package/build/src/controllers/rc/pallets/RcPalletsEventsController.d.ts +10 -0
  129. package/build/src/controllers/rc/pallets/RcPalletsEventsController.js +79 -0
  130. package/build/src/controllers/rc/pallets/RcPalletsEventsController.js.map +1 -0
  131. package/build/src/controllers/rc/pallets/RcPalletsOnGoingReferendaController.d.ts +9 -0
  132. package/build/src/controllers/rc/pallets/RcPalletsOnGoingReferendaController.js +52 -0
  133. package/build/src/controllers/rc/pallets/RcPalletsOnGoingReferendaController.js.map +1 -0
  134. package/build/src/controllers/rc/pallets/RcPalletsStorageController.d.ts +10 -0
  135. package/build/src/controllers/rc/pallets/RcPalletsStorageController.js +81 -0
  136. package/build/src/controllers/rc/pallets/RcPalletsStorageController.js.map +1 -0
  137. package/build/src/controllers/rc/pallets/index.d.ts +6 -0
  138. package/build/src/controllers/rc/pallets/index.js +34 -0
  139. package/build/src/controllers/rc/pallets/index.js.map +1 -0
  140. package/build/src/controllers/rc/runtime/RcRuntimeCodeController.d.ts +26 -0
  141. package/build/src/controllers/rc/runtime/RcRuntimeCodeController.js +68 -0
  142. package/build/src/controllers/rc/runtime/RcRuntimeCodeController.js.map +1 -0
  143. package/build/src/controllers/rc/runtime/RcRuntimeMetadataController.d.ts +47 -0
  144. package/build/src/controllers/rc/runtime/RcRuntimeMetadataController.js +140 -0
  145. package/build/src/controllers/rc/runtime/RcRuntimeMetadataController.js.map +1 -0
  146. package/build/src/controllers/rc/runtime/RcRuntimeSpecController.d.ts +34 -0
  147. package/build/src/controllers/rc/runtime/RcRuntimeSpecController.js +76 -0
  148. package/build/src/controllers/rc/runtime/RcRuntimeSpecController.js.map +1 -0
  149. package/build/src/controllers/rc/runtime/index.d.ts +3 -0
  150. package/build/src/controllers/rc/runtime/index.js +28 -0
  151. package/build/src/controllers/rc/runtime/index.js.map +1 -0
  152. package/build/src/main.js +4 -0
  153. package/build/src/main.js.map +1 -1
  154. package/build/src/middleware/validate/index.d.ts +1 -0
  155. package/build/src/middleware/validate/index.js +3 -1
  156. package/build/src/middleware/validate/index.js.map +1 -1
  157. package/build/src/middleware/validate/validateUseRcBlockMiddleware.d.ts +10 -0
  158. package/build/src/middleware/validate/validateUseRcBlockMiddleware.js +58 -0
  159. package/build/src/middleware/validate/validateUseRcBlockMiddleware.js.map +1 -0
  160. package/build/src/services/accounts/AccountsStakingInfoService.js +0 -1
  161. package/build/src/services/accounts/AccountsStakingInfoService.js.map +1 -1
  162. package/build/src/services/blocks/BlocksService.js +15 -1
  163. package/build/src/services/blocks/BlocksService.js.map +1 -1
  164. package/build/src/services/pallets/PalletsStakingProgressService.d.ts +56 -0
  165. package/build/src/services/pallets/PalletsStakingProgressService.js +140 -21
  166. package/build/src/services/pallets/PalletsStakingProgressService.js.map +1 -1
  167. package/build/src/services/pallets/PalletsStakingProgressService.spec.js +255 -43
  168. package/build/src/services/pallets/PalletsStakingProgressService.spec.js.map +1 -1
  169. package/build/src/types/requests.d.ts +1 -0
  170. package/build/src/types/responses/AccountAssets.d.ts +4 -0
  171. package/build/src/types/responses/AccountBalanceInfo.d.ts +2 -0
  172. package/build/src/types/responses/AccountPoolAssets.d.ts +6 -2
  173. package/build/src/types/responses/AccountProxyInfo.d.ts +2 -0
  174. package/build/src/types/responses/AccountStakingInfo.d.ts +2 -0
  175. package/build/src/types/responses/AccountStakingPayouts.d.ts +2 -0
  176. package/build/src/types/responses/AccountVestingInfo.d.ts +2 -0
  177. package/build/src/types/responses/PalletStakingProgress.d.ts +2 -0
  178. package/package.json +8 -18
@@ -20,6 +20,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  const util_1 = require("@polkadot/util");
22
22
  const http_errors_1 = require("http-errors");
23
+ const apiRegistry_1 = require("../../apiRegistry");
23
24
  const validate_1 = require("../../middleware/validate");
24
25
  const services_1 = require("../../services");
25
26
  const PromiseQueue_1 = require("../../util/PromiseQueue");
@@ -46,9 +47,17 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
46
47
  * - (Optional for `/blocks/{blockId}) `paraId`: When it is set, it will return only the decoded
47
48
  * XCM messages for the specified paraId/parachain Id. To activate this functionality, ensure
48
49
  * that the `decodedXcmMsgs` parameter is set to true.
50
+ * - (Optional for `/blocks/head`) `useRcBlock`: When set to `true`, it will use the latest
51
+ * relay chain block to determine the corresponding Asset Hub block. Only supported for
52
+ * Asset Hub endpoints with relay chain API available.
49
53
  *
50
54
  *
51
55
  * Returns:
56
+ * - When using `useRcBlock` parameter: An array of response objects, one for each Asset Hub block found
57
+ * corresponding to the relay chain block. Returns empty array `[]` if no Asset Hub blocks found.
58
+ * - When using standard block identifiers or no query params: A single response object.
59
+ *
60
+ * Response object structure:
52
61
  * - `number`: Block height.
53
62
  * - `hash`: The block's hash.
54
63
  * - `parentHash`: The hash of the parent block.
@@ -79,6 +88,8 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
79
88
  * finalization with the `method` and `data` for each.
80
89
  * - `decodedXcmMsgs`: An array of the decoded XCM messages found within the extrinsics
81
90
  * of the requested block.
91
+ * - `rcBlockNumber`: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.
92
+ * - `ahTimestamp`: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.
82
93
  *
83
94
  * Note: Block finalization does not correspond to consensus, i.e. whether the block is in the
84
95
  * canonical chain. It denotes the finalization of block _construction._
@@ -126,15 +137,32 @@ class BlocksController extends AbstractController_1.default {
126
137
  * @param _req Express Request
127
138
  * @param res Express Response
128
139
  */
129
- this.getLatestBlock = async ({ query: { eventDocs, extrinsicDocs, finalized, noFees, decodedXcmMsgs, paraId }, method, route }, res) => {
140
+ this.getLatestBlock = async ({ query: { eventDocs, extrinsicDocs, finalized, noFees, decodedXcmMsgs, paraId, useRcBlock }, method, route }, res) => {
141
+ var _a, _b, _c;
130
142
  const eventDocsArg = eventDocs === 'true';
131
143
  const extrinsicDocsArg = extrinsicDocs === 'true';
144
+ const useRcBlockArg = useRcBlock === 'true';
132
145
  let hash, queryFinalizedHead, omitFinalizedTag;
146
+ let rcBlockNumber;
133
147
  if (!this.options.finalizes) {
134
148
  // If the network chain doesn't finalize blocks, we dont want a finalized tag.
135
149
  omitFinalizedTag = true;
136
150
  queryFinalizedHead = false;
137
- hash = (await this.api.rpc.chain.getHeader()).hash;
151
+ if (useRcBlockArg) {
152
+ const rcApi = (_a = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _a === void 0 ? void 0 : _a.api;
153
+ const rcHeader = await rcApi.rpc.chain.getHeader();
154
+ const rcHash = rcHeader.hash;
155
+ rcBlockNumber = rcHeader.number.toString();
156
+ hash = await this.getAhAtFromRcAt(rcHash);
157
+ // Return empty array if no Asset Hub block found
158
+ if (!hash) {
159
+ BlocksController.sanitizedSend(res, []);
160
+ return;
161
+ }
162
+ }
163
+ else {
164
+ hash = (await this.api.rpc.chain.getHeader()).hash;
165
+ }
138
166
  }
139
167
  else if (finalized === 'false') {
140
168
  // We query the finalized head to know where the latest finalized block
@@ -142,12 +170,40 @@ class BlocksController extends AbstractController_1.default {
142
170
  // equal to the finalized head.
143
171
  omitFinalizedTag = false;
144
172
  queryFinalizedHead = true;
145
- hash = (await this.api.rpc.chain.getHeader()).hash;
173
+ if (useRcBlockArg) {
174
+ const rcApi = (_b = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _b === void 0 ? void 0 : _b.api;
175
+ const rcHeader = await rcApi.rpc.chain.getHeader();
176
+ const rcHash = rcHeader.hash;
177
+ rcBlockNumber = rcHeader.number.toString();
178
+ hash = await this.getAhAtFromRcAt(rcHash);
179
+ // Return empty array if no Asset Hub block found
180
+ if (!hash) {
181
+ BlocksController.sanitizedSend(res, []);
182
+ return;
183
+ }
184
+ }
185
+ else {
186
+ hash = (await this.api.rpc.chain.getHeader()).hash;
187
+ }
146
188
  }
147
189
  else {
148
190
  omitFinalizedTag = false;
149
191
  queryFinalizedHead = false;
150
- hash = await this.api.rpc.chain.getFinalizedHead();
192
+ if (useRcBlockArg) {
193
+ const rcApi = (_c = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _c === void 0 ? void 0 : _c.api;
194
+ const rcHash = await rcApi.rpc.chain.getFinalizedHead();
195
+ const rcHeader = await rcApi.rpc.chain.getHeader(rcHash);
196
+ rcBlockNumber = rcHeader.number.toString();
197
+ hash = await this.getAhAtFromRcAt(rcHash);
198
+ // Return empty array if no Asset Hub block found
199
+ if (!hash) {
200
+ BlocksController.sanitizedSend(res, []);
201
+ return;
202
+ }
203
+ }
204
+ else {
205
+ hash = await this.api.rpc.chain.getFinalizedHead();
206
+ }
151
207
  }
152
208
  const noFeesArg = noFees === 'true';
153
209
  const decodedXcmMsgsArg = decodedXcmMsgs === 'true';
@@ -172,13 +228,37 @@ class BlocksController extends AbstractController_1.default {
172
228
  Number(options.paraId);
173
229
  const isBlockCached = this.blockStore.get(cacheKey);
174
230
  if (isBlockCached) {
175
- BlocksController.sanitizedSend(res, isBlockCached);
231
+ if (rcBlockNumber) {
232
+ const apiAt = await this.api.at(hash);
233
+ const ahTimestamp = await apiAt.query.timestamp.now();
234
+ const enhancedCachedResult = {
235
+ ...isBlockCached,
236
+ rcBlockNumber,
237
+ ahTimestamp: ahTimestamp.toString(),
238
+ };
239
+ BlocksController.sanitizedSend(res, [enhancedCachedResult]);
240
+ }
241
+ else {
242
+ BlocksController.sanitizedSend(res, isBlockCached);
243
+ }
176
244
  return;
177
245
  }
178
246
  const historicApi = await this.api.at(hash);
179
247
  const block = await this.service.fetchBlock(hash, historicApi, options);
180
248
  this.blockStore.set(cacheKey, block);
181
- BlocksController.sanitizedSend(res, block);
249
+ if (rcBlockNumber) {
250
+ const apiAt = await this.api.at(hash);
251
+ const ahTimestamp = await apiAt.query.timestamp.now();
252
+ const enhancedResult = {
253
+ ...block,
254
+ rcBlockNumber,
255
+ ahTimestamp: ahTimestamp.toString(),
256
+ };
257
+ BlocksController.sanitizedSend(res, [enhancedResult]);
258
+ }
259
+ else {
260
+ BlocksController.sanitizedSend(res, block);
261
+ }
182
262
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
183
263
  const path = route.path;
184
264
  if (res.locals.metrics) {
@@ -191,9 +271,24 @@ class BlocksController extends AbstractController_1.default {
191
271
  * @param req Express Request
192
272
  * @param res Express Response
193
273
  */
194
- this.getBlockById = async ({ params: { number }, query: { eventDocs, extrinsicDocs, noFees, finalizedKey, decodedXcmMsgs, paraId }, method, route, }, res) => {
274
+ this.getBlockById = async ({ params: { number }, query: { eventDocs, extrinsicDocs, noFees, finalizedKey, decodedXcmMsgs, paraId, useRcBlock }, method, route, }, res) => {
275
+ const useRcBlockArg = useRcBlock === 'true';
195
276
  const checkFinalized = (0, util_1.isHex)(number);
196
- const hash = await this.getHashForBlock(number);
277
+ let hash;
278
+ let rcBlockNumber;
279
+ if (useRcBlockArg) {
280
+ // Treat the 'number' parameter as a relay chain block identifier
281
+ rcBlockNumber = number;
282
+ hash = await this.getAhAtFromRcAt(number);
283
+ // Return empty array if no Asset Hub block found
284
+ if (!hash) {
285
+ BlocksController.sanitizedSend(res, []);
286
+ return;
287
+ }
288
+ }
289
+ else {
290
+ hash = await this.getHashForBlock(number);
291
+ }
197
292
  const eventDocsArg = eventDocs === 'true';
198
293
  const extrinsicDocsArg = extrinsicDocs === 'true';
199
294
  const finalizeOverride = finalizedKey === 'false';
@@ -225,15 +320,39 @@ class BlocksController extends AbstractController_1.default {
225
320
  Number(options.paraId);
226
321
  const isBlockCached = this.blockStore.get(cacheKey);
227
322
  if (isBlockCached) {
228
- BlocksController.sanitizedSend(res, isBlockCached);
323
+ if (rcBlockNumber) {
324
+ const apiAt = await this.api.at(hash);
325
+ const ahTimestamp = await apiAt.query.timestamp.now();
326
+ const enhancedCachedResult = {
327
+ ...isBlockCached,
328
+ rcBlockNumber,
329
+ ahTimestamp: ahTimestamp.toString(),
330
+ };
331
+ BlocksController.sanitizedSend(res, [enhancedCachedResult]);
332
+ }
333
+ else {
334
+ BlocksController.sanitizedSend(res, isBlockCached);
335
+ }
229
336
  return;
230
337
  }
231
338
  // HistoricApi to fetch any historic information that doesnt include the current runtime
232
339
  const historicApi = await this.api.at(hash);
233
340
  const block = await this.service.fetchBlock(hash, historicApi, options);
234
341
  this.blockStore.set(cacheKey, block);
235
- // We set the last param to true because we haven't queried the finalizedHead
236
- BlocksController.sanitizedSend(res, block);
342
+ if (rcBlockNumber) {
343
+ const apiAt = await this.api.at(hash);
344
+ const ahTimestamp = await apiAt.query.timestamp.now();
345
+ const enhancedResult = {
346
+ ...block,
347
+ rcBlockNumber,
348
+ ahTimestamp: ahTimestamp.toString(),
349
+ };
350
+ BlocksController.sanitizedSend(res, [enhancedResult]);
351
+ }
352
+ else {
353
+ // We set the last param to true because we haven't queried the finalizedHead
354
+ BlocksController.sanitizedSend(res, block);
355
+ }
237
356
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
238
357
  const path = route.path;
239
358
  if (res.locals.metrics) {
@@ -246,9 +365,41 @@ class BlocksController extends AbstractController_1.default {
246
365
  * @param req Express Request
247
366
  * @param res Express Response
248
367
  */
249
- this.getBlockHeaderById = async ({ params: { number } }, res) => {
250
- const hash = await this.getHashForBlock(number);
251
- BlocksController.sanitizedSend(res, await this.service.fetchBlockHeader(hash));
368
+ this.getBlockHeaderById = async ({ params: { number }, query: { useRcBlock } }, res) => {
369
+ const useRcBlockArg = useRcBlock === 'true';
370
+ let hash;
371
+ let rcBlockNumber;
372
+ if (useRcBlockArg) {
373
+ // Treat the 'number' parameter as a relay chain block identifier
374
+ rcBlockNumber = number;
375
+ hash = await this.getAhAtFromRcAt(number);
376
+ // Return empty array if no Asset Hub block found
377
+ if (!hash) {
378
+ BlocksController.sanitizedSend(res, []);
379
+ return;
380
+ }
381
+ }
382
+ else {
383
+ hash = await this.getHashForBlock(number);
384
+ }
385
+ const headerResult = await this.service.fetchBlockHeader(hash);
386
+ if (rcBlockNumber) {
387
+ const apiAt = await this.api.at(hash);
388
+ const ahTimestamp = await apiAt.query.timestamp.now();
389
+ const enhancedResult = {
390
+ parentHash: headerResult.parentHash,
391
+ number: headerResult.number,
392
+ stateRoot: headerResult.stateRoot,
393
+ extrinsicsRoot: headerResult.extrinsicsRoot,
394
+ digest: headerResult.digest,
395
+ rcBlockNumber,
396
+ ahTimestamp: ahTimestamp.toString(),
397
+ };
398
+ BlocksController.sanitizedSend(res, [enhancedResult]);
399
+ }
400
+ else {
401
+ BlocksController.sanitizedSend(res, headerResult);
402
+ }
252
403
  };
253
404
  /**
254
405
  * Return the header of the latest block
@@ -256,10 +407,53 @@ class BlocksController extends AbstractController_1.default {
256
407
  * @param req Express Request
257
408
  * @param res Express Response
258
409
  */
259
- this.getLatestBlockHeader = async ({ query: { finalized } }, res) => {
410
+ this.getLatestBlockHeader = async ({ query: { finalized, useRcBlock } }, res) => {
411
+ var _a;
260
412
  const paramFinalized = finalized !== 'false';
261
- const hash = paramFinalized ? await this.api.rpc.chain.getFinalizedHead() : undefined;
262
- BlocksController.sanitizedSend(res, await this.service.fetchBlockHeader(hash));
413
+ const useRcBlockArg = useRcBlock === 'true';
414
+ let hash;
415
+ let rcBlockNumber;
416
+ if (useRcBlockArg) {
417
+ const rcApi = (_a = apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]) === null || _a === void 0 ? void 0 : _a.api;
418
+ if (paramFinalized) {
419
+ const rcHash = await rcApi.rpc.chain.getFinalizedHead();
420
+ const rcHeader = await rcApi.rpc.chain.getHeader(rcHash);
421
+ rcBlockNumber = rcHeader.number.toString();
422
+ hash = await this.getAhAtFromRcAt(rcHash);
423
+ }
424
+ else {
425
+ const rcHeader = await rcApi.rpc.chain.getHeader();
426
+ const rcHash = rcHeader.hash;
427
+ rcBlockNumber = rcHeader.number.toString();
428
+ hash = await this.getAhAtFromRcAt(rcHash);
429
+ }
430
+ // Return empty array if no Asset Hub block found
431
+ if (!hash) {
432
+ BlocksController.sanitizedSend(res, []);
433
+ return;
434
+ }
435
+ }
436
+ else {
437
+ hash = paramFinalized ? await this.api.rpc.chain.getFinalizedHead() : undefined;
438
+ }
439
+ const headerResult = await this.service.fetchBlockHeader(hash);
440
+ if (rcBlockNumber) {
441
+ const apiAt = await this.api.at(hash);
442
+ const ahTimestamp = await apiAt.query.timestamp.now();
443
+ const enhancedResult = {
444
+ parentHash: headerResult.parentHash,
445
+ number: headerResult.number,
446
+ stateRoot: headerResult.stateRoot,
447
+ extrinsicsRoot: headerResult.extrinsicsRoot,
448
+ digest: headerResult.digest,
449
+ rcBlockNumber,
450
+ ahTimestamp: ahTimestamp.toString(),
451
+ };
452
+ BlocksController.sanitizedSend(res, [enhancedResult]);
453
+ }
454
+ else {
455
+ BlocksController.sanitizedSend(res, headerResult);
456
+ }
263
457
  };
264
458
  /**
265
459
  * Return a collection of blocks, given a range.
@@ -267,11 +461,12 @@ class BlocksController extends AbstractController_1.default {
267
461
  * @param req Express Request
268
462
  * @param res Express Response
269
463
  */
270
- this.getBlocks = async ({ query: { range, eventDocs, extrinsicDocs, noFees }, method, route }, res) => {
464
+ this.getBlocks = async ({ query: { range, eventDocs, extrinsicDocs, noFees, useRcBlock }, method, route }, res) => {
271
465
  if (!range)
272
466
  throw new http_errors_1.BadRequest('range query parameter must be inputted.');
273
467
  // We set a max range to 500 blocks.
274
468
  const rangeOfNums = this.parseRangeOfNumbersOrThrow(range, 500);
469
+ const useRcBlockArg = useRcBlock === 'true';
275
470
  const eventDocsArg = eventDocs === 'true';
276
471
  const extrinsicDocsArg = extrinsicDocs === 'true';
277
472
  const queryFinalizedHead = !this.options.finalizes ? false : true;
@@ -291,17 +486,43 @@ class BlocksController extends AbstractController_1.default {
291
486
  const blocksPromise = [];
292
487
  for (let i = 0; i < rangeOfNums.length; i++) {
293
488
  const result = pQueue.run(async () => {
294
- // Get block hash:
295
- const hash = await this.getHashForBlock(rangeOfNums[i].toString());
489
+ let hash;
490
+ let rcBlockNumber;
491
+ if (useRcBlockArg) {
492
+ // Treat range numbers as relay chain block identifiers
493
+ rcBlockNumber = rangeOfNums[i].toString();
494
+ hash = await this.getAhAtFromRcAt(rcBlockNumber);
495
+ // Skip this RC block if it doesn't have a corresponding AH block
496
+ if (!hash) {
497
+ return null;
498
+ }
499
+ }
500
+ else {
501
+ // Get block hash:
502
+ hash = await this.getHashForBlock(rangeOfNums[i].toString());
503
+ }
296
504
  // Get API at that hash:
297
505
  const historicApi = await this.api.at(hash);
298
506
  // Get block details using this API/hash:
299
- return await this.service.fetchBlock(hash, historicApi, options);
507
+ const block = await this.service.fetchBlock(hash, historicApi, options);
508
+ if (rcBlockNumber) {
509
+ // Add RC context to the block
510
+ const apiAt = await this.api.at(hash);
511
+ const ahTimestamp = await apiAt.query.timestamp.now();
512
+ return {
513
+ ...block,
514
+ rcBlockNumber,
515
+ ahTimestamp: ahTimestamp.toString(),
516
+ };
517
+ }
518
+ return block;
300
519
  });
301
520
  blocksPromise.push(result);
302
521
  }
303
- const blocks = (await Promise.all(blocksPromise));
522
+ const allBlocks = await Promise.all(blocksPromise);
304
523
  blocksPromise.length = 0;
524
+ // Filter out null values (skipped RC blocks that don't have corresponding AH blocks)
525
+ const blocks = allBlocks.filter((block) => block !== null);
305
526
  /**
306
527
  * Sort blocks from least to greatest.
307
528
  */
@@ -324,7 +545,7 @@ class BlocksController extends AbstractController_1.default {
324
545
  this.blockStore = options.blockStore;
325
546
  }
326
547
  initRoutes() {
327
- this.router.use(this.path, (0, validate_1.validateBoolean)(['eventDocs', 'extrinsicDocs', 'finalized']));
548
+ this.router.use(this.path, (0, validate_1.validateBoolean)(['eventDocs', 'extrinsicDocs', 'finalized']), validate_1.validateUseRcBlock);
328
549
  this.safeMountAsyncGetHandlers([
329
550
  ['/', this.getBlocks],
330
551
  ['/head', this.getLatestBlock],
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
+ const validate_1 = require("../../middleware/validate");
21
22
  const services_1 = require("../../services");
22
23
  const AbstractController_1 = __importDefault(require("../AbstractController"));
23
24
  class BlocksExtrinsicsController extends AbstractController_1.default {
@@ -28,48 +29,106 @@ class BlocksExtrinsicsController extends AbstractController_1.default {
28
29
  * @param _req Express Request
29
30
  * @param res Express Response
30
31
  */
31
- this.getExtrinsicByTimepoint = async ({ params: { blockId, extrinsicIndex }, query: { eventDocs, extrinsicDocs, noFees } }, res) => {
32
- const hash = await this.getHashForBlock(blockId);
33
- const eventDocsArg = eventDocs === 'true';
34
- const extrinsicDocsArg = extrinsicDocs === 'true';
35
- const noFeesArg = noFees === 'true';
36
- const options = {
37
- eventDocs: eventDocsArg,
38
- extrinsicDocs: extrinsicDocsArg,
39
- checkFinalized: true,
40
- queryFinalizedHead: false,
41
- omitFinalizedTag: true,
42
- noFees: noFeesArg,
43
- checkDecodedXcm: false,
44
- paraId: undefined,
45
- };
46
- const cacheKey = hash.toString() +
47
- Number(options.eventDocs) +
48
- Number(options.extrinsicDocs) +
49
- Number(options.checkFinalized) +
50
- Number(options.noFees) +
51
- Number(options.checkDecodedXcm);
52
- const isBlockCached = this.blockStore.get(cacheKey);
53
- const historicApi = await this.api.at(hash);
54
- const block = isBlockCached ? isBlockCached : await this.service.fetchBlock(hash, historicApi, options);
55
- if (!isBlockCached) {
56
- this.blockStore.set(cacheKey, block);
32
+ this.getExtrinsicByTimepoint = async ({ params: { blockId, extrinsicIndex }, query: { eventDocs, extrinsicDocs, noFees, useRcBlock } }, res) => {
33
+ const useRcBlockArg = useRcBlock === 'true';
34
+ if (useRcBlockArg) {
35
+ // Treat the blockId parameter as a relay chain block identifier
36
+ const rcBlockNumber = blockId;
37
+ const hash = await this.getAhAtFromRcAt(blockId);
38
+ // Return empty array if no Asset Hub block found
39
+ if (!hash) {
40
+ BlocksExtrinsicsController.sanitizedSend(res, []);
41
+ return;
42
+ }
43
+ const eventDocsArg = eventDocs === 'true';
44
+ const extrinsicDocsArg = extrinsicDocs === 'true';
45
+ const noFeesArg = noFees === 'true';
46
+ const options = {
47
+ eventDocs: eventDocsArg,
48
+ extrinsicDocs: extrinsicDocsArg,
49
+ checkFinalized: true,
50
+ queryFinalizedHead: false,
51
+ omitFinalizedTag: true,
52
+ noFees: noFeesArg,
53
+ checkDecodedXcm: false,
54
+ paraId: undefined,
55
+ };
56
+ const cacheKey = hash.toString() +
57
+ Number(options.eventDocs) +
58
+ Number(options.extrinsicDocs) +
59
+ Number(options.checkFinalized) +
60
+ Number(options.noFees) +
61
+ Number(options.checkDecodedXcm);
62
+ const isBlockCached = this.blockStore.get(cacheKey);
63
+ const historicApi = await this.api.at(hash);
64
+ const block = isBlockCached ? isBlockCached : await this.service.fetchBlock(hash, historicApi, options);
65
+ if (!isBlockCached) {
66
+ this.blockStore.set(cacheKey, block);
67
+ }
68
+ /**
69
+ * Verify our param `extrinsicIndex` is an integer represented as a string
70
+ */
71
+ this.parseNumberOrThrow(extrinsicIndex, '`exstrinsicIndex` path param is not a number');
72
+ /**
73
+ * Change extrinsicIndex from a type string to a number before passing it
74
+ * into any service.
75
+ */
76
+ const index = parseInt(extrinsicIndex, 10);
77
+ const extrinsic = this.service.fetchExtrinsicByIndex(block, index);
78
+ const apiAt = await this.api.at(hash);
79
+ const ahTimestamp = await apiAt.query.timestamp.now();
80
+ const enhancedResult = {
81
+ ...extrinsic,
82
+ rcBlockNumber,
83
+ ahTimestamp: ahTimestamp.toString(),
84
+ };
85
+ BlocksExtrinsicsController.sanitizedSend(res, [enhancedResult]);
86
+ }
87
+ else {
88
+ const hash = await this.getHashForBlock(blockId);
89
+ const eventDocsArg = eventDocs === 'true';
90
+ const extrinsicDocsArg = extrinsicDocs === 'true';
91
+ const noFeesArg = noFees === 'true';
92
+ const options = {
93
+ eventDocs: eventDocsArg,
94
+ extrinsicDocs: extrinsicDocsArg,
95
+ checkFinalized: true,
96
+ queryFinalizedHead: false,
97
+ omitFinalizedTag: true,
98
+ noFees: noFeesArg,
99
+ checkDecodedXcm: false,
100
+ paraId: undefined,
101
+ };
102
+ const cacheKey = hash.toString() +
103
+ Number(options.eventDocs) +
104
+ Number(options.extrinsicDocs) +
105
+ Number(options.checkFinalized) +
106
+ Number(options.noFees) +
107
+ Number(options.checkDecodedXcm);
108
+ const isBlockCached = this.blockStore.get(cacheKey);
109
+ const historicApi = await this.api.at(hash);
110
+ const block = isBlockCached ? isBlockCached : await this.service.fetchBlock(hash, historicApi, options);
111
+ if (!isBlockCached) {
112
+ this.blockStore.set(cacheKey, block);
113
+ }
114
+ /**
115
+ * Verify our param `extrinsicIndex` is an integer represented as a string
116
+ */
117
+ this.parseNumberOrThrow(extrinsicIndex, '`exstrinsicIndex` path param is not a number');
118
+ /**
119
+ * Change extrinsicIndex from a type string to a number before passing it
120
+ * into any service.
121
+ */
122
+ const index = parseInt(extrinsicIndex, 10);
123
+ const extrinsic = this.service.fetchExtrinsicByIndex(block, index);
124
+ BlocksExtrinsicsController.sanitizedSend(res, extrinsic);
57
125
  }
58
- /**
59
- * Verify our param `extrinsicIndex` is an integer represented as a string
60
- */
61
- this.parseNumberOrThrow(extrinsicIndex, '`exstrinsicIndex` path param is not a number');
62
- /**
63
- * Change extrinsicIndex from a type string to a number before passing it
64
- * into any service.
65
- */
66
- const index = parseInt(extrinsicIndex, 10);
67
- BlocksExtrinsicsController.sanitizedSend(res, this.service.fetchExtrinsicByIndex(block, index));
68
126
  };
69
127
  this.initRoutes();
70
128
  this.blockStore = options.blockStore;
71
129
  }
72
130
  initRoutes() {
131
+ this.router.use(this.path, validate_1.validateUseRcBlock);
73
132
  this.safeMountAsyncGetHandlers([['/:extrinsicIndex', this.getExtrinsicByTimepoint]]);
74
133
  }
75
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksExtrinsicsController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BlocksExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksExtrinsicsController.ts"],"names":[],"mappings":"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"}