@substrate/api-sidecar 9.1.8 → 10.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 (87) hide show
  1. package/README.md +7 -4
  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/blocks/BlocksController.js +5 -2
  20. package/build/src/controllers/blocks/BlocksController.js.map +1 -1
  21. package/build/src/controllers/blocks/BlocksExtrinsicsController.js +2 -1
  22. package/build/src/controllers/blocks/BlocksExtrinsicsController.js.map +1 -1
  23. package/build/src/controllers/pallets/PalletsStorageController.js +12 -6
  24. package/build/src/controllers/pallets/PalletsStorageController.js.map +1 -1
  25. package/build/src/main.js +0 -0
  26. package/build/src/services/accounts/AccountsAssetsService.js +1 -1
  27. package/build/src/services/accounts/AccountsAssetsService.js.map +1 -1
  28. package/build/src/services/accounts/AccountsAssetsService.spec.js +107 -1
  29. package/build/src/services/accounts/AccountsAssetsService.spec.js.map +1 -1
  30. package/build/src/services/accounts/AccountsBalanceInfoService.spec.js +80 -45
  31. package/build/src/services/accounts/AccountsBalanceInfoService.spec.js.map +1 -1
  32. package/build/src/services/accounts/AccountsStakingInfoService.spec.d.ts +4 -1
  33. package/build/src/services/accounts/AccountsStakingInfoService.spec.js +23 -7
  34. package/build/src/services/accounts/AccountsStakingInfoService.spec.js.map +1 -1
  35. package/build/src/services/accounts/AccountsVestingInfoService.spec.js +11 -1
  36. package/build/src/services/accounts/AccountsVestingInfoService.spec.js.map +1 -1
  37. package/build/src/services/blocks/BlocksService.d.ts +2 -1
  38. package/build/src/services/blocks/BlocksService.js +31 -26
  39. package/build/src/services/blocks/BlocksService.js.map +1 -1
  40. package/build/src/services/blocks/BlocksService.spec.js +80 -41
  41. package/build/src/services/blocks/BlocksService.spec.js.map +1 -1
  42. package/build/src/services/blocks/BlocksTraceService.spec.js +1 -1
  43. package/build/src/services/blocks/BlocksTraceService.spec.js.map +1 -1
  44. package/build/src/services/node/NodeNetworkService.spec.js +1 -1
  45. package/build/src/services/node/NodeNetworkService.spec.js.map +1 -1
  46. package/build/src/services/node/NodeTransactionPoolService.spec.js +5 -5
  47. package/build/src/services/node/NodeTransactionPoolService.spec.js.map +1 -1
  48. package/build/src/services/node/NodeVersionService.spec.js +1 -1
  49. package/build/src/services/node/NodeVersionService.spec.js.map +1 -1
  50. package/build/src/services/pallets/PalletsAssetsService.spec.js +113 -1
  51. package/build/src/services/pallets/PalletsAssetsService.spec.js.map +1 -1
  52. package/build/src/services/pallets/PalletsStakingProgressService.spec.js +48 -7
  53. package/build/src/services/pallets/PalletsStakingProgressService.spec.js.map +1 -1
  54. package/build/src/services/pallets/PalletsStorageService.d.ts +14 -2
  55. package/build/src/services/pallets/PalletsStorageService.js +56 -11
  56. package/build/src/services/pallets/PalletsStorageService.js.map +1 -1
  57. package/build/src/services/pallets/PalletsStorageService.spec.js +29 -7
  58. package/build/src/services/pallets/PalletsStorageService.spec.js.map +1 -1
  59. package/build/src/services/paras/ParasService.spec.d.ts +10 -1
  60. package/build/src/services/paras/ParasService.spec.js +201 -8
  61. package/build/src/services/paras/ParasService.spec.js.map +1 -1
  62. package/build/src/services/runtime/RuntimeCodeService.spec.js +1 -1
  63. package/build/src/services/runtime/RuntimeCodeService.spec.js.map +1 -1
  64. package/build/src/services/runtime/RuntimeMetadataService.spec.js +1 -1
  65. package/build/src/services/runtime/RuntimeMetadataService.spec.js.map +1 -1
  66. package/build/src/services/runtime/RuntimeSpecService.spec.js +1 -1
  67. package/build/src/services/runtime/RuntimeSpecService.spec.js.map +1 -1
  68. package/build/src/services/test-helpers/mock/data/block789629.json +2 -2
  69. package/build/src/services/test-helpers/mock/data/blocks789629Fork.json +2 -2
  70. package/build/src/services/test-helpers/mock/mockApi.d.ts +4 -12
  71. package/build/src/services/test-helpers/mock/mockApi.js +3 -377
  72. package/build/src/services/test-helpers/mock/mockApi.js.map +1 -1
  73. package/build/src/services/test-helpers/responses/blocks/block789629Extrinsic.json +3 -0
  74. package/build/src/services/test-helpers/responses/blocks/blocks789629.json +99 -154
  75. package/build/src/services/transaction/TransactionFeeEstimateService.spec.js +6 -3
  76. package/build/src/services/transaction/TransactionFeeEstimateService.spec.js.map +1 -1
  77. package/build/src/services/transaction/TransactionMaterialService.spec.js +1 -1
  78. package/build/src/services/transaction/TransactionMaterialService.spec.js.map +1 -1
  79. package/build/src/services/transaction/TransactionSubmitService.spec.js +8 -7
  80. package/build/src/services/transaction/TransactionSubmitService.spec.js.map +1 -1
  81. package/build/src/test-helpers/metadata/polkadotV9110Metadata.d.ts +1 -0
  82. package/build/src/test-helpers/metadata/polkadotV9110Metadata.js +5 -0
  83. package/build/src/test-helpers/metadata/polkadotV9110Metadata.js.map +1 -0
  84. package/build/src/test-helpers/registries/polkadotRegistry.d.ts +4 -0
  85. package/build/src/test-helpers/registries/polkadotRegistry.js +6 -1
  86. package/build/src/test-helpers/registries/polkadotRegistry.js.map +1 -1
  87. package/package.json +17 -19
@@ -3,33 +3,74 @@ 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 */
8
6
  const http_errors_1 = require("http-errors");
9
7
  const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers");
