@substrate/api-sidecar 20.3.2 → 20.4.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 (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 +6 -0
  12. package/build/src/chains-config/index.js +24 -1
  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
@@ -19,6 +19,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  const util_1 = require("@polkadot/util");
22
+ const middleware_1 = require("../../middleware");
22
23
  const services_1 = require("../../services");
23
24
  const AbstractController_1 = __importDefault(require("../AbstractController"));
24
25
  /**
@@ -35,41 +36,94 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
35
36
  class PalletsDispatchablesController extends AbstractController_1.default {
36
37
  constructor(api) {
37
38
  super(api, '/pallets/:palletId/dispatchables', new services_1.PalletsDispatchablesService(api));
38
- /**
39
- * Note: the `at` parameter is not provided because the call for dispatchables does not exist on the historicApi currently.
40
- * Support may be added for this in a future update.
41
- */
42
- this.getDispatchableById = async ({ query: { metadata }, params: { palletId, dispatchableItemId } }, res) => {
43
- const at = undefined;
44
- const hash = await this.getHashFromAt(at);
39
+ this.getDispatchableById = async ({ query: { metadata, at, useRcBlock }, params: { palletId, dispatchableItemId } }, res) => {
45
40
  const metadataArg = metadata === 'true';
46
- const historicApi = await this.api.at(hash);
47
- PalletsDispatchablesController.sanitizedSend(res, await this.service.fetchDispatchableItem(historicApi, {
48
- hash,
49
- // stringCamelCase ensures we don't have snake case or kebab case
50
- palletId: (0, util_1.stringCamelCase)(palletId),
51
- dispatchableItemId: (0, util_1.stringCamelCase)(dispatchableItemId),
52
- metadata: metadataArg,
53
- }));
41
+ if (useRcBlock === 'true') {
42
+ const rcAtResults = await this.getHashFromRcAt(at);
43
+ // Return empty array if no Asset Hub blocks found
44
+ if (rcAtResults.length === 0) {
45
+ PalletsDispatchablesController.sanitizedSend(res, []);
46
+ return;
47
+ }
48
+ // Process each Asset Hub block found
49
+ const results = [];
50
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
51
+ const historicApi = await this.api.at(ahHash);
52
+ const result = await this.service.fetchDispatchableItem(historicApi, {
53
+ hash: ahHash,
54
+ // stringCamelCase ensures we don't have snake case or kebab case
55
+ palletId: (0, util_1.stringCamelCase)(palletId),
56
+ dispatchableItemId: (0, util_1.stringCamelCase)(dispatchableItemId),
57
+ metadata: metadataArg,
58
+ });
59
+ const apiAt = await this.api.at(ahHash);
60
+ const ahTimestamp = await apiAt.query.timestamp.now();
61
+ const enhancedResult = {
62
+ ...result,
63
+ rcBlockNumber,
64
+ ahTimestamp: ahTimestamp.toString(),
65
+ };
66
+ results.push(enhancedResult);
67
+ }
68
+ PalletsDispatchablesController.sanitizedSend(res, results);
69
+ }
70
+ else {
71
+ const hash = await this.getHashFromAt(at);
72
+ const historicApi = await this.api.at(hash);
73
+ const result = await this.service.fetchDispatchableItem(historicApi, {
74
+ hash,
75
+ // stringCamelCase ensures we don't have snake case or kebab case
76
+ palletId: (0, util_1.stringCamelCase)(palletId),
77
+ dispatchableItemId: (0, util_1.stringCamelCase)(dispatchableItemId),
78
+ metadata: metadataArg,
79
+ });
80
+ PalletsDispatchablesController.sanitizedSend(res, result);
81
+ }
54
82
  };
55
- /**
56
- * Note: the `at` parameter is not provided because the call for dispatchables does not exist on the historicApi currently.
57
- * Support may be added for this in a future update.
58
- */
59
- this.getDispatchables = async ({ params: { palletId }, query: { onlyIds } }, res) => {
60
- const at = undefined;
61
- const hash = await this.getHashFromAt(at);
83
+ this.getDispatchables = async ({ params: { palletId }, query: { onlyIds, at, useRcBlock } }, res) => {
62
84
  const onlyIdsArg = onlyIds === 'true';
63
- const historicApi = await this.api.at(hash);
64
- PalletsDispatchablesController.sanitizedSend(res, await this.service.fetchDispatchables(historicApi, {
65
- hash,
66
- palletId: (0, util_1.stringCamelCase)(palletId),
67
- onlyIds: onlyIdsArg,
68
- }));
85
+ if (useRcBlock === 'true') {
86
+ const rcAtResults = await this.getHashFromRcAt(at);
87
+ // Return empty array if no Asset Hub blocks found
88
+ if (rcAtResults.length === 0) {
89
+ PalletsDispatchablesController.sanitizedSend(res, []);
90
+ return;
91
+ }
92
+ // Process each Asset Hub block found
93
+ const results = [];
94
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
95
+ const historicApi = await this.api.at(ahHash);
96
+ const result = await this.service.fetchDispatchables(historicApi, {
97
+ hash: ahHash,
98
+ palletId: (0, util_1.stringCamelCase)(palletId),
99
+ onlyIds: onlyIdsArg,
100
+ });
101
+ const apiAt = await this.api.at(ahHash);
102
+ const ahTimestamp = await apiAt.query.timestamp.now();
103
+ const enhancedResult = {
104
+ ...result,
105
+ rcBlockNumber,
106
+ ahTimestamp: ahTimestamp.toString(),
107
+ };
108
+ results.push(enhancedResult);
109
+ }
110
+ PalletsDispatchablesController.sanitizedSend(res, results);
111
+ }
112
+ else {
113
+ const hash = await this.getHashFromAt(at);
114
+ const historicApi = await this.api.at(hash);
115
+ const result = await this.service.fetchDispatchables(historicApi, {
116
+ hash,
117
+ palletId: (0, util_1.stringCamelCase)(palletId),
118
+ onlyIds: onlyIdsArg,
119
+ });
120
+ PalletsDispatchablesController.sanitizedSend(res, result);
121
+ }
69
122
  };
70
123
  this.initRoutes();
71
124
  }
