@substrate/api-sidecar 11.3.17 → 11.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 (34) hide show
  1. package/README.md +1 -3
  2. package/build/package.json +30 -29
  3. package/build/src/chains-config/index.js.map +1 -1
  4. package/build/src/controllers/AbstractController.d.ts +2 -1
  5. package/build/src/controllers/AbstractController.js +2 -2
  6. package/build/src/controllers/AbstractController.js.map +1 -1
  7. package/build/src/controllers/accounts/AccountsBalanceInfoController.js +3 -2
  8. package/build/src/controllers/accounts/AccountsBalanceInfoController.js.map +1 -1
  9. package/build/src/controllers/runtime/RuntimeMetadataController.js +9 -1
  10. package/build/src/controllers/runtime/RuntimeMetadataController.js.map +1 -1
  11. package/build/src/logging/transformers/nodeUtilFormat.js +1 -0
  12. package/build/src/logging/transformers/nodeUtilFormat.js.map +1 -1
  13. package/build/src/sanitize/sanitizeNumbers.d.ts +3 -1
  14. package/build/src/sanitize/sanitizeNumbers.js +88 -18
  15. package/build/src/sanitize/sanitizeNumbers.js.map +1 -1
  16. package/build/src/sanitize/sanitizeNumbers.spec.js +56 -0
  17. package/build/src/sanitize/sanitizeNumbers.spec.js.map +1 -1
  18. package/build/src/services/accounts/AccountsBalanceInfoService.d.ts +33 -1
  19. package/build/src/services/accounts/AccountsBalanceInfoService.js +80 -16
  20. package/build/src/services/accounts/AccountsBalanceInfoService.js.map +1 -1
  21. package/build/src/services/accounts/AccountsBalanceInfoService.spec.js +48 -4
  22. package/build/src/services/accounts/AccountsBalanceInfoService.spec.js.map +1 -1
  23. package/build/src/services/accounts/AccountsStakingPayoutsService.spec.js +3 -3
  24. package/build/src/services/blocks/BlocksService.js +2 -2
  25. package/build/src/services/blocks/BlocksService.js.map +1 -1
  26. package/build/src/types/responses/AccountBalanceInfo.d.ts +11 -6
  27. package/build/src/types/responses/Extrinsic.d.ts +4 -4
  28. package/build/src/types/sanitize/index.d.ts +1 -0
  29. package/build/src/types/sanitize/index.js +14 -0
  30. package/build/src/types/sanitize/index.js.map +1 -0
  31. package/build/src/types/sanitize/sanitize.d.ts +8 -0
  32. package/build/src/types/sanitize/sanitize.js +3 -0
  33. package/build/src/types/sanitize/sanitize.js.map +1 -0
  34. package/package.json +30 -29