10
8
  const registries_1 = require("../../test-helpers/registries");
11
9
  const mock_1 = require("../test-helpers/mock");
10
+ const validators789629Hex_1 = require("../test-helpers/mock/data/validators789629Hex");
12
11
  const stakingProgress789629_json_1 = __importDefault(require("../test-helpers/responses/pallets/stakingProgress789629.json"));
13
12
  const PalletsStakingProgressService_1 = require("./PalletsStakingProgressService");
13
+ const epochIndexAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('u64', 330));
14
+ const genesisSlotAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('u64', 265084563));
15
+ const currentSlotAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('u64', 265876724));
16
+ const currentIndexAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('SessionIndex', 330));
17
+ const eraElectionStatusAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('ElectionStatus', { Close: null }));
18
+ const validatorsAt = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Vec<ValidatorId>', validators789629Hex_1.validators789629Hex));
19
+ const forceEraAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Forcing', 'NotForcing'));
20
+ const unappliedSlashesAt = (_hash, _activeEra) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Vec<UnappliedSlash>', []));
21
+ const validatorCountAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('u32', 197));
22
+ const mockApi = {
23
+ ...mock_1.defaultMockApi,
24
+ consts: {
25
+ babe: {
26
+ epochDuration: registries_1.polkadotRegistry.createType('u64', 2400),
27
+ },
28
+ staking: {
29
+ electionLookAhead: registries_1.polkadotRegistry.createType('BlockNumber'),
30
+ sessionsPerEra: registries_1.polkadotRegistry.createType('SessionIndex', 6),
31
+ },
32
+ },
33
+ query: {
34
+ babe: {
35
+ currentSlot: { at: currentSlotAt },
36
+ epochIndex: { at: epochIndexAt },
37
+ genesisSlot: { at: genesisSlotAt },
38
+ },
39
+ session: {
40
+ currentIndex: { at: currentIndexAt },
41
+ validators: validatorsAt,
42
+ },
43
+ staking: {
44
+ activeEra: { at: mock_1.activeEraAt },
45
+ eraElectionStatus: { at: eraElectionStatusAt },
46
+ erasStartSessionIndex: { at: mock_1.erasStartSessionIndexAt },
47
+ forceEra: { at: forceEraAt },
48
+ unappliedSlashes: { at: unappliedSlashesAt },
49
+ validatorCount: { at: validatorCountAt },
50
+ },
51
+ },
52
+ };
14
53
  /**
15
54
  * Mock PalletStakingProgressService instance.
16
55
  */