72
125
  initRoutes() {
126
+ this.router.use(this.path, middleware_1.validateUseRcBlock);
73
127
  this.safeMountAsyncGetHandlers([
74
128
  ['/:dispatchableItemId', this.getDispatchableById],
75
129
  ['/', this.getDispatchables],
@@ -1 +1 @@
1
- {"version":3,"file":"PalletsDispatchablesController.js","sourceRoot":"","sources":["../../../../src/controllers/pallets/PalletsDispatchablesController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAExE,yCAAiD;AAGjD,6CAA6D;AAE7D,+EAAuD;AAEvD;;;;;;;;;;GAUG;AACH,MAAqB,8BAA+B,SAAQ,4BAA+C;IAG1G,YAAY,GAAW;QACtB,KAAK,CAAC,GAAG,EAAE,kCAAkC,EAAE,IAAI,sCAA2B,CAAC,GAAG,CAAC,CAAC,CAAC;QAYtF;;;WAGG;QACK,wBAAmB,GAAiE,KAAK,EAChG,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,EACjE,GAAG,EACa,EAAE;YAClB,MAAM,EAAE,GAAG,SAAS,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,QAAQ,KAAK,MAAM,CAAC;YACxC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAE5C,8BAA8B,CAAC,aAAa,CAC3C,GAAG,EACH,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,WAAW,EAAE;gBACrD,IAAI;gBACJ,iEAAiE;gBACjE,QAAQ,EAAE,IAAA,sBAAe,EAAC,QAAQ,CAAC;gBACnC,kBAAkB,EAAE,IAAA,sBAAe,EAAC,kBAAkB,CAAC;gBACvD,QAAQ,EAAE,WAAW;aACrB,CAAC,CACF,CAAC;QACH,CAAC,CAAC;QAEF;;;WAGG;QACK,qBAAgB,GAAmB,KAAK,EAC/C,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAC5C,GAAG,EACa,EAAE;YAClB,MAAM,EAAE,GAAG,SAAS,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,OAAO,KAAK,MAAM,CAAC;YACtC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAE5C,8BAA8B,CAAC,aAAa,CAC3C,GAAG,EACH,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,WAAW,EAAE;gBAClD,IAAI;gBACJ,QAAQ,EAAE,IAAA,sBAAe,EAAC,QAAQ,CAAC;gBACnC,OAAO,EAAE,UAAU;aACnB,CAAC,CACF,CAAC;QACH,CAAC,CAAC;QAxDD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC;YAC9B,CAAC,sBAAsB,EAAE,IAAI,CAAC,mBAAqC,CAAC;YACpE,CAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC;SAC5B,CAAC,CAAC;IACJ,CAAC;;AAbM,6CAAc,GAAG,sBAAsB,AAAzB,CAA0B;AACxC,8CAAe,GAAG,EAAE,AAAL,CAAM;kBAFR,8BAA8B"}
1
+ {"version":3,"file":"PalletsDispatchablesController.js","sourceRoot":"","sources":["../../../../src/controllers/pallets/PalletsDispatchablesController.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  const util_1 = require("@polkadot/util");
22
+ const middleware_1 = require("../../middleware");
22
23
  const services_1 = require("../../services");
23
24
  const AbstractController_1 = __importDefault(require("../AbstractController"));
24
25
  /**
@@ -35,31 +36,94 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
35
36
  class PalletsErrorsController extends AbstractController_1.default {
36
37
  constructor(api) {
37
38
  super(api, '/pallets/:palletId/errors', new services_1.PalletsErrorsService(api));
38
- this.getErrorById = async ({ query: { at, metadata }, params: { palletId, errorItemId } }, res) => {
39
+ this.getErrorById = async ({ query: { at, metadata, useRcBlock }, params: { palletId, errorItemId } }, res) => {
39
40
  const metadataArg = metadata === 'true';
40
- const hash = await this.getHashFromAt(at);
41
- const historicApi = await this.api.at(hash);
42
- PalletsErrorsController.sanitizedSend(res, await this.service.fetchErrorItem(historicApi, {
43
- hash,
44
- // stringCamelCase ensures we don't have snake case or kebab case
45
- palletId: (0, util_1.stringCamelCase)(palletId),
46
- errorItemId: (0, util_1.stringCamelCase)(errorItemId),
47
- metadata: metadataArg,
48
- }));
41
+ if (useRcBlock === 'true') {
42
+ const rcAtResults = await this.getHashFromRcAt(at);
43
+ // Return empty array if no Asset Hub blocks found
44
+ if (rcAtResults.length === 0) {
45
+ PalletsErrorsController.sanitizedSend(res, []);
46
+ return;
47
+ }
48
+ // Process each Asset Hub block found
49
+ const results = [];
50
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
51
+ const historicApi = await this.api.at(ahHash);
52
+ const result = await this.service.fetchErrorItem(historicApi, {
53
+ hash: ahHash,
54
+ // stringCamelCase ensures we don't have snake case or kebab case
55
+ palletId: (0, util_1.stringCamelCase)(palletId),
56
+ errorItemId: (0, util_1.stringCamelCase)(errorItemId),
57
+ metadata: metadataArg,
58
+ });
59
+ const apiAt = await this.api.at(ahHash);
60
+ const ahTimestamp = await apiAt.query.timestamp.now();
61
+ const enhancedResult = {
62
+ ...result,
63
+ rcBlockNumber,
64
+ ahTimestamp: ahTimestamp.toString(),
65
+ };
66
+ results.push(enhancedResult);
67
+ }
68
+ PalletsErrorsController.sanitizedSend(res, results);
69
+ }
70
+ else {
71
+ const hash = await this.getHashFromAt(at);
72
+ const historicApi = await this.api.at(hash);
73
+ const result = await this.service.fetchErrorItem(historicApi, {
74
+ hash,
75
+ // stringCamelCase ensures we don't have snake case or kebab case
76
+ palletId: (0, util_1.stringCamelCase)(palletId),
77
+ errorItemId: (0, util_1.stringCamelCase)(errorItemId),
78
+ metadata: metadataArg,
79
+ });
80
+ PalletsErrorsController.sanitizedSend(res, result);
81
+ }
49
82
  };
50
- this.getErrors = async ({ params: { palletId }, query: { at, onlyIds } }, res) => {
83
+ this.getErrors = async ({ params: { palletId }, query: { at, onlyIds, useRcBlock } }, res) => {
51
84
  const onlyIdsArg = onlyIds === 'true';
52
- const hash = await this.getHashFromAt(at);
53
- const historicApi = await this.api.at(hash);
54
- PalletsErrorsController.sanitizedSend(res, await this.service.fetchErrors(historicApi, {
55
- hash,
56
- palletId: (0, util_1.stringCamelCase)(palletId),
57
- onlyIds: onlyIdsArg,
58
- }));
85
+ if (useRcBlock === 'true') {
86
+ const rcAtResults = await this.getHashFromRcAt(at);
87
+ // Return empty array if no Asset Hub blocks found
88
+ if (rcAtResults.length === 0) {
89
+ PalletsErrorsController.sanitizedSend(res, []);
90
+ return;
91
+ }
92
+ // Process each Asset Hub block found
93
+ const results = [];
94
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
95
+ const historicApi = await this.api.at(ahHash);
96
+ const result = await this.service.fetchErrors(historicApi, {
97
+ hash: ahHash,
98
+ palletId: (0, util_1.stringCamelCase)(palletId),
99
+ onlyIds: onlyIdsArg,
100
+ });
101
+ const apiAt = await this.api.at(ahHash);
102
+ const ahTimestamp = await apiAt.query.timestamp.now();
103
+ const enhancedResult = {
104
+ ...result,
105
+ rcBlockNumber,
106
+ ahTimestamp: ahTimestamp.toString(),
107
+ };
108
+ results.push(enhancedResult);
109
+ }
110
+ PalletsErrorsController.sanitizedSend(res, results);
111
+ }
112
+ else {
113
+ const hash = await this.getHashFromAt(at);
114
+ const historicApi = await this.api.at(hash);
115
+ const result = await this.service.fetchErrors(historicApi, {
116
+ hash,
117
+ palletId: (0, util_1.stringCamelCase)(palletId),
118
+ onlyIds: onlyIdsArg,
119
+ });
120
+ PalletsErrorsController.sanitizedSend(res, result);
121
+ }
59
122
  };
60
123
  this.initRoutes();
61
124
  }
62
125
  initRoutes() {
126
+ this.router.use(this.path, middleware_1.validateUseRcBlock);
63
127
  this.safeMountAsyncGetHandlers([
64
128
  ['/:errorItemId', this.getErrorById],
65
129
  ['/', this.getErrors],
@@ -1 +1 @@
1
- {"version":3,"file":"PalletsErrorsController.js","sourceRoot":"","sources":["../../../../src/controllers/pallets/PalletsErrorsController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAExE,yCAAiD;AAGjD,6CAAsD;AAEtD,+EAAuD;AAEvD;;;;;;;;;;GAUG;AACH,MAAqB,uBAAwB,SAAQ,4BAAwC;IAG5F,YAAY,GAAW;QACtB,KAAK,CAAC,GAAG,EAAE,2BAA2B,EAAE,IAAI,+BAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QAYhE,iBAAY,GAA0D,KAAK,EAClF,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAC9D,GAAG,EACa,EAAE;YAClB,MAAM,WAAW,GAAG,QAAQ,KAAK,MAAM,CAAC;YACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAE5C,uBAAuB,CAAC,aAAa,CACpC,GAAG,EACH,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE;gBAC9C,IAAI;gBACJ,iEAAiE;gBACjE,QAAQ,EAAE,IAAA,sBAAe,EAAC,QAAQ,CAAC;gBACnC,WAAW,EAAE,IAAA,sBAAe,EAAC,WAAW,CAAC;gBACzC,QAAQ,EAAE,WAAW;aACrB,CAAC,CACF,CAAC;QACH,CAAC,CAAC;QAEM,cAAS,GAAmB,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAiB,EAAE;YAClH,MAAM,UAAU,GAAG,OAAO,KAAK,MAAM,CAAC;YACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAE5C,uBAAuB,CAAC,aAAa,CACpC,GAAG,EACH,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE;gBAC3C,IAAI;gBACJ,QAAQ,EAAE,IAAA,sBAAe,EAAC,QAAQ,CAAC;gBACnC,OAAO,EAAE,UAAU;aACnB,CAAC,CACF,CAAC;QACH,CAAC,CAAC;QA3CD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC;YAC9B,CAAC,eAAe,EAAE,IAAI,CAAC,YAA8B,CAAC;YACtD,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;SACrB,CAAC,CAAC;IACJ,CAAC;;AAbM,sCAAc,GAAG,eAAe,AAAlB,CAAmB;AACjC,uCAAe,GAAG,EAAE,AAAL,CAAM;kBAFR,uBAAuB"}
1
+ {"version":3,"file":"PalletsErrorsController.js","sourceRoot":"","sources":["../../../../src/controllers/pallets/PalletsErrorsController.ts"],"names":[],"mappings":"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"}
@@ -19,36 +19,100 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  const util_1 = require("@polkadot/util");
22
+ const middleware_1 = require("../../middleware");
22
23
  const services_1 = require("../../services");
23
24
  const AbstractController_1 = __importDefault(require("../AbstractController"));
24
25
  class PalletsEventsController extends AbstractController_1.default {
25
26
  constructor(api) {
26
27
  super(api, '/pallets/:palletId/events', new services_1.PalletsEventsService(api));
27
- this.getEventById = async ({ query: { at, metadata }, params: { palletId, eventItemId } }, res) => {
28
+ this.getEventById = async ({ query: { at, metadata, useRcBlock }, params: { palletId, eventItemId } }, res) => {
28
29
  const metadataArg = metadata === 'true';
29
- const hash = await this.getHashFromAt(at);
30
- const historicApi = await this.api.at(hash);
31
- PalletsEventsController.sanitizedSend(res, await this.service.fetchEventItem(historicApi, {
32
- hash,
33
- // stringCamelCase ensures we don't have snake case or kebab case
34
- palletId: (0, util_1.stringCamelCase)(palletId),
35
- eventItemId: (0, util_1.stringCamelCase)(eventItemId),
36
- metadata: metadataArg,
37
- }));
30
+ if (useRcBlock === 'true') {
31
+ const rcAtResults = await this.getHashFromRcAt(at);
32
+ // Return empty array if no Asset Hub blocks found
33
+ if (rcAtResults.length === 0) {
34
+ PalletsEventsController.sanitizedSend(res, []);
35
+ return;
36
+ }
37
+ // Process each Asset Hub block found
38
+ const results = [];
39
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
40
+ const historicApi = await this.api.at(ahHash);
41
+ const result = await this.service.fetchEventItem(historicApi, {
42
+ hash: ahHash,
43
+ // stringCamelCase ensures we don't have snake case or kebab case
44
+ palletId: (0, util_1.stringCamelCase)(palletId),
45
+ eventItemId: (0, util_1.stringCamelCase)(eventItemId),
46
+ metadata: metadataArg,
47
+ });
48
+ const apiAt = await this.api.at(ahHash);
49
+ const ahTimestamp = await apiAt.query.timestamp.now();
50
+ const enhancedResult = {
51
+ ...result,
52
+ rcBlockNumber,
53
+ ahTimestamp: ahTimestamp.toString(),
54
+ };
55
+ results.push(enhancedResult);
56
+ }
57
+ PalletsEventsController.sanitizedSend(res, results);
58
+ }
59
+ else {
60
+ const hash = await this.getHashFromAt(at);
61
+ const historicApi = await this.api.at(hash);
62
+ const result = await this.service.fetchEventItem(historicApi, {
63
+ hash,
64
+ // stringCamelCase ensures we don't have snake case or kebab case
65
+ palletId: (0, util_1.stringCamelCase)(palletId),
66
+ eventItemId: (0, util_1.stringCamelCase)(eventItemId),
67
+ metadata: metadataArg,
68
+ });
69
+ PalletsEventsController.sanitizedSend(res, result);
70
+ }
38
71
  };
39
- this.getEvents = async ({ params: { palletId }, query: { at, onlyIds } }, res) => {
72
+ this.getEvents = async ({ params: { palletId }, query: { at, onlyIds, useRcBlock } }, res) => {
40
73
  const onlyIdsArg = onlyIds === 'true';
41
- const hash = await this.getHashFromAt(at);
42
- const historicApi = await this.api.at(hash);
43
- PalletsEventsController.sanitizedSend(res, await this.service.fetchEvents(historicApi, {
44
- hash,
45
- palletId: (0, util_1.stringCamelCase)(palletId),
46
- onlyIds: onlyIdsArg,
47
- }));
74
+ if (useRcBlock === 'true') {
75
+ const rcAtResults = await this.getHashFromRcAt(at);
76
+ // Return empty array if no Asset Hub blocks found
77
+ if (rcAtResults.length === 0) {
78
+ PalletsEventsController.sanitizedSend(res, []);
79
+ return;
80
+ }
81
+ // Process each Asset Hub block found
82
+ const results = [];
83
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
84
+ const historicApi = await this.api.at(ahHash);
85
+ const result = await this.service.fetchEvents(historicApi, {
86
+ hash: ahHash,
87
+ palletId: (0, util_1.stringCamelCase)(palletId),
88
+ onlyIds: onlyIdsArg,
89
+ });
90
+ const apiAt = await this.api.at(ahHash);
91
+ const ahTimestamp = await apiAt.query.timestamp.now();
92
+ const enhancedResult = {
93
+ ...result,
94
+ rcBlockNumber,
95
+ ahTimestamp: ahTimestamp.toString(),
96
+ };
97
+ results.push(enhancedResult);
98
+ }
99
+ PalletsEventsController.sanitizedSend(res, results);
100
+ }
101
+ else {
102
+ const hash = await this.getHashFromAt(at);
103
+ const historicApi = await this.api.at(hash);
104
+ const result = await this.service.fetchEvents(historicApi, {
105
+ hash,
106
+ palletId: (0, util_1.stringCamelCase)(palletId),
107
+ onlyIds: onlyIdsArg,
108
+ });
109
+ PalletsEventsController.sanitizedSend(res, result);
110
+ }
48
111
  };
49
112
  this.initRoutes();
50
113
  }
51
114
  initRoutes() {
115
+ this.router.use(this.path, middleware_1.validateUseRcBlock);
52
116
  this.safeMountAsyncGetHandlers([
53
117
  ['/:eventItemId', this.getEventById],
54
118
  ['/', this.getEvents],
@@ -1 +1 @@
1
- {"version":3,"file":"PalletsEventsController.js","sourceRoot":"","sources":["../../../../src/controllers/pallets/PalletsEventsController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAExE,yCAAiD;AAIjD,6CAAsD;AACtD,+EAAuD;AAEvD,MAAqB,uBAAwB,SAAQ,4BAAwC;IAG5F,YAAY,GAAW;QACtB,KAAK,CAAC,GAAG,EAAE,2BAA2B,EAAE,IAAI,+BAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QAYhE,iBAAY,GAA0D,KAAK,EAClF,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAC9D,GAAG,EACa,EAAE;YAClB,MAAM,WAAW,GAAG,QAAQ,KAAK,MAAM,CAAC;YACxC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAE5C,uBAAuB,CAAC,aAAa,CACpC,GAAG,EACH,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE;gBAC9C,IAAI;gBACJ,iEAAiE;gBACjE,QAAQ,EAAE,IAAA,sBAAe,EAAC,QAAQ,CAAC;gBACnC,WAAW,EAAE,IAAA,sBAAe,EAAC,WAAW,CAAC;gBACzC,QAAQ,EAAE,WAAW;aACrB,CAAC,CACF,CAAC;QACH,CAAC,CAAC;QAEM,cAAS,GAAmB,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAiB,EAAE;YAClH,MAAM,UAAU,GAAG,OAAO,KAAK,MAAM,CAAC;YACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAE5C,uBAAuB,CAAC,aAAa,CACpC,GAAG,EACH,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE;gBAC3C,IAAI;gBACJ,QAAQ,EAAE,IAAA,sBAAe,EAAC,QAAQ,CAAC;gBACnC,OAAO,EAAE,UAAU;aACnB,CAAC,CACF,CAAC;QACH,CAAC,CAAC;QA3CD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC;YAC9B,CAAC,eAAe,EAAE,IAAI,CAAC,YAA8B,CAAC;YACtD,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;SACrB,CAAC,CAAC;IACJ,CAAC;;AAbM,sCAAc,GAAG,eAAe,AAAlB,CAAmB;AACjC,uCAAe,GAAG,EAAE,AAAL,CAAM;kBAFR,uBAAuB"}
1
+ {"version":3,"file":"PalletsEventsController.js","sourceRoot":"","sources":["../../../../src/controllers/pallets/PalletsEventsController.ts"],"names":[],"mappings":"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"}
@@ -6,11 +6,19 @@ import AbstractController from '../AbstractController';
6
6
  * Query:
7
7
  * - (Optional)`at`: Block at which to retrieve runtime version information at. Block
8
8
  * identifier, as the block height or block hash. Defaults to most recent block.
9
+ * - (Optional)`useRcBlock`: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s). Only supported for Asset Hub endpoints.
9
10
  *
10
11
  * `/pallets/foreign-assets`
11
12
  * Returns:
13
+ * - When using `useRcBlock` parameter: An array of response objects, one for each Asset Hub block found
14
+ * in the specified relay chain block. Returns empty array `[]` if no Asset Hub blocks found.
15
+ * - When using `at` parameter or no query params: A single response object.
16
+ *
17
+ * Response object structure:
12
18
  * - `at`: Block number and hash at which the call was made.
13
19
  * - `items`: An array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.
20
+ * - `rcBlockNumber`: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.
21
+ * - `ahTimestamp`: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.
14
22
  *
15
23
  * Substrate References:
16
24
  * - Foreign Assets Pallet Instance in Kusama Asset Hub: https://github.com/paritytech/cumulus/blob/master/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs#L295
@@ -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 middleware_1 = require("../../middleware");
21
22
  const services_1 = require("../../services");
22
23
  const AbstractController_1 = __importDefault(require("../AbstractController"));
23
24
  /**
@@ -26,11 +27,19 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
26
27
  * Query:
27
28
  * - (Optional)`at`: Block at which to retrieve runtime version information at. Block
28
29
  * identifier, as the block height or block hash. Defaults to most recent block.
30
+ * - (Optional)`useRcBlock`: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s). Only supported for Asset Hub endpoints.
29
31
  *
30
32
  * `/pallets/foreign-assets`
31
33
  * Returns:
34
+ * - When using `useRcBlock` parameter: An array of response objects, one for each Asset Hub block found
35
+ * in the specified relay chain block. Returns empty array `[]` if no Asset Hub blocks found.
36
+ * - When using `at` parameter or no query params: A single response object.
37
+ *
38
+ * Response object structure:
32
39
  * - `at`: Block number and hash at which the call was made.
33
40
  * - `items`: An array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.
41
+ * - `rcBlockNumber`: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.
42
+ * - `ahTimestamp`: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.
34
43
  *
35
44
  * Substrate References:
36
45
  * - Foreign Assets Pallet Instance in Kusama Asset Hub: https://github.com/paritytech/cumulus/blob/master/parachains/runtimes/assets/asset-hub-kusama/src/lib.rs#L295
@@ -38,13 +47,39 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
38
47
  class PalletsForeignAssetsController extends AbstractController_1.default {
39
48
  constructor(api) {
40
49
  super(api, '/pallets/foreign-assets', new services_1.PalletsForeignAssetsService(api));
41
- this.getForeignAssets = async ({ query: { at } }, res) => {
42
- const hash = await this.getHashFromAt(at);
43
- PalletsForeignAssetsController.sanitizedSend(res, await this.service.fetchForeignAssets(hash));
50
+ this.getForeignAssets = async ({ query: { at, useRcBlock } }, res) => {
51
+ if (useRcBlock === 'true') {
52
+ const rcAtResults = await this.getHashFromRcAt(at);
53
+ // Return empty array if no Asset Hub blocks found
54
+ if (rcAtResults.length === 0) {
55
+ PalletsForeignAssetsController.sanitizedSend(res, []);
56
+ return;
57
+ }
58
+ // Process each Asset Hub block found
59
+ const results = [];
60
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
61
+ const result = await this.service.fetchForeignAssets(ahHash);
62
+ const apiAt = await this.api.at(ahHash);
63
+ const ahTimestamp = await apiAt.query.timestamp.now();
64
+ const enhancedResult = {
65
+ ...result,
66
+ rcBlockNumber,
67
+ ahTimestamp: ahTimestamp.toString(),
68
+ };
69
+ results.push(enhancedResult);
70
+ }
71
+ PalletsForeignAssetsController.sanitizedSend(res, results);
72
+ }
73
+ else {
74
+ const hash = await this.getHashFromAt(at);
75
+ const result = await this.service.fetchForeignAssets(hash);
76
+ PalletsForeignAssetsController.sanitizedSend(res, result);
77
+ }
44
78
  };
45
79
  this.initRoutes();
46
80
  }
47
81
  initRoutes() {
82
+ this.router.use(this.path, middleware_1.validateUseRcBlock);
48
83
  this.safeMountAsyncGetHandlers([['', this.getForeignAssets]]);
49
84
  }
50
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PalletsForeignAssetsController.js","sourceRoot":"","sources":["../../../../src/controllers/pallets/PalletsForeignAssetsController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAIxE,6CAA6D;AAC7D,+EAAuD;AAEvD;;;;;;;;;;;;;;GAcG;AACH,MAAqB,8BAA+B,SAAQ,4BAA+C;IAG1G,YAAY,GAAW;QACtB,KAAK,CAAC,GAAG,EAAE,yBAAyB,EAAE,IAAI,sCAA2B,CAAC,GAAG,CAAC,CAAC,CAAC;QAQrE,qBAAgB,GAAmB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAiB,EAAE;YAC1F,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC1C,8BAA8B,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAChG,CAAC,CAAC;QAVD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;;AATM,6CAAc,GAAG,sBAAsB,AAAzB,CAA0B;AACxC,8CAAe,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,AAAtB,CAAuB;kBAFzB,8BAA8B"}
1
+ {"version":3,"file":"PalletsForeignAssetsController.js","sourceRoot":"","sources":["../../../../src/controllers/pallets/PalletsForeignAssetsController.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;AAIxE,iDAAsD;AACtD,6CAA6D;AAC7D,+EAAuD;AAEvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAqB,8BAA+B,SAAQ,4BAA+C;IAG1G,YAAY,GAAW;QACtB,KAAK,CAAC,GAAG,EAAE,yBAAyB,EAAE,IAAI,sCAA2B,CAAC,GAAG,CAAC,CAAC,CAAC;QASrE,qBAAgB,GAAmB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,EAAiB,EAAE;YACtG,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;gBAEnD,kDAAkD;gBAClD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,8BAA8B,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACtD,OAAO;gBACR,CAAC;gBAED,qCAAqC;gBACrC,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,KAAK,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,WAAW,EAAE,CAAC;oBACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;oBAE7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;oBACxC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;oBAEtD,MAAM,cAAc,GAAG;wBACtB,GAAG,MAAM;wBACT,aAAa;wBACb,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;qBACnC,CAAC;oBAEF,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC9B,CAAC;gBAED,8BAA8B,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC3D,8BAA8B,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC3D,CAAC;QACF,CAAC,CAAC;QAzCD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,+BAAkB,CAAC,CAAC;QAC/C,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;;AAVM,6CAAc,GAAG,sBAAsB,AAAzB,CAA0B;AACxC,8CAAe,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,AAAtB,CAAuB;kBAFzB,8BAA8B"}
@@ -18,28 +18,80 @@ 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 middleware_1 = require("../../middleware");
21
22
  const services_1 = require("../../services");
22
23
  const AbstractController_1 = __importDefault(require("../AbstractController"));
23
24
  class PalletsNominationPoolController extends AbstractController_1.default {
24
25
  constructor(api) {
25
26
  super(api, '/pallets/nomination-pools', new services_1.PalletsNominationPoolService(api));
26
- this.getNominationPoolById = async ({ params: { poolId }, query: { at, metadata } }, res) => {
27
+ this.getNominationPoolById = async ({ params: { poolId }, query: { at, useRcBlock, metadata } }, res) => {
27
28
  /**
28
29
  * Verify our param `poolId` is an integer represented as a string, and return
29
30
  * it as an integer
30
31
  */
31
32
  const index = this.parseNumberOrThrow(poolId, '`poolId` path param is not a number');
32
33
  const metadataArg = metadata === 'true';
33
- const hash = await this.getHashFromAt(at);
34
- PalletsNominationPoolController.sanitizedSend(res, await this.service.fetchNominationPoolById(index, hash, metadataArg));
34
+ if (useRcBlock === 'true') {
35
+ const rcAtResults = await this.getHashFromRcAt(at);
36
+ // Return empty array if no Asset Hub blocks found
37
+ if (rcAtResults.length === 0) {
38
+ PalletsNominationPoolController.sanitizedSend(res, []);
39
+ return;
40
+ }
41
+ // Process each Asset Hub block found
42
+ const results = [];
43
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
44
+ const result = await this.service.fetchNominationPoolById(index, ahHash, metadataArg);
45
+ const apiAt = await this.api.at(ahHash);
46
+ const ahTimestamp = await apiAt.query.timestamp.now();
47
+ const enhancedResult = {
48
+ ...result,
49
+ rcBlockNumber,
50
+ ahTimestamp: ahTimestamp.toString(),
51
+ };
52
+ results.push(enhancedResult);
53
+ }
54
+ PalletsNominationPoolController.sanitizedSend(res, results);
55
+ }
56
+ else {
57
+ const hash = await this.getHashFromAt(at);
58
+ const result = await this.service.fetchNominationPoolById(index, hash, metadataArg);
59
+ PalletsNominationPoolController.sanitizedSend(res, result);
60
+ }
35
61
  };
36
- this.getNominationPoolInfo = async ({ query: { at } }, res) => {
37
- const hash = await this.getHashFromAt(at);
38
- PalletsNominationPoolController.sanitizedSend(res, await this.service.fetchNominationPoolInfo(hash));
62
+ this.getNominationPoolInfo = async ({ query: { at, useRcBlock } }, res) => {
63
+ if (useRcBlock === 'true') {
64
+ const rcAtResults = await this.getHashFromRcAt(at);
65
+ // Return empty array if no Asset Hub blocks found
66
+ if (rcAtResults.length === 0) {
67
+ PalletsNominationPoolController.sanitizedSend(res, []);
68
+ return;
69
+ }
70
+ // Process each Asset Hub block found
71
+ const results = [];
72
+ for (const { ahHash, rcBlockNumber } of rcAtResults) {
73
+ const result = await this.service.fetchNominationPoolInfo(ahHash);
74
+ const apiAt = await this.api.at(ahHash);
75
+ const ahTimestamp = await apiAt.query.timestamp.now();
76
+ const enhancedResult = {
77
+ ...result,
78
+ rcBlockNumber,
79
+ ahTimestamp: ahTimestamp.toString(),
80
+ };
81
+ results.push(enhancedResult);
82
+ }
83
+ PalletsNominationPoolController.sanitizedSend(res, results);
84
+ }
85
+ else {
86
+ const hash = await this.getHashFromAt(at);
87
+ const result = await this.service.fetchNominationPoolInfo(hash);
88
+ PalletsNominationPoolController.sanitizedSend(res, result);
89
+ }
39
90
  };
40
91
  this.initRoutes();
41
92
  }
42
93
  initRoutes() {
94
+ this.router.use(this.path, middleware_1.validateUseRcBlock);
43
95
  this.safeMountAsyncGetHandlers([
44
96
  ['/info', this.getNominationPoolInfo],
45
97
  ['/:poolId', this.getNominationPoolById],