package/README.md CHANGED
@@ -305,7 +305,7 @@ All the commits in this repo follow the [Conventional Commits spec](https://www.
305
305
  ### Updating polkadot-js dependencies
306
306
 
307
307
  1. Every Monday the polkadot-js ecosystem will usually come out with a new release. It's important that we keep up,
308
- and read the release notes for any breaking changes or high priority updates. You can use the following command `yarn upgrade-interactive` to find and update all available releases. To Upgrade just `@polkadot` scoped deps use `yarn up @polkadot/*`.
308
+ and read the release notes for any breaking changes or high priority updates. In order to update all the dependencies and resolutions run `yarn update-pjs-deps`.
309
309
 
310
310
  - @polkadot/api [release notes](https://github.com/polkadot-js/api/releases)
311
311
  - @polkadot/apps-config [release notes](https://github.com/polkadot-js/apps/releases)
@@ -313,8 +313,6 @@ and read the release notes for any breaking changes or high priority updates. Y
313
313
  - @polkadot/util-crypto [release notes](https://github.com/polkadot-js/common/releases)
314
314
  - @substrate/calc [npm release page](https://www.npmjs.com/package/@substrate/calc)
315
315
 
316
- 1. Next make sure the resolutions are up to date inside of the `package.json` for all `@polkadot/*` packages, please refer to the releases of each polkadot package we update as a dependency, and reach out to the maintainers for any questions. You will have to run `yarn` again to ensure the dependency `cache`, and `yarn.lock` have the correct versions.
317
-
318
316
  1. Ensure everything is working by running the following tests, `yarn build`, `yarn lint`, `yarn test`, `yarn test:init-e2e-tests`.
319
317
 
320
318
  1. Lastly, create a PR with the updates.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "11.3.17",
2
+ "version": "11.4.0",
3
3
  "name": "@substrate/api-sidecar",
4
4
  "description": "REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.",
5
5
  "homepage": "https://github.com/paritytech/substrate-api-sidecar#readme",
@@ -47,15 +47,16 @@
47
47
  "test:init-e2e-tests:statemine": "yarn test:init-e2e-tests --chain statemine",
48
48
  "test:init-e2e-tests:statemint": "yarn test:init-e2e-tests --chain statemint",
49
49
  "start:e2e-scripts": "yarn build:scripts && node scripts/build/runChainTests.js",
50
- "build:scripts": "substrate-exec-rimraf scripts/build/ && cd scripts && substrate-exec-tsc",
50
+ "build:scripts": "substrate-exec-rimraf scripts/build/ && substrate-exec-tsc --project scripts/tsconfig.json",
51
51
  "lint:scripts": "cd scripts && substrate-dev-run-lint",
52
52
  "start:test-release": "yarn build:scripts && node scripts/build/runYarnPack.js",
53
- "test:test-release": "yarn start:test-release"
53
+ "test:test-release": "yarn start:test-release",
54
+ "update-pjs-deps": "substrate-update-pjs-deps && yarn"
54
55
  },
55
56
  "dependencies": {
56
- "@polkadot/api": "^8.1.1",
57
- "@polkadot/apps-config": "^0.112.1",
58
- "@polkadot/util-crypto": "^9.0.1",
57
+ "@polkadot/api": "8.4.2",
58
+ "@polkadot/apps-config": "0.115.2",
59
+ "@polkadot/util-crypto": "9.2.1",
59
60
  "@substrate/calc": "^0.2.8",
60
61
  "argparse": "^2.0.1",
61
62
  "confmgr": "1.0.7",
@@ -67,7 +68,7 @@
67
68
  "winston": "^3.3.3"
68
69
  },
69
70
  "devDependencies": {
70
- "@substrate/dev": "^0.5.7",
71
+ "@substrate/dev": "^0.6.1",
71
72
  "@types/argparse": "2.0.10",
72
73
  "@types/express": "4.17.13",
73
74
  "@types/express-serve-static-core": "4.17.25",
@@ -78,28 +79,28 @@
78
79
  "tsc-watch": "^4.4.0"
79
80
  },
80
81
  "resolutions": {
81
- "@polkadot/api": "8.1.1",
82
- "@polkadot/api-augment": "8.1.1",
83
- "@polkadot/api-base": "8.1.1",
84
- "@polkadot/api-derive": "8.1.1",
85
- "@polkadot/rpc-core": "8.1.1",
86
- "@polkadot/rpc-augment": "8.1.1",
87
- "@polkadot/rpc-provider": "8.1.1",
88
- "@polkadot/types": "8.1.1",
89
- "@polkadot/types-augment": "8.1.1",
90
- "@polkadot/types-codec": "8.1.1",
91
- "@polkadot/types-create": "8.1.1",
92
- "@polkadot/types-support": "8.1.1",
93
- "@polkadot/types-known": "8.1.1",
94
- "@polkadot/keyring": "9.0.1",
95
- "@polkadot/networks": "9.0.1",
96
- "@polkadot/util": "9.0.1",
97
- "@polkadot/util-crypto": "9.0.1",
98
- "@polkadot/x-fetch": "9.0.1",
99
- "@polkadot/x-global": "9.0.1",
100
- "@polkadot/x-bigint": "9.0.1",
101
- "@polkadot/x-ws": "9.0.1",
102
- "@polkadot/wasm-crypto": "6.0.1",
82
+ "@polkadot/api": "8.4.2",
83
+ "@polkadot/api-augment": "8.4.2",
84
+ "@polkadot/api-base": "8.4.2",
85
+ "@polkadot/api-derive": "8.4.2",
86
+ "@polkadot/rpc-core": "8.4.2",
87
+ "@polkadot/rpc-augment": "8.4.2",
88
+ "@polkadot/rpc-provider": "8.4.2",
89
+ "@polkadot/types": "8.4.2",
90
+ "@polkadot/types-augment": "8.4.2",
91
+ "@polkadot/types-codec": "8.4.2",
92
+ "@polkadot/types-create": "8.4.2",
93
+ "@polkadot/types-support": "8.4.2",
94
+ "@polkadot/types-known": "8.4.2",
95
+ "@polkadot/keyring": "9.2.1",
96
+ "@polkadot/networks": "9.2.1",
97
+ "@polkadot/util": "9.2.1",
98
+ "@polkadot/util-crypto": "9.2.1",
99
+ "@polkadot/x-fetch": "9.2.1",
100
+ "@polkadot/x-global": "9.2.1",
101
+ "@polkadot/x-bigint": "9.2.1",
102
+ "@polkadot/x-ws": "9.2.1",
103
+ "@polkadot/wasm-crypto": "6.1.1",
103
104
  "bn.js": "5.2.0",
104
105
  "node-fetch": "2.6.7",
105
106
  "prismjs": ">=1.23.0",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chains-config/index.ts"],"names":[],"mappings":";;;AAIA,gDAA6C;AAE7C,yDAAsD;AACtD,yDAAsD;AACtD,6DAA0D;AAC1D,+DAA4D;AAC5D,yDAAsD;AACtD,6DAA0D;AAC1D,qEAAkE;AAClE,2EAAwE;AACxE,2EAAqE;AACrE,2DAAwD;AACxD,uDAAoD;AACpD,2DAAwD;AACxD,2DAAwD;AACxD,6DAA0D;AAC1D,yDAAsD;AACtD,+DAA4D;AAC5D,+DAA4D;AAC5D,2DAAwD;AACxD,uDAAoD;AACpD,iEAA8D;AAC9D,iEAA8D;AAC9D,6DAA0D;AAE1D,MAAM,mBAAmB,GAAG;IAC3B,OAAO,EAAE,uCAAkB;IAC3B,QAAQ,EAAE,yCAAmB;IAC7B,QAAQ,EAAE,yCAAmB;IAC7B,MAAM,EAAE,qCAAiB;IACzB,MAAM,EAAE,qCAAiB;IACzB,IAAI,EAAE,iCAAe;IACrB,OAAO,EAAE,uCAAkB;IAC3B,mBAAmB,EAAE,+CAAsB;IAC3C,uBAAuB,EAAE,qDAAyB;IAClD,uBAAuB,EAAE,kDAAsB;IAC/C,SAAS,EAAE,2CAAoB;IAC/B,SAAS,EAAE,2CAAoB;IAC/B,QAAQ,EAAE,2CAAoB;IAC9B,QAAQ,EAAE,2CAAoB;IAC9B,MAAM,EAAE,qCAAiB;IACzB,KAAK,EAAE,mCAAgB;IACvB,IAAI,EAAE,iCAAe;IACrB,QAAQ,EAAE,yCAAmB;IAC7B,MAAM,EAAE,qCAAiB;IACzB,KAAK,EAAE,mCAAgB;IACvB,KAAK,EAAE,mCAAgB;IACvB,KAAK,EAAE,mCAAgB;IACvB,OAAO,EAAE,uCAAkB;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,qBAAqB,CACpC,GAAe,EACf,QAAgB;IAEhB,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE;QAClC,OAAO,wBAAwB,CAAC,GAAG,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;KACpE;IAED,8EAA8E;IAC9E,mBAAmB;IACnB,OAAO,wBAAwB,CAAC,GAAG,EAAE,uCAAkB,CAAC,CAAC;AAC1D,CAAC;AAXD,sDAWC;AAED;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,GAAe,EAAE,MAAwB;IAC1E,MAAM,oBAAoB,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;QACtD,GAAG,CAAC,IAAI,CAAC,IAAI,yBAAW,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3D,OAAO,GAAG,CAAC;IACZ,CAAC,EAAE,EAA2C,CAAC,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chains-config/index.ts"],"names":[],"mappings":";;;AAIA,gDAA6C;AAE7C,yDAAsD;AACtD,yDAAsD;AACtD,6DAA0D;AAC1D,+DAA4D;AAC5D,yDAAsD;AACtD,6DAA0D;AAC1D,qEAAkE;AAClE,2EAAwE;AACxE,2EAAqE;AACrE,2DAAwD;AACxD,uDAAoD;AACpD,2DAAwD;AACxD,2DAAwD;AACxD,6DAA0D;AAC1D,yDAAsD;AACtD,+DAA4D;AAC5D,+DAA4D;AAC5D,2DAAwD;AACxD,uDAAoD;AACpD,iEAA8D;AAC9D,iEAA8D;AAC9D,6DAA0D;AAE1D,MAAM,mBAAmB,GAAsC;IAC9D,OAAO,EAAE,uCAAkB;IAC3B,QAAQ,EAAE,yCAAmB;IAC7B,QAAQ,EAAE,yCAAmB;IAC7B,MAAM,EAAE,qCAAiB;IACzB,MAAM,EAAE,qCAAiB;IACzB,IAAI,EAAE,iCAAe;IACrB,OAAO,EAAE,uCAAkB;IAC3B,mBAAmB,EAAE,+CAAsB;IAC3C,uBAAuB,EAAE,qDAAyB;IAClD,uBAAuB,EAAE,kDAAsB;IAC/C,SAAS,EAAE,2CAAoB;IAC/B,SAAS,EAAE,2CAAoB;IAC/B,QAAQ,EAAE,2CAAoB;IAC9B,QAAQ,EAAE,2CAAoB;IAC9B,MAAM,EAAE,qCAAiB;IACzB,KAAK,EAAE,mCAAgB;IACvB,IAAI,EAAE,iCAAe;IACrB,QAAQ,EAAE,yCAAmB;IAC7B,MAAM,EAAE,qCAAiB;IACzB,KAAK,EAAE,mCAAgB;IACvB,KAAK,EAAE,mCAAgB;IACvB,KAAK,EAAE,mCAAgB;IACvB,OAAO,EAAE,uCAAkB;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,qBAAqB,CACpC,GAAe,EACf,QAAgB;IAEhB,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE;QAClC,OAAO,wBAAwB,CAAC,GAAG,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;KACpE;IAED,8EAA8E;IAC9E,mBAAmB;IACnB,OAAO,wBAAwB,CAAC,GAAG,EAAE,uCAAkB,CAAC,CAAC;AAC1D,CAAC;AAXD,sDAWC;AAED;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,GAAe,EAAE,MAAwB;IAC1E,MAAM,oBAAoB,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;QACtD,GAAG,CAAC,IAAI,CAAC,IAAI,yBAAW,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3D,OAAO,GAAG,CAAC;IACZ,CAAC,EAAE,EAA2C,CAAC,CAAC;AACjD,CAAC"}
@@ -4,6 +4,7 @@ import { RequestHandler, Response, Router } from 'express';
4
4
  import { AbstractService } from 'src/services/AbstractService';
5
5
  import { AnyJson } from 'src/types/polkadot-js';
6
6
  import { IAddressNumberParams, IAddressParam, INumberParam, IParaIdParam } from 'src/types/requests';
7
+ import { ISanitizeOptions } from '../types/sanitize';
7
8
  declare type SidecarRequestHandler = RequestHandler<IAddressParam> | RequestHandler<IAddressNumberParams> | RequestHandler<INumberParam> | RequestHandler<IParaIdParam> | RequestHandler;
8
9
  /**
9
10
  * Abstract base class for creating controller classes.
@@ -62,6 +63,6 @@ export default abstract class AbstractController<T extends AbstractService> {
62
63
  * @param res Response
63
64
  * @param body response body
64
65
  */
65
- static sanitizedSend<T>(res: Response<AnyJson>, body: T): void;
66
+ static sanitizedSend<T>(res: Response<AnyJson>, body: T, options?: ISanitizeOptions): void;
66
67
  }
67
68
  export {};
@@ -150,8 +150,8 @@ class AbstractController {
150
150
  * @param res Response
151
151
  * @param body response body
152
152
  */
153
- static sanitizedSend(res, body) {
154
- res.send((0, sanitize_1.sanitizeNumbers)(body));
153
+ static sanitizedSend(res, body, options = {}) {
154
+ res.send((0, sanitize_1.sanitizeNumbers)(body, options));
155
155
  }
156
156
  }
157
157
  exports.default = AbstractController;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractController.js","sourceRoot":"","sources":["../../../src/controllers/AbstractController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractController.js","sourceRoot":"","sources":["../../../src/controllers/AbstractController.ts"],"names":[],"mappings":"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"}
@@ -48,14 +48,15 @@ class AccountsBalanceController extends AbstractController_1.default {
48
48
  * @param req Express Request
49
49
  * @param res Express Response
50
50
  */
51
- this.getAccountBalanceInfo = async ({ params: { address }, query: { at, token } }, res) => {
51
+ this.getAccountBalanceInfo = async ({ params: { address }, query: { at, token, denominated } }, res) => {
52
52
  const tokenArg = typeof token === 'string'
53
53
  ? token.toUpperCase()
54
54
  : // We assume the first token is the native token
55
55
  this.api.registry.chainTokens[0].toUpperCase();
56
+ const withDenomination = denominated === 'true';
56
57
  const hash = await this.getHashFromAt(at);
57
58
  const historicApi = await this.api.at(hash);
58
- AccountsBalanceController.sanitizedSend(res, await this.service.fetchAccountBalanceInfo(hash, historicApi, address, tokenArg));
59
+ AccountsBalanceController.sanitizedSend(res, await this.service.fetchAccountBalanceInfo(hash, historicApi, address, tokenArg, withDenomination));
59
60
  };
60
61
  this.initRoutes();
61
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AccountsBalanceInfoController.js","sourceRoot":"","sources":["../../../../src/controllers/accounts/AccountsBalanceInfoController.ts"],"names":[],"mappings":";;;;;AAIA,iDAAmD;AACnD,6CAA4D;AAC5D,+EAAuD;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAqB,yBAA0B,SAAQ,4BAA8C;IACpG,YAAY,GAAe;QAC1B,KAAK,CACJ,GAAG,EACH,iCAAiC,EACjC,IAAI,qCAA0B,CAAC,GAAG,CAAC,CACnC,CAAC;QAUH;;;;;WAKG;QACK,0BAAqB,GAAkC,KAAK,EACnE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAC7C,GAAG,EACa,EAAE;YAClB,MAAM,QAAQ,GACb,OAAO,KAAK,KAAK,QAAQ;gBACxB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE;gBACrB,CAAC,CAAC,gDAAgD;oBAChD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAEnD,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,yBAAyB,CAAC,aAAa,CACtC,GAAG,EACH,MAAM,IAAI,CAAC,OAAO,CAAC,uBAAuB,CACzC,IAAI,EACJ,WAAW,EACX,OAAO,EACP,QAAQ,CACR,CACD,CAAC;QACH,CAAC,CAAC;QArCD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,4BAAe,CAAC,CAAC;QAE5C,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;CA+BD;AA7CD,4CA6CC"}
1
+ {"version":3,"file":"AccountsBalanceInfoController.js","sourceRoot":"","sources":["../../../../src/controllers/accounts/AccountsBalanceInfoController.ts"],"names":[],"mappings":";;;;;AAIA,iDAAmD;AACnD,6CAA4D;AAC5D,+EAAuD;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAqB,yBAA0B,SAAQ,4BAA8C;IACpG,YAAY,GAAe;QAC1B,KAAK,CACJ,GAAG,EACH,iCAAiC,EACjC,IAAI,qCAA0B,CAAC,GAAG,CAAC,CACnC,CAAC;QAUH;;;;;WAKG;QACK,0BAAqB,GAAkC,KAAK,EACnE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAC1D,GAAG,EACa,EAAE;YAClB,MAAM,QAAQ,GACb,OAAO,KAAK,KAAK,QAAQ;gBACxB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE;gBACrB,CAAC,CAAC,gDAAgD;oBAChD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,gBAAgB,GAAG,WAAW,KAAK,MAAM,CAAC;YAEhD,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,yBAAyB,CAAC,aAAa,CACtC,GAAG,EACH,MAAM,IAAI,CAAC,OAAO,CAAC,uBAAuB,CACzC,IAAI,EACJ,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,CAChB,CACD,CAAC;QACH,CAAC,CAAC;QAvCD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,4BAAe,CAAC,CAAC;QAE5C,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;CAiCD;AA/CD,4CA+CC"}
@@ -30,7 +30,15 @@ class RuntimeMetadataController extends AbstractController_1.default {
30
30
  */
31
31
  this.getMetadata = async ({ query: { at } }, res) => {
32
32
  const hash = await this.getHashFromAt(at);
33
- RuntimeMetadataController.sanitizedSend(res, await this.service.fetchMetadata(hash));
33
+ let historicApi;
34
+ if (at) {
35
+ historicApi = await this.api.at(hash);
36
+ }
37
+ const registry = historicApi ? historicApi.registry : this.api.registry;
38
+ const metadata = await this.service.fetchMetadata(hash);
39
+ RuntimeMetadataController.sanitizedSend(res, metadata, {
40
+ metadataOpts: { registry, version: metadata.version },
41
+ });
34
42
  };
35
43
  this.initRoutes();
36
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeMetadataController.js","sourceRoot":"","sources":["../../../../src/controllers/runtime/RuntimeMetadataController.ts"],"names":[],"mappings":";;;;;AAGA,6CAAwD;AACxD,+EAAuD;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAqB,yBAA0B,SAAQ,4BAA0C;IAChG,YAAY,GAAe;QAC1B,KAAK,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,iCAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;QAQlE;;;;;WAKG;QACK,gBAAW,GAAmB,KAAK,EAC1C,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EACjB,GAAG,EACa,EAAE;YAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAE1C,yBAAyB,CAAC,aAAa,CACtC,GAAG,EACH,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CACtC,CAAC;QACH,CAAC,CAAC;QAvBD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;CAmBD;AA3BD,4CA2BC"}
1
+ {"version":3,"file":"RuntimeMetadataController.js","sourceRoot":"","sources":["../../../../src/controllers/runtime/RuntimeMetadataController.ts"],"names":[],"mappings":";;;;;AAGA,6CAAwD;AACxD,+EAAuD;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAqB,yBAA0B,SAAQ,4BAA0C;IAChG,YAAY,GAAe;QAC1B,KAAK,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,iCAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;QAQlE;;;;;WAKG;QACK,gBAAW,GAAmB,KAAK,EAC1C,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EACjB,GAAG,EACa,EAAE;YAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAE1C,IAAI,WAAW,CAAC;YAChB,IAAI,EAAE,EAAE;gBACP,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aACtC;YAED,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAExD,yBAAyB,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE;gBACtD,YAAY,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE;aACrD,CAAC,CAAC;QACJ,CAAC,CAAC;QA9BD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;CA0BD;AAlCD,4CAkCC"}
@@ -31,6 +31,7 @@ exports.nodeUtilFormat = winston.format((info, _opts) => {
31
31
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
32
32
  const args = info[triple_beam_1.SPLAT];
33
33
  if (args) {
34
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
34
35
  info.message = (0, util_1.format)(info.message, ...args);
35
36
  }
36
37
  return info;
@@ -1 +1 @@
1
- {"version":3,"file":"nodeUtilFormat.js","sourceRoot":"","sources":["../../../../src/logging/transformers/nodeUtilFormat.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,6CAAoC;AACpC,+BAA8B;AAC9B,iDAAmC;AAEnC;;;GAGG;AACU,QAAA,cAAc,GAAG,OAAO,CAAC,MAAM,CAC3C,CAAC,IAAuB,EAAE,KAAc,EAAE,EAAE;IAC3C,mEAAmE;IACnE,MAAM,IAAI,GAAG,IAAI,CAAC,mBAA0B,CAAC,CAAC;IAC9C,IAAI,IAAI,EAAE;QACT,IAAI,CAAC,OAAO,GAAG,IAAA,aAAM,EAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;KAC7C;IACD,OAAO,IAAI,CAAC;AACb,CAAC,CACD,CAAC"}
1
+ {"version":3,"file":"nodeUtilFormat.js","sourceRoot":"","sources":["../../../../src/logging/transformers/nodeUtilFormat.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,6CAAoC;AACpC,+BAA8B;AAC9B,iDAAmC;AAEnC;;;GAGG;AACU,QAAA,cAAc,GAAG,OAAO,CAAC,MAAM,CAC3C,CAAC,IAAuB,EAAE,KAAc,EAAE,EAAE;IAC3C,mEAAmE;IACnE,MAAM,IAAI,GAAG,IAAI,CAAC,mBAA0B,CAAC,CAAC;IAC9C,IAAI,IAAI,EAAE;QACT,iEAAiE;QACjE,IAAI,CAAC,OAAO,GAAG,IAAA,aAAM,EAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;KAC7C;IACD,OAAO,IAAI,CAAC;AACb,CAAC,CACD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { AnyJson } from '../types/polkadot-js';
2
+ import { ISanitizeOptions } from '../types/sanitize';
2
3
  /**
3
4
  * Forcibly serialize all instances of AbstractInt to base 10 and otherwise
4
5
  * normalize data presentation. We try to guarantee that data is
@@ -11,5 +12,6 @@ import { AnyJson } from '../types/polkadot-js';
11
12
  * them to serialize to Hex.
12
13
  *
13
14
  * @param data - any arbitrary data that Sidecar might send
15
+ * @param options - set of options specific to sanitization
14
16
  */
15
- export declare function sanitizeNumbers(data: unknown): AnyJson;
17
+ export declare function sanitizeNumbers(data: unknown, options?: ISanitizeOptions): AnyJson;
@@ -15,15 +15,16 @@ const polkadot_js_1 = require("../types/polkadot-js");
15
15
  * based types we can provide a strong guarantee that the output will be of AnyJson
16
16
  *
17
17
  * @param value a type that implements polkadot-js Codec
18
+ * @param options - set of options specific to sanitization
18
19
  */
19
- function sanitizeCodec(value) {
20
+ function sanitizeCodec(value, options = {}) {
20
21
  // If objects have an overlapping prototype chain
21
22
  // we check lower down the chain first. More specific before less specific.
22
23
  if (value instanceof types_1.Option) {
23
- return value.isSome ? sanitizeNumbers(value.unwrap()) : null;
24
+ return value.isSome ? sanitizeNumbers(value.unwrap(), options) : null;
24
25
  }
25
26
  if (value instanceof types_1.Compact) {
26
- return sanitizeNumbers(value.unwrap());
27
+ return sanitizeNumbers(value.unwrap(), options);
27
28
  }
28
29
  if (value instanceof types_1.Struct) {
29
30
  return value.defKeys.reduce((jsonStruct, key) => {
@@ -31,7 +32,14 @@ function sanitizeCodec(value) {
31
32
  if (!property) {
32
33
  return jsonStruct;
33
34
  }
34
- jsonStruct[key] = sanitizeNumbers(property);
35
+ jsonStruct[key] = sanitizeNumbers(property, options);
36
+ /**
37
+ * If the data we are sanitizing is metadata, ex: `/runtime/metadata`,
38
+ * we want to sanitize all exceptions that arent caught using `sanitizeNumbers`
39
+ */
40
+ if (options === null || options === void 0 ? void 0 : options.metadataOpts) {
41
+ sanitizeMetadataExceptions(key, jsonStruct, property, options.metadataOpts);
42
+ }
35
43
  return jsonStruct;
36
44
  }, {});
37
45
  }
@@ -39,7 +47,7 @@ function sanitizeCodec(value) {
39
47
  // This is essentially a Map with [keys: strings]: any
40
48
  const json = {};
41
49
  value.forEach((element, prop) => {
42
- json[prop] = sanitizeNumbers(element);
50
+ json[prop] = sanitizeNumbers(element, options);
43
51
  });
44
52
  return json;
45
53
  }
@@ -50,13 +58,13 @@ function sanitizeCodec(value) {
50
58
  return {
51
59
  // Replicating camelCaseing introduced in https://github.com/polkadot-js/api/pull/3024
52
60
  // Specifically see: https://github.com/polkadot-js/api/blob/516fbd4a90652841d4e81636e74ca472e2dc5621/packages/types/src/codec/Enum.ts#L346
53
- [(0, util_1.stringCamelCase)(value.type)]: sanitizeNumbers(value.value),
61
+ [(0, util_1.stringCamelCase)(value.type)]: sanitizeNumbers(value.value, options),
54
62
  };
55
63
  }
56
64
  if (value instanceof types_1.BTreeSet) {
57
65
  const jsonSet = [];
58
66
  value.forEach((element) => {
59
- jsonSet.push(sanitizeNumbers(element));
67
+ jsonSet.push(sanitizeNumbers(element, options));
60
68
  });
61
69
  return jsonSet;
62
70
  }
@@ -70,7 +78,7 @@ function sanitizeCodec(value) {
70
78
  }
71
79
  // Should cover Vec, VecAny, VecFixed, Tuple
72
80
  if (value instanceof types_codec_1.AbstractArray) {
73
- return value.map(sanitizeNumbers);
81
+ return value.map((val) => sanitizeNumbers(val, options));
74
82
  }
75
83
  // Should cover Uint, Int etc...
76
84
  if (value instanceof types_codec_1.AbstractInt) {
@@ -91,39 +99,40 @@ function sanitizeCodec(value) {
91
99
  * them to serialize to Hex.
92
100
  *
93
101
  * @param data - any arbitrary data that Sidecar might send
102
+ * @param options - set of options specific to sanitization
94
103
  */
95
- function sanitizeNumbers(data) {
104
+ function sanitizeNumbers(data, options = {}) {
96
105
  if (data !== 0 && !data) {
97
106
  // All falsy values are valid AnyJson, but we want to force numbers to strings
98
107
  return data;
99
108
  }
100
109
  if ((0, polkadot_js_1.isCodec)(data)) {
101
- return sanitizeCodec(data);
110
+ return sanitizeCodec(data, options);
102
111
  }
103
112
  if (data instanceof Set) {
104
113
  const jsonSet = [];
105
114
  for (const element of data) {
106
- jsonSet.push(sanitizeNumbers(element));
115
+ jsonSet.push(sanitizeNumbers(element, options));
107
116
  }
108
117
  return jsonSet;
109
118
  }
110
119
  if (data instanceof Map) {
111
- return mapTypeSanitizeKeyValue(data);
120
+ return mapTypeSanitizeKeyValue(data, options);
112
121
  }
113
122
  if (data instanceof bn_js_1.default || typeof data === 'number') {
114
123
  return data.toString(10);
115
124
  }
116
125
  if (Array.isArray(data)) {
117
- return data.map(sanitizeNumbers);
126
+ return data.map((val) => sanitizeNumbers(val, options));
118
127
  }
119
128
  if ((0, polkadot_js_1.isToJSONable)(data)) {
120
129
  // Handle non-codec types that have their own toJSON
121
- return sanitizeNumbers(data.toJSON());
130
+ return sanitizeNumbers(data.toJSON(), options);
122
131
  }
123
132
  // Pretty much everything non-primitive is an object, so we need to check this last
124
133
  if ((0, util_1.isObject)(data)) {
125
134
  return Object.entries(data).reduce((sanitizedObject, [key, value]) => {
126
- sanitizedObject[key] = sanitizeNumbers(value);
135
+ sanitizedObject[key] = sanitizeNumbers(value, options);
127
136
  return sanitizedObject;
128
137
  }, {});
129
138
  }
@@ -140,16 +149,77 @@ exports.sanitizeNumbers = sanitizeNumbers;
140
149
  * is either a number or string.
141
150
  *
142
151
  * @param map Map | CodecMap
152
+ * @param options - set of options specific to sanitization
143
153
  */
144
- function mapTypeSanitizeKeyValue(map) {
154
+ function mapTypeSanitizeKeyValue(map, options = {}) {
145
155
  const jsonMap = {};
146
156
  map.forEach((value, key) => {
147
- const nonCodecKey = sanitizeNumbers(key);
157
+ const nonCodecKey = sanitizeNumbers(key, options);
148
158
  if (!(typeof nonCodecKey === 'string' || typeof nonCodecKey === 'number')) {
149
159
  throw new http_errors_1.InternalServerError('Unexpected non-string and non-number key while sanitizing a Map-like type');
150
160
  }
151
- jsonMap[nonCodecKey] = sanitizeNumbers(value);
161
+ jsonMap[nonCodecKey] = sanitizeNumbers(value, options);
152
162
  });
153
163
  return jsonMap;
154
164
  }
165
+ /**
166
+ * Based on the metadata version, we ensure arbitrary exceptions are sanitized
167
+ * properly.
168
+ *
169
+ * @param key Current key of an object
170
+ * @param struct Current struct being sanitized
171
+ * @param property Current value of the inputted key
172
+ * @param metadataOpts metadata specific options
173
+ */
174
+ function sanitizeMetadataExceptions(key, struct, property, metadataOpts) {
175
+ switch (metadataOpts.version) {
176
+ case 14:
177
+ sanitizeMetadataExceptionsV14(key, struct, property, metadataOpts);
178
+ break;
179
+ default:
180
+ break;
181
+ }
182
+ }
183
+ /**
184
+ * When v14 metadata is being sanitized, we ensure arbitrary exceptions are sanitized
185
+ * properly.
186
+ *
187
+ * @param key Current key of an object
188
+ * @param struct Current struct being sanitized
189
+ * @param property Current value of the inputted key
190
+ * @param metadataOpts metadata specific options
191
+ */
192
+ function sanitizeMetadataExceptionsV14(key, struct, property, metadataOpts) {
193
+ const { registry } = metadataOpts;
194
+ const integerTypes = ['u128', 'u64', 'u32', 'u16', 'u8'];
195
+ const value = struct[key];
196
+ /**
197
+ * With V14 metadata the only key that is named 'value' lives inside of the
198
+ * pallets key. The expected structure containing `{ type, value }`.
199
+ */
200
+ if (key === 'value' && property instanceof types_codec_1.Bytes && (0, util_1.isHex)(value)) {
201
+ const u8aValue = (0, util_1.hexToU8a)(value);
202
+ /**
203
+ * Get the lookup typedef. It is safe to assume that we have the struct
204
+ * `type` field when `key === value` is true.
205
+ */
206
+ const typeDef = registry.lookup.getTypeDef(parseFloat(struct.type));
207
+ /**
208
+ * Checks u128, u64, u32, u16, u8
209
+ */
210
+ if (integerTypes.includes(typeDef.type)) {
211
+ struct[key] = (0, util_1.u8aToBn)(u8aValue.subarray(0, u8aValue.byteLength), {
212
+ isLe: true,
213
+ }).toString(10);
214
+ }
215
+ /**
216
+ * The value is not an integer, and needs to be converted to its
217
+ * correct type, then transformed to JSON.
218
+ */
219
+ if ((0, util_1.isHex)(struct[key]) && (typeDef.lookupName || typeDef.type)) {
220
+ const typeName = typeDef.lookupName || typeDef.type;
221
+ struct[key] = sanitizeNumbers(registry.createType(typeName, u8aValue).toJSON(), { metadataOpts });
222
+ }
223
+ }
224
+ }
155
225
  //# sourceMappingURL=sanitizeNumbers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeNumbers.js","sourceRoot":"","sources":["../../../src/sanitize/sanitizeNumbers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sanitizeNumbers.js","sourceRoot":"","sources":["../../../src/sanitize/sanitizeNumbers.ts"],"names":[],"mappings":";;;;;;AAAA,2CAOyB;AACzB,uDAM+B;AAC/B,yCAMwB;AACxB,kDAAuB;AACvB,6CAAkD;AAElD,sDAM8B;AAG9B;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,KAAY,EAAE,UAA4B,EAAE;IAClE,iDAAiD;IACjD,2EAA2E;IAE3E,IAAI,KAAK,YAAY,cAAM,EAAE;QAC5B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;KACtE;IAED,IAAI,KAAK,YAAY,eAAO,EAAE;QAC7B,OAAO,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;KAChD;IAED,IAAI,KAAK,YAAY,cAAM,EAAE;QAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;YAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEhC,IAAI,CAAC,QAAQ,EAAE;gBACd,OAAO,UAAU,CAAC;aAClB;YAED,UAAU,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAErD;;;eAGG;YACH,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,EAAE;gBAC1B,0BAA0B,CACzB,GAAG,EACH,UAAU,EACV,QAAQ,EACR,OAAO,CAAC,YAAY,CACpB,CAAC;aACF;YAED,OAAO,UAAU,CAAC;QACnB,CAAC,EAAE,EAA6B,CAAC,CAAC;KAClC;IAED,IAAI,KAAK,YAAY,kBAAI,EAAE;QAC1B,sDAAsD;QACtD,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;KACZ;IAED,IAAI,KAAK,YAAY,YAAI,EAAE;QAC1B,IAAI,KAAK,CAAC,OAAO,EAAE;YAClB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;SACtB;QAED,OAAO;YACN,sFAAsF;YACtF,2IAA2I;YAC3I,CAAC,IAAA,sBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;SACpE,CAAC;KACF;IAED,IAAI,KAAK,YAAY,gBAAQ,EAAE;QAC9B,MAAM,OAAO,GAAc,EAAE,CAAC;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC,OAAc,EAAE,EAAE;YAChC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;KACf;IAED,IAAI,KAAK,YAAY,WAAQ,EAAE;QAC9B,gDAAgD;QAChD,OAAO,KAAK,CAAC,OAAO,CAAC;KACrB;IAED,oCAAoC;IACpC,IAAI,KAAK,YAAY,sBAAQ,EAAE;QAC9B,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;KACtC;IAED,4CAA4C;IAC5C,IAAI,KAAK,YAAY,2BAAa,EAAE;QACnC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;KACzD;IAED,gCAAgC;IAChC,IAAI,KAAK,YAAY,yBAAW,EAAE;QACjC,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KAC1B;IAED,kCAAkC;IAClC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,eAAe,CAC9B,IAAa,EACb,UAA4B,EAAE;IAE9B,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;QACxB,8EAA8E;QAC9E,OAAO,IAAe,CAAC;KACvB;IAED,IAAI,IAAA,qBAAO,EAAC,IAAI,CAAC,EAAE;QAClB,OAAO,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACpC;IAED,IAAI,IAAI,YAAY,GAAG,EAAE;QACxB,MAAM,OAAO,GAAG,EAAE,CAAC;QAEnB,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;SAChD;QAED,OAAO,OAAO,CAAC;KACf;IAED,IAAI,IAAI,YAAY,GAAG,EAAE;QACxB,OAAO,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC9C;IAED,IAAI,IAAI,YAAY,eAAE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACnD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACzB;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;KACxD;IAED,IAAI,IAAA,0BAAY,EAAC,IAAI,CAAC,EAAE;QACvB,oDAAoD;QACpD,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;KAC/C;IAED,mFAAmF;IACnF,IAAI,IAAA,eAAQ,EAAC,IAAI,CAAC,EAAE;QACnB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACpE,eAAe,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAEvD,OAAO,eAAe,CAAC;QACxB,CAAC,EAAE,EAAiC,CAAC,CAAC;KACtC;IAED,IAAI,CAAC,IAAA,uBAAS,EAAC,IAAI,CAAC,EAAE;QACrB,yCAAyC;QACzC,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;IAED,OAAO,IAAe,CAAC;AACxB,CAAC;AAxDD,0CAwDC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAC/B,GAAqC,EACrC,UAA4B,EAAE;IAE9B,MAAM,OAAO,GAAY,EAAE,CAAC;IAE5B,GAAG,CAAC,OAAO,CAAC,CAAC,KAAc,EAAE,GAAY,EAAE,EAAE;QAC5C,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,CAAC,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ,CAAC,EAAE;YAC1E,MAAM,IAAI,iCAAmB,CAC5B,2EAA2E,CAC3E,CAAC;SACF;QAED,OAAO,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,0BAA0B,CAClC,GAAW,EACX,MAA+B,EAC/B,QAAe,EACf,YAA8B;IAE9B,QAAQ,YAAY,CAAC,OAAO,EAAE;QAC7B,KAAK,EAAE;YACN,6BAA6B,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YACnE,MAAM;QACP;YACC,MAAM;KACP;AACF,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,6BAA6B,CACrC,GAAW,EACX,MAA+B,EAC/B,QAAe,EACf,YAA8B;IAE9B,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC;IAClC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B;;;OAGG;IACH,IAAI,GAAG,KAAK,OAAO,IAAI,QAAQ,YAAY,mBAAK,IAAI,IAAA,YAAK,EAAC,KAAK,CAAC,EAAE;QACjE,MAAM,QAAQ,GAAG,IAAA,eAAQ,EAAC,KAAK,CAAC,CAAC;QACjC;;;WAGG;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CACzC,UAAU,CAAC,MAAM,CAAC,IAAc,CAAC,CACjC,CAAC;QACF;;WAEG;QACH,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAChE,IAAI,EAAE,IAAI;aACV,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAChB;QACD;;;WAGG;QACH,IAAI,IAAA,YAAK,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;YAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAEpD,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAC5B,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,EAChD,EAAE,YAAY,EAAE,CAChB,CAAC;SACF;KACD;AACF,CAAC"}
@@ -796,5 +796,61 @@ describe('sanitizeNumbers', () => {
796
796
  '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY',
797
797
  ]);
798
798
  });
799
+ describe('handles metadata v14 correctly', () => {
800
+ const sanitizeOptions = {
801
+ metadataOpts: {
802
+ registry: registries_1.polkadotRegistryV9190,
803
+ version: 14,
804
+ },
805
+ };
806
+ it('handles unknown struct bytes correctly for Option<u128>', () => {
807
+ const struct = new types_1.Struct(registries_1.polkadotRegistryV9190, { type: 'Text', value: 'Bytes' }, { type: '535', value: '0x01005039278c0400000000000000000000' } // Option<u128>
808
+ );
809
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(struct, sanitizeOptions)).toStrictEqual({
810
+ type: '535',
811
+ value: '5000000000000',
812
+ });
813
+ });
814
+ it('handles unknown struct bytes correctly for u128', () => {
815
+ const struct = new types_1.Struct(registries_1.polkadotRegistryV9190, { type: 'Text', value: 'Bytes' }, { type: '6', value: '0x00e87648170000000000000000000000' } // u128
816
+ );
817
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(struct, sanitizeOptions)).toStrictEqual({
818
+ type: '6',
819
+ value: '100000000000',
820
+ });
821
+ });
822
+ it('handles unknown struct bytes correctly for u64', () => {
823
+ const struct = new types_1.Struct(registries_1.polkadotRegistryV9190, { type: 'Text', value: 'Bytes' }, { type: '8', value: '0xc084666557010000' } // u64
824
+ );
825
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(struct, sanitizeOptions)).toStrictEqual({
826
+ type: '8',
827
+ value: '1474875000000',
828
+ });
829
+ });
830
+ it('handles unknown struct bytes correctly for u32', () => {
831
+ const struct = new types_1.Struct(registries_1.polkadotRegistryV9190, { type: 'Text', value: 'Bytes' }, { type: '4', value: '0x00400000' } // u32
832
+ );
833
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(struct, sanitizeOptions)).toStrictEqual({
834
+ type: '4',
835
+ value: '16384',
836
+ });
837
+ });
838
+ it('handles unknown struct bytes correctly for u16', () => {
839
+ const struct = new types_1.Struct(registries_1.polkadotRegistryV9190, { type: 'Text', value: 'Bytes' }, { type: '75', value: '0x0200' } // u16
840
+ );
841
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(struct, sanitizeOptions)).toStrictEqual({
842
+ type: '75',
843
+ value: '2',
844
+ });
845
+ });
846
+ it('handles unknown struct bytes correctly for u8', () => {
847
+ const struct = new types_1.Struct(registries_1.polkadotRegistryV9190, { type: 'Text', value: 'Bytes' }, { type: '2', value: '0x05' } // u8
848
+ );
849
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(struct, sanitizeOptions)).toStrictEqual({
850
+ type: '2',
851
+ value: '5',
852
+ });
853
+ });
854
+ });
799
855
  });
800
856
  //# sourceMappingURL=sanitizeNumbers.spec.js.map