17
- const palletStakingProgressService = new PalletsStakingProgressService_1.PalletsStakingProgressService(mock_1.mockApi);
56
+ const palletStakingProgressService = new PalletsStakingProgressService_1.PalletsStakingProgressService(mockApi);
18
57
  describe('PalletStakingProgressService', () => {
19
58
  describe('derivePalletStakingProgress', () => {
59
+ mockApi.query.session.validators = { at: validatorsAt };
20
60
  it('works when ApiPromise works (block 789629)', async () => {
21
61
  expect((0, sanitizeNumbers_1.sanitizeNumbers)(await palletStakingProgressService.derivePalletStakingProgress(mock_1.blockHash789629))).toStrictEqual(stakingProgress789629_json_1.default);
22
62
  });
23
63
  it('throws when ErasStartSessionIndex.isNone', async () => {
24
- mock_1.mockApi.query.staking.erasStartSessionIndex.at = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<SessionIndex>', null));
64
+ mockApi.query.staking.erasStartSessionIndex.at = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<SessionIndex>', null));
25
65
  await expect(palletStakingProgressService.derivePalletStakingProgress(mock_1.blockHash789629)).rejects.toStrictEqual(new http_errors_1.InternalServerError('EraStartSessionIndex is None when Some was expected.'));
26
- mock_1.mockApi.query.staking.erasStartSessionIndex.at =
66
+ mockApi.query.staking.erasStartSessionIndex.at =
27
67
  mock_1.erasStartSessionIndexAt;
28
68
  });
29
69
  it('throws when activeEra.isNone', async () => {
30
- mock_1.mockApi.query.staking.activeEra.at = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<ActiveEraInfo>', null));
70
+ mockApi.query.staking.activeEra.at = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<ActiveEraInfo>', null));
31
71
  await expect(palletStakingProgressService.derivePalletStakingProgress(mock_1.blockHash789629)).rejects.toStrictEqual(new http_errors_1.InternalServerError('ActiveEra is None when Some was expected.'));
32
- mock_1.mockApi.query.staking.activeEra.at = mock_1.activeEraAt;
72
+ mockApi.query.staking.activeEra.at = mock_1.activeEraAt;
73
+ mockApi.query.session.validators = validatorsAt;
33
74
  });
34
75
  });
35
76
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PalletsStakingProgressService.spec.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStakingProgressService.spec.ts"],"names":[],"mappings":";;;;;AAAA,uDAAuD;AACvD,+DAA+D;AAC/D,6CAAkD;AAElD,oEAAiE;AACjE,8DAAiE;AACjE,+CAK8B;AAC9B,8HAAiH;AACjH,mFAAgF;AAEhF;;GAEG;AACH,MAAM,4BAA4B,GAAG,IAAI,6DAA6B,CAAC,cAAO,CAAC,CAAC;AAEhF,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC7C,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,CACL,IAAA,iCAAe,EACd,MAAM,4BAA4B,CAAC,2BAA2B,CAC7D,sBAAe,CACf,CACD,CACD,CAAC,aAAa,CAAC,oCAAqC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,cAAO,CAAC,KAAK,CAAC,OAAO,CAAC,qBAA6B,CAAC,EAAE,GAAG,GAAG,EAAE,CAC9D,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAC3B,6BAAgB,CAAC,UAAU,CAAC,sBAAsB,EAAE,IAAI,CAAC,CACzD,CAAC;YAEH,MAAM,MAAM,CACX,4BAA4B,CAAC,2BAA2B,CACvD,sBAAe,CACf,CACD,CAAC,OAAO,CAAC,aAAa,CACtB,IAAI,iCAAmB,CACtB,sDAAsD,CACtD,CACD,CAAC;YAED,cAAO,CAAC,KAAK,CAAC,OAAO,CAAC,qBAA6B,CAAC,EAAE;gBACtD,8BAAuB,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,cAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAiB,CAAC,EAAE,GAAG,GAAG,EAAE,CAClD,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAC3B,6BAAgB,CAAC,UAAU,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAC1D,CAAC;YAEH,MAAM,MAAM,CACX,4BAA4B,CAAC,2BAA2B,CACvD,sBAAe,CACf,CACD,CAAC,OAAO,CAAC,aAAa,CACtB,IAAI,iCAAmB,CAAC,2CAA2C,CAAC,CACpE,CAAC;YAED,cAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAiB,CAAC,EAAE,GAAG,kBAAW,CAAC;QAC3D,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"PalletsStakingProgressService.spec.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStakingProgressService.spec.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,33 @@
1
+ import { ApiDecoration } from '@polkadot/api/types';
1
2
  import { BlockHash } from '@polkadot/types/interfaces';
2
3
  import { IPalletStorage, IPalletStorageItem } from 'src/types/responses';
3
4
  import { AbstractService } from '../AbstractService';
4
5
  interface IFetchPalletArgs {
5
6
  hash: BlockHash;
6
7
  palletId: string;
8
+ adjustMetadataV13Arg: boolean;
7
9
  }
8
10
  interface IFetchStorageItemArgs extends IFetchPalletArgs {
9
11
  storageItemId: string;
10
12
  key1?: string;
11
13
  key2?: string;
12
14
  metadata: boolean;
15
+ adjustMetadataV13Arg: boolean;
13
16
  }
14
17
  export declare class PalletsStorageService extends AbstractService {
15
- fetchStorageItem({ hash, palletId, storageItemId, key1, key2, metadata, }: IFetchStorageItemArgs): Promise<IPalletStorageItem>;
16
- fetchStorage({ hash, palletId, onlyIds, }: IFetchPalletArgs & {
18
+ fetchStorageItem(historicApi: ApiDecoration<'promise'>, { hash, palletId, storageItemId, key1, key2, metadata, adjustMetadataV13Arg, }: IFetchStorageItemArgs): Promise<IPalletStorageItem>;
19
+ fetchStorage(historicApi: ApiDecoration<'promise'>, { hash, palletId, onlyIds, adjustMetadataV13Arg, }: IFetchPalletArgs & {
17
20
  onlyIds: boolean;
18
21
  }): Promise<IPalletStorage>;
22
+ /**
23
+ * This will grab either V13 or V14 metadata for pallets. The reason being is v14 introduced
24
+ * `StorageEntryTypeV14` which is different from `StorageEntryTypeV13` when it comes
25
+ * to `asMap`. This will ultimately give different responses, and we want to make sure
26
+ * we preserve the integrity of older blocks.
27
+ *
28
+ * @param hash BlockHash to query
29
+ */
30
+ private chooseMetadataVersion;
19
31
  /**
20
32
  * Normalize storage item metadata by running it through `sanitizeNumbers` and
21
33
  * converting the docs section from an array of strings to a single string
@@ -5,9 +5,46 @@ const util_1 = require("@polkadot/util");
5
5
  const http_errors_1 = require("http-errors");
6
6
  const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers");
7
7
  const AbstractService_1 = require("../AbstractService");
8
+ /**
9
+ * This is where these networks switched to v9110 which introduces v14 Metadata.
10
+ */
11
+ const upgradeBlocks = {
12
+ kusama: 9625129,
13
+ polkadot: 7229126,
14
+ westend: 7766392,
15
+ };
8
16
  class PalletsStorageService extends AbstractService_1.AbstractService {
9
- async fetchStorageItem({ hash, palletId, storageItemId, key1, key2, metadata, }) {
10
- const [palletMeta, palletMetaIdx] = this.findPalletMeta(palletId);
17
+ constructor() {
18
+ super(...arguments);
19
+ /**
20
+ * This will grab either V13 or V14 metadata for pallets. The reason being is v14 introduced
21
+ * `StorageEntryTypeV14` which is different from `StorageEntryTypeV13` when it comes
22
+ * to `asMap`. This will ultimately give different responses, and we want to make sure
23
+ * we preserve the integrity of older blocks.
24
+ *
25
+ * @param hash BlockHash to query
26
+ */
27
+ this.chooseMetadataVersion = async (hash, adjustMetadataV13Arg) => {
28
+ const [historicMetadata, blockHeader, { specName }] = await Promise.all([
29
+ await this.api.rpc.state.getMetadata(hash),
30
+ await this.api.rpc.chain.getHeader(hash),
31
+ this.api.rpc.state.getRuntimeVersion(),
32
+ ]);
33
+ const blockNumber = blockHeader.number.toNumber();
34
+ let chosenMetadata;
35
+ if (blockNumber < upgradeBlocks[specName.toString()] &&
36
+ adjustMetadataV13Arg) {
37
+ chosenMetadata = historicMetadata.asV13;
38
+ }
39
+ else {
40
+ chosenMetadata = historicMetadata.asV14;
41
+ }
42
+ return chosenMetadata;
43
+ };
44
+ }
45
+ async fetchStorageItem(historicApi, { hash, palletId, storageItemId, key1, key2, metadata, adjustMetadataV13Arg, }) {
46
+ const chosenMetadata = await this.chooseMetadataVersion(hash, adjustMetadataV13Arg);
47
+ const [palletMeta, palletMetaIdx] = this.findPalletMeta(chosenMetadata, historicApi, palletId);
11
48
  const palletName = (0, util_1.stringCamelCase)(palletMeta.name);
12
49
  // Even if `storageItemMeta` is not used, we call this function to ensure it exists. The side effects
13
50
  // of the storage item not existing are that `findStorageItemMeta` will throw.
@@ -18,7 +55,7 @@ class PalletsStorageService extends AbstractService_1.AbstractService {
18
55
  this.normalizeStorageItemMeta(storageItemMeta);
19
56
  }
20
57
  const [value, { number }] = await Promise.all([
21
- this.api.query[palletName][storageItemId].at(hash, key1, key2),
58
+ historicApi.query[palletName][storageItemId](key1, key2),
22
59
  this.api.rpc.chain.getHeader(hash),
23
60
  ]);
24
61
  return {
@@ -35,8 +72,9 @@ class PalletsStorageService extends AbstractService_1.AbstractService {
35
72
  metadata: normalizedStorageItemMeta,
36
73
  };
37
74
  }
38
- async fetchStorage({ hash, palletId, onlyIds, }) {
39
- const [palletMeta, palletMetaIdx] = this.findPalletMeta(palletId);
75
+ async fetchStorage(historicApi, { hash, palletId, onlyIds, adjustMetadataV13Arg, }) {
76
+ const chosenMetadata = await this.chooseMetadataVersion(hash, adjustMetadataV13Arg);
77
+ const [palletMeta, palletMetaIdx] = this.findPalletMeta(chosenMetadata, historicApi, palletId);
40
78
  let items;
41
79
  if (palletMeta.storage.isNone) {
42
80
  items = [];
@@ -96,10 +134,17 @@ class PalletsStorageService extends AbstractService_1.AbstractService {
96
134
  *
97
135
  * @param palletId identifier for a FRAME pallet as a pallet name or index.
98
136
  */
99
- findPalletMeta(palletId) {
100
- const { modules } = this.api.runtimeMetadata.asLatest;
101
- const { isValidPalletName, isValidPalletIndex, parsedPalletId } = this.validPalletId(modules, palletId);
102
- const filtered = modules.filter((mod) => mod.storage.isSome);
137
+ findPalletMeta(adjustedMetadata, historicApi, palletId) {
138
+ const metadataType = adjustedMetadata.toRawType();
139
+ let pallets;
140
+ if (metadataType.includes('MetadataV13')) {
141
+ pallets = adjustedMetadata['modules'];
142
+ }
143
+ else {
144
+ pallets = adjustedMetadata['pallets'];
145
+ }
146
+ const { isValidPalletName, isValidPalletIndex, parsedPalletId } = this.validPalletId(historicApi, pallets, palletId);
147
+ const filtered = pallets.filter((mod) => mod.storage.isSome);
103
148
  let palletMeta;
104
149
  let palletIdx;
105
150
  if (isValidPalletIndex) {
@@ -139,10 +184,10 @@ class PalletsStorageService extends AbstractService_1.AbstractService {
139
184
  }
140
185
  return [palletMeta, palletIdx];
141
186
  }
142
- validPalletId(modules, palletId) {
187
+ validPalletId(historicApi, modules, palletId) {
143
188
  // Either a pallet name (string) or a pallet index (number)
144
189
  const parsedPalletId = PalletsStorageService.palletIdxOrName(palletId);
145
- const isValidPalletName = typeof parsedPalletId === 'string' && !!this.api.query[palletId];
190
+ const isValidPalletName = typeof parsedPalletId === 'string' && !!historicApi.query[palletId];
146
191
  const isValidPalletIndex = typeof parsedPalletId === 'number' &&
147
192
  modules.some((meta, idx) => meta.index.eqn(255)
148
193
  ? idx === parsedPalletId
@@ -1 +1 @@
1
- {"version":3,"file":"PalletsStorageService.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStorageService.ts"],"names":[],"mappings":";;;AAMA,yCAAiD;AACjD,6CAA8D;AAO9D,oEAAiE;AACjE,wDAAqD;AAcrD,MAAa,qBAAsB,SAAQ,iCAAe;IACzD,KAAK,CAAC,gBAAgB,CAAC,EACtB,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,IAAI,EACJ,QAAQ,GACe;QACvB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,IAAA,sBAAe,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEpD,qGAAqG;QACrG,8EAA8E;QAC9E,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAE5E,IAAI,yBAAyB,CAAC;QAC9B,IAAI,QAAQ,EAAE;YACb,yBAAyB;gBACxB,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;SAChD;QAED,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAC9D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QAEH,OAAO;YACN,EAAE,EAAE;gBACH,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;aACpC;YACD,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,aAAa;YAC1B,IAAI;YACJ,IAAI;YACJ,KAAK;YACL,QAAQ,EAAE,yBAAyB;SACnC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAClB,IAAI,EACJ,QAAQ,EACR,OAAO,GACkC;QACzC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAElE,IAAI,KAAoD,CAAC;QACzD,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE;YAC9B,KAAK,GAAG,EAAE,CAAC;SACX;aAAM,IAAI,OAAO,EAAE;YACnB,KAAK,GAAG,UAAU,CAAC,OAAO;iBACxB,MAAM,EAAE;iBACR,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACzC;aAAM;YACN,KAAK,GAAG,UAAU,CAAC,OAAO;iBACxB,MAAM,EAAE;iBACR,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;SACnE;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE5D,OAAO;YACN,EAAE,EAAE;gBACH,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;aACpC;YACD,MAAM,EAAE,IAAA,sBAAe,EAAC,UAAU,CAAC,IAAI,CAAC;YACxC,WAAW,EAAE,aAAa;YAC1B,KAAK;SACL,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,wBAAwB,CAC/B,eAAwC;QAExC,MAAM,yBAAyB,GAAG,IAAA,iCAAe,EAChD,eAAe,CAC6B,CAAC;QAE9C,yBAAyB,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAEzE,OAAO,yBAAyB,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACK,mBAAmB,CAC1B,UAA6B,EAC7B,aAAqB;QAErB,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE;YAC9B,MAAM,IAAI,iCAAmB,CAC5B,6BAA6B,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CACpE,CAAC;SACF;QAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;QAC5D,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,SAAS,CACrD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,WAAW,EAAE,CACjE,CAAC;QAEF,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;YAC9B,MAAM,IAAI,iCAAmB,CAC5B,iCAAiC,aAAa,2FAA2F,CACzI,CAAC;SACF;QAED,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACK,cAAc,CAAC,QAAgB;QACtC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC;QAEtD,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,GAC9D,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEvC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE7D,IAAI,UAAyC,CAAC;QAC9C,IAAI,SAA6B,CAAC;QAElC,IAAI,kBAAkB,EAAE;YACvB,SAAS,GAAG,cAAwB,CAAC;YACrC,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;gBACxD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;oBACjC,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAE5B,IAAI,GAAG,KAAK,SAAS,EAAE;oBACtB,UAAU,GAAG,OAAO,CAAC;oBACrB,MAAM;iBACN;aACD;SACD;aAAM,IAAI,iBAAiB,EAAE;YAC7B,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;gBACxD,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,EAAE;oBAC1D,6FAA6F;oBAC7F,2FAA2F;oBAC3F,wFAAwF;oBACxF,4FAA4F;oBAC5F,0FAA0F;oBAC1F,oFAAoF;oBACpF,+CAA+C;oBAC/C,oDAAoD;oBACpD,iDAAiD;oBACjD,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;wBACjC,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC5B,UAAU,GAAG,OAAO,CAAC;oBACrB,MAAM;iBACN;aACD;SACD;QAED,IAAI,CAAC,UAAU,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE;YAC5D,MAAM,IAAI,wBAAU,CACnB,IAAI,QAAQ,6CAA6C,CACzD,CAAC;SACF;QAED,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChC,CAAC;IAEO,aAAa,CACpB,OAA+B,EAC/B,QAAgB;QAMhB,2DAA2D;QAC3D,MAAM,cAAc,GAAG,qBAAqB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEvE,MAAM,iBAAiB,GACtB,OAAO,cAAc,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAElE,MAAM,kBAAkB,GACvB,OAAO,cAAc,KAAK,QAAQ;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;gBAClB,CAAC,CAAC,GAAG,KAAK,cAAc;gBACxB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CACjC,CAAC;QAEH,OAAO;YACN,iBAAiB;YACjB,kBAAkB;YAClB,cAAc;SACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,eAAe,CAAC,QAAgB;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAElC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC/B,OAAO,QAAQ,CAAC;SAChB;QAED,OAAO,QAAQ,CAAC;IACjB,CAAC;CACD;AAlOD,sDAkOC"}
1
+ {"version":3,"file":"PalletsStorageService.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStorageService.ts"],"names":[],"mappings":"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"}
@@ -4,68 +4,90 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const sanitize_1 = require("../../sanitize");
7
+ const registries_1 = require("../../test-helpers/registries");
7
8
  const mock_1 = require("../test-helpers/mock");
8
9
  const fetchStorage789629_json_1 = __importDefault(require("../test-helpers/responses/pallets/fetchStorage789629.json"));
9
10
  const fetchStorageIdsOnly789629_json_1 = __importDefault(require("../test-helpers/responses/pallets/fetchStorageIdsOnly789629.json"));
10
11
  const fetchStorageItem789629_json_1 = __importDefault(require("../test-helpers/responses/pallets/fetchStorageItem789629.json"));
11
12
  const PalletsStorageService_1 = require("./PalletsStorageService");
13
+ const referendumInfoOfAt = () => Promise.resolve().then(() => {
14
+ registries_1.polkadotRegistry.createType('ReferendumInfo');
15
+ });
16
+ const mockHistoricApi = {
17
+ registry: registries_1.polkadotRegistry,
18
+ query: {
19
+ democracy: {
20
+ referendumInfoOf: referendumInfoOfAt,
21
+ },
22
+ },
23
+ };
24
+ const mockApi = {
25
+ ...mock_1.defaultMockApi,
26
+ at: (_hash) => mockHistoricApi,
27
+ };
12
28
  /**
13
29
  * Mock PalletsStorageService instance.
14
30
  */
15
- const palletsStorageService = new PalletsStorageService_1.PalletsStorageService(mock_1.mockApi);
31
+ const palletsStorageService = new PalletsStorageService_1.PalletsStorageService(mockApi);
16
32
  describe('PalletStorageService', () => {
17
33
  describe('fetchStorageItem', () => {
18
34
  it('works with a query to a single key storage map', async () => {
19
- expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem({
35
+ expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem(mockHistoricApi, {
20
36
  hash: mock_1.blockHash789629,
21
37
  palletId: 'democracy',
22
38
  storageItemId: 'referendumInfoOf',
23
39
  key1: '0',
24
40
  key2: undefined,
25
41
  metadata: false,
42
+ adjustMetadataV13Arg: true,
26
43
  }))).toMatchObject(fetchStorageItem789629_json_1.default);
27
44
  });
28
45
  it('works with a index identifier', async () => {
29
- expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem({
46
+ expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem(mockHistoricApi, {
30
47
  hash: mock_1.blockHash789629,
31
48
  palletId: '15',
32
49
  storageItemId: 'referendumInfoOf',
33
50
  key1: '0',
34
51
  key2: undefined,
35
52
  metadata: false,
53
+ adjustMetadataV13Arg: true,
36
54
  }))).toMatchObject(fetchStorageItem789629_json_1.default);
37
55
  });
38
56
  it('appropriately uses metadata params', async () => {
39
- expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem({
57
+ expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem(mockHistoricApi, {
40
58
  hash: mock_1.blockHash789629,
41
59
  palletId: 'democracy',
42
60
  storageItemId: 'referendumInfoOf',
43
61
  key1: '0',
44
62
  key2: undefined,
45
63
  metadata: true,
64
+ adjustMetadataV13Arg: true,
46
65
  }))).toMatchObject(fetchStorageItem789629_json_1.default);
47
66
  });
48
67
  });
49
68
  describe('fetchStorage', () => {
50
69
  it('works with no query params', async () => {
51
- expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage({
70
+ expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage(mockHistoricApi, {
52
71
  hash: mock_1.blockHash789629,
53
72
  palletId: 'democracy',
54
73
  onlyIds: false,
74
+ adjustMetadataV13Arg: true,
55
75
  }))).toStrictEqual(fetchStorage789629_json_1.default);
56
76
  });
57
77
  it('work with a index identifier', async () => {
58
- expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage({
78
+ expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage(mockHistoricApi, {
59
79
  hash: mock_1.blockHash789629,
60
80
  palletId: '15',
61
81
  onlyIds: false,
82
+ adjustMetadataV13Arg: true,
62
83
  }))).toStrictEqual(fetchStorage789629_json_1.default);
63
84
  });
64
85
  it('only list storage item ids when onlyIds is true', async () => {
65
- expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage({
86
+ expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage(mockHistoricApi, {
66
87
  hash: mock_1.blockHash789629,
67
88
  palletId: 'democracy',
68
89
  onlyIds: true,
90
+ adjustMetadataV13Arg: true,
69
91
  }))).toStrictEqual(fetchStorageIdsOnly789629_json_1.default);
70
92
  });
71
93
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PalletsStorageService.spec.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStorageService.spec.ts"],"names":[],"mappings":";;;;;AAAA,6CAAiD;AACjD,+CAAgE;AAChE,wHAAwF;AACxF,sIAAsG;AACtG,gIAAgG;AAChG,mEAAgE;AAEhE;;GAEG;AACH,MAAM,qBAAqB,GAAG,IAAI,6CAAqB,CAAC,cAAO,CAAC,CAAC;AAEjE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,CACL,IAAA,0BAAe,EACd,MAAM,qBAAqB,CAAC,gBAAgB,CAAC;gBAC5C,IAAI,EAAE,sBAAe;gBACrB,QAAQ,EAAE,WAAW;gBACrB,aAAa,EAAE,kBAAkB;gBACjC,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,KAAK;aACf,CAAC,CACF,CACD,CAAC,aAAa,CAAC,qCAAmB,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,CACL,IAAA,0BAAe,EACd,MAAM,qBAAqB,CAAC,gBAAgB,CAAC;gBAC5C,IAAI,EAAE,sBAAe;gBACrB,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,kBAAkB;gBACjC,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,KAAK;aACf,CAAC,CACF,CACD,CAAC,aAAa,CAAC,qCAAmB,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,CACL,IAAA,0BAAe,EACd,MAAM,qBAAqB,CAAC,gBAAgB,CAAC;gBAC5C,IAAI,EAAE,sBAAe;gBACrB,QAAQ,EAAE,WAAW;gBACrB,aAAa,EAAE,kBAAkB;gBACjC,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,IAAI;aACd,CAAC,CACF,CACD,CAAC,aAAa,CAAC,qCAAmB,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,CACL,IAAA,0BAAe,EACd,MAAM,qBAAqB,CAAC,YAAY,CAAC;gBACxC,IAAI,EAAE,sBAAe;gBACrB,QAAQ,EAAE,WAAW;gBACrB,OAAO,EAAE,KAAK;aACd,CAAC,CACF,CACD,CAAC,aAAa,CAAC,iCAAe,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,CACL,IAAA,0BAAe,EACd,MAAM,qBAAqB,CAAC,YAAY,CAAC;gBACxC,IAAI,EAAE,sBAAe;gBACrB,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,KAAK;aACd,CAAC,CACF,CACD,CAAC,aAAa,CAAC,iCAAe,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,CACL,IAAA,0BAAe,EACd,MAAM,qBAAqB,CAAC,YAAY,CAAC;gBACxC,IAAI,EAAE,sBAAe;gBACrB,QAAQ,EAAE,WAAW;gBACrB,OAAO,EAAE,IAAI;aACb,CAAC,CACF,CACD,CAAC,aAAa,CAAC,wCAAsB,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"PalletsStorageService.spec.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStorageService.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1,10 @@
1
- export {};
1
+ import { Option, Tuple, Vec } from '@polkadot/types';
2
+ import { BlockNumber } from '@polkadot/types/interfaces';
3
+ import { Codec } from '@polkadot/types/types';
4
+ export declare const emptyVectorLeases: Vec<import("@polkadot/types").Raw>;
5
+ export declare const slotsLeasesAt: () => Promise<Vec<Option<Tuple>>>;
6
+ /**
7
+ * Used for parachain Auctions
8
+ */
9
+ export declare const auctionsInfoAt: () => Promise<Option<Vec<BlockNumber>>>;
10
+ export declare const noneAuctionsInfoAt: () => Promise<Option<Codec>>;
@@ -3,12 +3,205 @@ 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
+ exports.noneAuctionsInfoAt = exports.auctionsInfoAt = exports.slotsLeasesAt = exports.emptyVectorLeases = void 0;
6
7
  const bn_js_1 = __importDefault(require("bn.js"));
7
8
  const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers");
9
+ const rococoMetadata_1 = require("../../test-helpers/metadata/rococoMetadata");
8
10
  const registries_1 = require("../../test-helpers/registries");
11
+ const typeFactory_1 = require("../../test-helpers/typeFactory");
9
12
  const mock_1 = require("../test-helpers/mock");
10
13
  const ParasService_1 = require("./ParasService");
11
- const parasService = new ParasService_1.ParasService(mock_1.mockApi);
14
+ /**
15
+ * ParasService specific constants
16
+ * The below types and constants use the rococo registry in order to properly
17
+ * test the ParasService with accurate metadata
18
+ */
19
+ const rococoApi = (0, typeFactory_1.createApiWithAugmentations)(rococoMetadata_1.rococoMetadataV228);
20
+ const rococoTypeFactory = new typeFactory_1.TypeFactory(rococoApi);
21
+ /**
22
+ * Used for parachain crowdloans
23
+ */
24
+ const funds = {
25
+ depositor: registries_1.rococoRegistry.createType('AccountId', '14E5nqKAp3oAJcmzgZhUD2RcptBeUBScxKHgJKU4HPNcKVf3'),
26
+ verifier: null,
27
+ deposit: registries_1.rococoRegistry.createType('Balance', 100000000000000),
28
+ raised: registries_1.rococoRegistry.createType('Balance', 627500000000000),
29
+ end: registries_1.rococoRegistry.createType('BlockNumber', 200000),
30
+ cap: registries_1.rococoRegistry.createType('Balance', '0x0000000000000000016345785d8a0000'),
31
+ lastContribution: registries_1.rococoRegistry.createType('LastContribution', {
32
+ preEnding: 6,
33
+ }),
34
+ firstPeriod: registries_1.rococoRegistry.createType('LeasePeriod', 13),
35
+ lastPeriod: registries_1.rococoRegistry.createType('LeasePeriod', 16),
36
+ trieIndex: registries_1.rococoRegistry.createType('TrieIndex', 60),
37
+ };
38
+ const paraLifecycleObjectOne = {
39
+ onboarding: true,
40
+ parachain: true,
41
+ };
42
+ const paraLifecycleObjectTwo = {
43
+ parathread: true,
44
+ parachain: false,
45
+ };
46
+ const crowdloanParaId1 = rococoTypeFactory.storageKey(199, 'ParaId', rococoApi.query.crowdloan.funds);
47
+ const crowdloanParaId2 = rococoTypeFactory.storageKey(200, 'ParaId', rococoApi.query.crowdloan.funds);
48
+ const paraLifecycleOne = registries_1.rococoRegistry.createType('ParaLifecycle', paraLifecycleObjectOne);
49
+ const paraLifecycleTwo = registries_1.rococoRegistry.createType('ParaLifecycle', paraLifecycleObjectTwo);
50
+ const accountIdOne = registries_1.rococoRegistry.createType('AccountId', '1TYrFCWxwHA5bhiXf6uLvPfG6eEvrzzL7uiPK3Yc6yHLUqc');
51
+ const accountIdTwo = registries_1.rococoRegistry.createType('AccountId', '13NXiLYYzVEjXxU3eaZNcrjEX9vPyVDNNpURCzK8Bj9BiCWH');
52
+ const balanceOfOne = registries_1.rococoRegistry.createType('BalanceOf', 1000000);
53
+ const balanceOfTwo = registries_1.rococoRegistry.createType('BalanceOf', 2000000);
54
+ const fundsEntries = () => Promise.resolve().then(() => {
55
+ const optionFundInfo = registries_1.rococoRegistry.createType('Option<FundInfo>', funds);
56
+ const entries = [
57
+ [crowdloanParaId1, optionFundInfo],
58
+ [crowdloanParaId2, optionFundInfo],
59
+ ];
60
+ return entries;
61
+ });
62
+ const fundsAt = () => Promise.resolve().then(() => {
63
+ return registries_1.rococoRegistry.createType('Option<FundInfo>', funds);
64
+ });
65
+ const fundsKeys = () => Promise.resolve().then(() => {
66
+ return [crowdloanParaId1, crowdloanParaId2];
67
+ });
68
+ /**
69
+ * Used for parachain paras
70
+ */
71
+ const paraLifeCycleParaId1 = rococoTypeFactory.storageKey(199, 'ParaId', rococoApi.query.paras.paraLifecycles);
72
+ const paraLifeCycleParaId2 = rococoTypeFactory.storageKey(200, 'ParaId', rococoApi.query.paras.paraLifecycles);
73
+ const parasLifecyclesEntriesAt = () => Promise.resolve().then(() => {
74
+ return [
75
+ [paraLifeCycleParaId1, paraLifecycleOne],
76
+ [paraLifeCycleParaId2, paraLifecycleTwo],
77
+ ];
78
+ });
79
+ const parasGenesisArgsAt = () => Promise.resolve().then(() => {
80
+ return registries_1.rococoRegistry.createType('ParaGenesisArgs', { parachain: true });
81
+ });
82
+ const upcomingParasGenesisAt = () => Promise.resolve().then(() => {
83
+ return registries_1.rococoRegistry.createType('Option<ParaGenesisArgs>', {
84
+ parachain: true,
85
+ });
86
+ });
87
+ const parasLifecyclesAt = () => Promise.resolve().then(() => {
88
+ return rococoTypeFactory.optionOf(paraLifecycleOne);
89
+ });
90
+ /**
91
+ * Used for parachain leases
92
+ */
93
+ const leasesParaId1 = rococoTypeFactory.storageKey(199, 'ParaId', rococoApi.query.slots.leases);
94
+ const leasesParaId2 = rococoTypeFactory.storageKey(200, 'ParaId', rococoApi.query.slots.leases);
95
+ const leasesTupleOne = rococoTypeFactory.tupleOf([accountIdOne, balanceOfOne], ['AccountId', 'BalanceOf']);
96
+ const leasesTupleTwo = rococoTypeFactory.tupleOf([accountIdTwo, balanceOfTwo], ['AccountId', 'BalanceOf']);
97
+ const parasOptionsOne = rococoTypeFactory.optionOf(leasesTupleOne);
98
+ const parasOptionsTwo = rococoTypeFactory.optionOf(leasesTupleTwo);
99
+ const vectorLeases = rococoTypeFactory.vecOf([
100
+ parasOptionsOne,
101
+ parasOptionsTwo,
102
+ ]);
103
+ exports.emptyVectorLeases = registries_1.rococoRegistry.createType('Vec<Raw>', []);
104
+ const slotsLeasesAt = () => Promise.resolve().then(() => {
105
+ return vectorLeases;
106
+ });
107
+ exports.slotsLeasesAt = slotsLeasesAt;
108
+ const slotsLeasesEntriesAt = () => Promise.resolve().then(() => {
109
+ return [
110
+ [leasesParaId1, vectorLeases],
111
+ [leasesParaId2, vectorLeases],
112
+ ];
113
+ });
114
+ /**
115
+ * Used for parachain Auctions
116
+ */
117
+ const auctionsInfoAt = () => Promise.resolve().then(() => {
118
+ const beingEnd = registries_1.rococoRegistry.createType('BlockNumber', 1000);
119
+ const leasePeriodIndex = registries_1.rococoRegistry.createType('BlockNumber', 39);
120
+ const vectorAuctions = rococoTypeFactory.vecOf([
121
+ leasePeriodIndex,
122
+ beingEnd,
123
+ ]);
124
+ const optionAuctions = rococoTypeFactory.optionOf(vectorAuctions);
125
+ return optionAuctions;
126
+ });
127
+ exports.auctionsInfoAt = auctionsInfoAt;
128
+ const noneAuctionsInfoAt = () => Promise.resolve().then(() => registries_1.rococoRegistry.createType('Option<Raw>', null));
129
+ exports.noneAuctionsInfoAt = noneAuctionsInfoAt;
130
+ const auctionCounterAt = () => Promise.resolve().then(() => {
131
+ const counter = new bn_js_1.default(4);
132
+ return counter;
133
+ });
134
+ const auctionsWinningsAt = () => Promise.resolve().then(() => {
135
+ const paraId1 = registries_1.rococoRegistry.createType('ParaId', 199);
136
+ const paraId2 = registries_1.rococoRegistry.createType('ParaId', 200);
137
+ const tupleOne = rococoTypeFactory.tupleOf([accountIdOne, paraId1, balanceOfOne], ['AccountId', 'ParaId', 'BalanceOf']);
138
+ const tupleTwo = rococoTypeFactory.tupleOf([accountIdTwo, paraId2, balanceOfTwo], ['AccountId', 'ParaId', 'BalanceOf']);
139
+ const parasOptionsOne = rococoTypeFactory.optionOf(tupleOne);
140
+ const parasOptionsTwo = rococoTypeFactory.optionOf(tupleTwo);
141
+ // No bids for the remaining slot ranges
142
+ const mockWinningOptions = new Array(8).fill(registries_1.rococoRegistry.createType('Option<Raw>', null) // This is just `Option::None`
143
+ );
144
+ // Total of 10 winning object, 2 `Some(..)`, 8 `None`
145
+ const vectorWinnings = rococoTypeFactory.vecOf([
146
+ parasOptionsOne,
147
+ parasOptionsTwo,
148
+ ...mockWinningOptions,
149
+ ]);
150
+ const optionWinnings = rococoTypeFactory.optionOf(vectorWinnings);
151
+ return optionWinnings;
152
+ });
153
+ const mockApi = {
154
+ ...mock_1.defaultMockApi,
155
+ consts: {
156
+ auctions: {
157
+ endingPeriod: new bn_js_1.default(20000),
158
+ sampleLength: new bn_js_1.default(2),
159
+ leasePeriodsPerSlot: undefined,
160
+ },
161
+ slots: {
162
+ leasePeriod: new bn_js_1.default(20000),
163
+ },
164
+ },
165
+ query: {
166
+ auctions: {
167
+ auctionInfo: {
168
+ at: exports.auctionsInfoAt,
169
+ },
170
+ auctionCounter: {
171
+ at: auctionCounterAt,
172
+ },
173
+ winning: {
174
+ at: auctionsWinningsAt,
175
+ },
176
+ },
177
+ crowdloan: {
178
+ funds: {
179
+ entriesAt: fundsEntries,
180
+ keys: fundsKeys,
181
+ at: fundsAt,
182
+ },
183
+ },
184
+ paras: {
185
+ paraLifecycles: {
186
+ entriesAt: parasLifecyclesEntriesAt,
187
+ at: parasLifecyclesAt,
188
+ },
189
+ paraGenesisArgs: {
190
+ at: parasGenesisArgsAt,
191
+ },
192
+ upcomingParasGenesis: {
193
+ at: upcomingParasGenesisAt,
194
+ },
195
+ },
196
+ slots: {
197
+ leases: {
198
+ entriesAt: slotsLeasesEntriesAt,
199
+ at: exports.slotsLeasesAt,
200
+ },
201
+ },
202
+ },
203
+ };
204
+ const parasService = new ParasService_1.ParasService(mockApi);
12
205
  describe('ParasService', () => {
13
206
  const paraId = 199;
14
207
  const expectedAt = {
@@ -78,8 +271,8 @@ describe('ParasService', () => {
78
271
  expect((0, sanitizeNumbers_1.sanitizeNumbers)(response)).toMatchObject(expectedResponse);
79
272
  });
80
273
  it('Should have `null` `leases` when its length is equal to 0', async () => {
81
- const emptyLeasesAt = () => Promise.resolve().then(() => mock_1.emptyVectorLeases);
82
- mock_1.mockApi.query.slots.leases.at = emptyLeasesAt;
274
+ const emptyLeasesAt = () => Promise.resolve().then(() => exports.emptyVectorLeases);
275
+ mockApi.query.slots.leases.at = emptyLeasesAt;
83
276
  const expectedResponse = {
84
277
  at: expectedAt,
85
278
  leases: null,
@@ -88,7 +281,7 @@ describe('ParasService', () => {
88
281
  };
89
282
  const response = await parasService.leaseInfo(mock_1.blockHash789629, paraId);
90
283
  expect((0, sanitizeNumbers_1.sanitizeNumbers)(response)).toMatchObject(expectedResponse);
91
- mock_1.mockApi.query.slots.leases.at = mock_1.slotsLeasesAt;
284
+ mockApi.query.slots.leases.at = exports.slotsLeasesAt;
92
285
  });
93
286
  });
94
287
  describe('ParasService.leasesCurrent', () => {
@@ -189,15 +382,15 @@ describe('ParasService', () => {
189
382
  };
190
383
  const header = registries_1.polkadotRegistry.createType('Header', overrideHeader);
191
384
  // Override the mockApi
192
- mock_1.mockApi.rpc.chain.getHeader = () => Promise.resolve().then(() => header);
385
+ mockApi.rpc.chain.getHeader = () => Promise.resolve().then(() => header);
193
386
  const expectedResponse = 'endPeriod';
194
387
  const response = await parasService.auctionsCurrent(mock_1.blockHash20000);
195
388
  expect(response.phase).toBe(expectedResponse);
196
389
  // Set the MockApi back to its original self
197
- mock_1.mockApi.rpc.chain.getHeader = () => Promise.resolve().then(() => mock_1.mockBlock789629.header);
390
+ mockApi.rpc.chain.getHeader = () => Promise.resolve().then(() => mock_1.mockBlock789629.header);
198
391
  });
199
392
  it('Should return the correct null values when `auctionInfo` is `None`', async () => {
200
- mock_1.mockApi.query.auctions.auctionInfo.at = mock_1.noneAuctionsInfoAt;
393
+ mockApi.query.auctions.auctionInfo.at = exports.noneAuctionsInfoAt;
201
394
  const expectedResponse = {
202
395
  at: expectedAt,
203
396
  beginEnd: null,
@@ -209,7 +402,7 @@ describe('ParasService', () => {
209
402
  };
210
403
  const response = await parasService.auctionsCurrent(mock_1.blockHash789629);
211
404
  expect((0, sanitizeNumbers_1.sanitizeNumbers)(response)).toMatchObject(expectedResponse);
212
- mock_1.mockApi.query.auctions.auctionInfo.at = mock_1.auctionsInfoAt;
405
+ mockApi.query.auctions.auctionInfo.at = exports.auctionsInfoAt;
213
406
  });
214
407
  });
215
408
  });