@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.
- package/README.md +1 -3
- package/build/package.json +30 -29
- package/build/src/chains-config/index.js.map +1 -1
- package/build/src/controllers/AbstractController.d.ts +2 -1
- package/build/src/controllers/AbstractController.js +2 -2
- package/build/src/controllers/AbstractController.js.map +1 -1
- package/build/src/controllers/accounts/AccountsBalanceInfoController.js +3 -2
- package/build/src/controllers/accounts/AccountsBalanceInfoController.js.map +1 -1
- package/build/src/controllers/runtime/RuntimeMetadataController.js +9 -1
- package/build/src/controllers/runtime/RuntimeMetadataController.js.map +1 -1
- package/build/src/logging/transformers/nodeUtilFormat.js +1 -0
- package/build/src/logging/transformers/nodeUtilFormat.js.map +1 -1
- package/build/src/sanitize/sanitizeNumbers.d.ts +3 -1
- package/build/src/sanitize/sanitizeNumbers.js +88 -18
- package/build/src/sanitize/sanitizeNumbers.js.map +1 -1
- package/build/src/sanitize/sanitizeNumbers.spec.js +56 -0
- package/build/src/sanitize/sanitizeNumbers.spec.js.map +1 -1
- package/build/src/services/accounts/AccountsBalanceInfoService.d.ts +33 -1
- package/build/src/services/accounts/AccountsBalanceInfoService.js +80 -16
- package/build/src/services/accounts/AccountsBalanceInfoService.js.map +1 -1
- package/build/src/services/accounts/AccountsBalanceInfoService.spec.js +48 -4
- package/build/src/services/accounts/AccountsBalanceInfoService.spec.js.map +1 -1
- package/build/src/services/accounts/AccountsStakingPayoutsService.spec.js +3 -3
- package/build/src/services/blocks/BlocksService.js +2 -2
- package/build/src/services/blocks/BlocksService.js.map +1 -1
- package/build/src/types/responses/AccountBalanceInfo.d.ts +11 -6
- package/build/src/types/responses/Extrinsic.d.ts +4 -4
- package/build/src/types/sanitize/index.d.ts +1 -0
- package/build/src/types/sanitize/index.js +14 -0
- package/build/src/types/sanitize/index.js.map +1 -0
- package/build/src/types/sanitize/sanitize.d.ts +8 -0
- package/build/src/types/sanitize/sanitize.js +3 -0
- package/build/src/types/sanitize/sanitize.js.map +1 -0
- 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.
|
|
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.
|
package/build/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "11.
|
|
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/ &&
|
|
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": "
|
|
57
|
-
"@polkadot/apps-config": "
|
|
58
|
-
"@polkadot/util-crypto": "
|
|
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.
|
|
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.
|
|
82
|
-
"@polkadot/api-augment": "8.
|
|
83
|
-
"@polkadot/api-base": "8.
|
|
84
|
-
"@polkadot/api-derive": "8.
|
|
85
|
-
"@polkadot/rpc-core": "8.
|
|
86
|
-
"@polkadot/rpc-augment": "8.
|
|
87
|
-
"@polkadot/rpc-provider": "8.
|
|
88
|
-
"@polkadot/types": "8.
|
|
89
|
-
"@polkadot/types-augment": "8.
|
|
90
|
-
"@polkadot/types-codec": "8.
|
|
91
|
-
"@polkadot/types-create": "8.
|
|
92
|
-
"@polkadot/types-support": "8.
|
|
93
|
-
"@polkadot/types-known": "8.
|
|
94
|
-
"@polkadot/keyring": "9.
|
|
95
|
-
"@polkadot/networks": "9.
|
|
96
|
-
"@polkadot/util": "9.
|
|
97
|
-
"@polkadot/util-crypto": "9.
|
|
98
|
-
"@polkadot/x-fetch": "9.
|
|
99
|
-
"@polkadot/x-global": "9.
|
|
100
|
-
"@polkadot/x-bigint": "9.
|
|
101
|
-
"@polkadot/x-ws": "9.
|
|
102
|
-
"@polkadot/wasm-crypto": "6.
|
|
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,
|
|
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":";;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAuC;AAEvC,iDAAmC;AACnC,6CAAyE;AAUzE,0CAA8C;AAC9C,4CAAqD;
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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":";;;;;;AAAA,2CAOyB;AACzB,
|
|
1
|
+
{"version":3,"file":"sanitizeNumbers.js","sourceRoot":"","sources":["../../../src/sanitize/sanitizeNumbers.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|