@substrate/api-sidecar 11.3.15 → 11.3.18
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 +40 -63
- package/build/package.json +29 -14
- package/build/src/chains-config/acalaControllers.js +0 -2
- package/build/src/chains-config/acalaControllers.js.map +1 -1
- package/build/src/chains-config/astarControllers.js +0 -2
- package/build/src/chains-config/astarControllers.js.map +1 -1
- package/build/src/chains-config/bifrostControllers.js +0 -2
- package/build/src/chains-config/bifrostControllers.js.map +1 -1
- package/build/src/chains-config/calamariControllers.js +0 -2
- package/build/src/chains-config/calamariControllers.js.map +1 -1
- package/build/src/chains-config/crustControllers.js +0 -2
- package/build/src/chains-config/crustControllers.js.map +1 -1
- package/build/src/chains-config/defaultControllers.js +0 -1
- package/build/src/chains-config/defaultControllers.js.map +1 -1
- package/build/src/chains-config/dockMainnetControllers.js +0 -2
- package/build/src/chains-config/dockMainnetControllers.js.map +1 -1
- package/build/src/chains-config/dockPoSMainnetControllers.js +0 -2
- package/build/src/chains-config/dockPoSMainnetControllers.js.map +1 -1
- package/build/src/chains-config/dockPoSTestnetControllers.js +0 -2
- package/build/src/chains-config/dockPoSTestnetControllers.js.map +1 -1
- package/build/src/chains-config/karuraControllers.js +0 -2
- package/build/src/chains-config/karuraControllers.js.map +1 -1
- package/build/src/chains-config/kiltControllers.js +0 -1
- package/build/src/chains-config/kiltControllers.js.map +1 -1
- package/build/src/chains-config/kulupuControllers.js +0 -1
- package/build/src/chains-config/kulupuControllers.js.map +1 -1
- package/build/src/chains-config/kusamaControllers.js +0 -2
- package/build/src/chains-config/kusamaControllers.js.map +1 -1
- package/build/src/chains-config/mandalaControllers.js +0 -1
- package/build/src/chains-config/mandalaControllers.js.map +1 -1
- package/build/src/chains-config/mantaControllers.js +0 -2
- package/build/src/chains-config/mantaControllers.js.map +1 -1
- package/build/src/chains-config/polkadotControllers.js +0 -2
- package/build/src/chains-config/polkadotControllers.js.map +1 -1
- package/build/src/chains-config/polymeshControllers.js +0 -2
- package/build/src/chains-config/polymeshControllers.js.map +1 -1
- package/build/src/chains-config/shidenControllers.js +0 -2
- package/build/src/chains-config/shidenControllers.js.map +1 -1
- package/build/src/chains-config/soraControllers.js +0 -1
- package/build/src/chains-config/soraControllers.js.map +1 -1
- package/build/src/chains-config/statemineControllers.js +0 -1
- package/build/src/chains-config/statemineControllers.js.map +1 -1
- package/build/src/chains-config/statemintControllers.js +0 -1
- package/build/src/chains-config/statemintControllers.js.map +1 -1
- package/build/src/chains-config/westendControllers.js +0 -2
- package/build/src/chains-config/westendControllers.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/blocks/BlocksController.d.ts +0 -1
- package/build/src/controllers/blocks/BlocksController.js +1 -1
- package/build/src/controllers/blocks/BlocksController.js.map +1 -1
- package/build/src/controllers/blocks/BlocksExtrinsicsController.d.ts +0 -2
- package/build/src/controllers/blocks/BlocksExtrinsicsController.js +1 -1
- package/build/src/controllers/blocks/BlocksExtrinsicsController.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/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/blocks/BlocksService.d.ts +11 -5
- package/build/src/services/blocks/BlocksService.js +30 -17
- package/build/src/services/blocks/BlocksService.js.map +1 -1
- package/build/src/services/blocks/BlocksService.spec.js +57 -17
- package/build/src/services/blocks/BlocksService.spec.js.map +1 -1
- package/build/src/types/chains-config/ControllerConfig.d.ts +0 -2
- package/build/src/types/chains-config/MetadataConsts.d.ts +2 -14
- package/build/src/types/chains-config/MetadataConsts.js.map +1 -1
- package/build/src/types/responses/Block.d.ts +2 -0
- 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 +29 -14
- package/build/src/chains-config/metadata-consts/acalaConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/acalaConsts.js +0 -11
- package/build/src/chains-config/metadata-consts/acalaConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/astarConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/astarConsts.js +0 -20
- package/build/src/chains-config/metadata-consts/astarConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/bifrostConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/bifrostConsts.js +0 -14
- package/build/src/chains-config/metadata-consts/bifrostConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/calamariConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/calamariConsts.js +0 -11
- package/build/src/chains-config/metadata-consts/calamariConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/commonParachainsConsts.d.ts +0 -10
- package/build/src/chains-config/metadata-consts/commonParachainsConsts.js +0 -23
- package/build/src/chains-config/metadata-consts/commonParachainsConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/crustConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/crustConsts.js +0 -11
- package/build/src/chains-config/metadata-consts/crustConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/dockConsts.d.ts +0 -4
- package/build/src/chains-config/metadata-consts/dockConsts.js +0 -25
- package/build/src/chains-config/metadata-consts/dockConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/index.d.ts +0 -30
- package/build/src/chains-config/metadata-consts/index.js +0 -109
- package/build/src/chains-config/metadata-consts/index.js.map +0 -1
- package/build/src/chains-config/metadata-consts/karuraConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/karuraConsts.js +0 -14
- package/build/src/chains-config/metadata-consts/karuraConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/kusamaConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/kusamaConsts.js +0 -21
- package/build/src/chains-config/metadata-consts/kusamaConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/mantaConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/mantaConsts.js +0 -11
- package/build/src/chains-config/metadata-consts/mantaConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/polkadotConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/polkadotConsts.js +0 -20
- package/build/src/chains-config/metadata-consts/polkadotConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/polymeshConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/polymeshConsts.js +0 -10
- package/build/src/chains-config/metadata-consts/polymeshConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/shidenConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/shidenConsts.js +0 -20
- package/build/src/chains-config/metadata-consts/shidenConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/statemineConsts.d.ts +0 -7
- package/build/src/chains-config/metadata-consts/statemineConsts.js +0 -21
- package/build/src/chains-config/metadata-consts/statemineConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/statemintConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/statemintConsts.js +0 -11
- package/build/src/chains-config/metadata-consts/statemintConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/substrateConsts.d.ts +0 -24
- package/build/src/chains-config/metadata-consts/substrateConsts.js +0 -37
- package/build/src/chains-config/metadata-consts/substrateConsts.js.map +0 -1
- package/build/src/chains-config/metadata-consts/westendConsts.d.ts +0 -2
- package/build/src/chains-config/metadata-consts/westendConsts.js +0 -20
- package/build/src/chains-config/metadata-consts/westendConsts.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statemineControllers.js","sourceRoot":"","sources":["../../../src/chains-config/statemineControllers.ts"],"names":[],"mappings":";;;AACA,+CAAgD;AAEhD;;GAEG;AACU,QAAA,oBAAoB,GAAqB;IACrD,WAAW,EAAE;QACZ,gBAAgB;QAChB,kBAAkB;QAClB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,aAAa;QACb,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;KACnB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,IAAI;QACf,iBAAiB,EAAE,CAAC;QACpB,
|
|
1
|
+
{"version":3,"file":"statemineControllers.js","sourceRoot":"","sources":["../../../src/chains-config/statemineControllers.ts"],"names":[],"mappings":";;;AACA,+CAAgD;AAEhD;;GAEG;AACU,QAAA,oBAAoB,GAAqB;IACrD,WAAW,EAAE;QACZ,gBAAgB;QAChB,kBAAkB;QAClB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,aAAa;QACb,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;KACnB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,IAAI;QACf,iBAAiB,EAAE,CAAC;QACpB,UAAU,EAAE,IAAA,uBAAY,GAAE;KAC1B;CACD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statemintControllers.js","sourceRoot":"","sources":["../../../src/chains-config/statemintControllers.ts"],"names":[],"mappings":";;;AACA,+CAAgD;AAEhD;;GAEG;AACU,QAAA,oBAAoB,GAAqB;IACrD,WAAW,EAAE;QACZ,gBAAgB;QAChB,kBAAkB;QAClB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,aAAa;QACb,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;KACnB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,IAAI;QACf,iBAAiB,EAAE,GAAG;QACtB,
|
|
1
|
+
{"version":3,"file":"statemintControllers.js","sourceRoot":"","sources":["../../../src/chains-config/statemintControllers.ts"],"names":[],"mappings":";;;AACA,+CAAgD;AAEhD;;GAEG;AACU,QAAA,oBAAoB,GAAqB;IACrD,WAAW,EAAE;QACZ,gBAAgB;QAChB,kBAAkB;QAClB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,aAAa;QACb,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;KACnB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,IAAI;QACf,iBAAiB,EAAE,GAAG;QACtB,UAAU,EAAE,IAAA,uBAAY,GAAE;KAC1B;CACD,CAAC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.westendControllers = void 0;
|
|
4
4
|
const lruCache_1 = require("./cache/lruCache");
|
|
5
|
-
const metadata_consts_1 = require("./metadata-consts");
|
|
6
5
|
/**
|
|
7
6
|
* Westend configuration for Sidecar.
|
|
8
7
|
*/
|
|
@@ -32,7 +31,6 @@ exports.westendControllers = {
|
|
|
32
31
|
options: {
|
|
33
32
|
finalizes: true,
|
|
34
33
|
minCalcFeeRuntime: 6,
|
|
35
|
-
blockWeightStore: (0, metadata_consts_1.getBlockWeight)('westend'),
|
|
36
34
|
blockStore: (0, lruCache_1.initLRUCache)(),
|
|
37
35
|
},
|
|
38
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"westendControllers.js","sourceRoot":"","sources":["../../../src/chains-config/westendControllers.ts"],"names":[],"mappings":";;;AACA,+CAAgD;
|
|
1
|
+
{"version":3,"file":"westendControllers.js","sourceRoot":"","sources":["../../../src/chains-config/westendControllers.ts"],"names":[],"mappings":";;;AACA,+CAAgD;AAEhD;;GAEG;AACU,QAAA,kBAAkB,GAAqB;IACnD,WAAW,EAAE;QACZ,qBAAqB;QACrB,qBAAqB;QACrB,wBAAwB;QACxB,kBAAkB;QAClB,qBAAqB;QACrB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,wBAAwB;QACxB,gBAAgB;QAChB,OAAO;QACP,aAAa;QACb,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;KACnB;IACD,OAAO,EAAE;QACR,SAAS,EAAE,IAAI;QACf,iBAAiB,EAAE,CAAC;QACpB,UAAU,EAAE,IAAA,uBAAY,GAAE;KAC1B;CACD,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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"}
|
|
@@ -67,7 +67,7 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
|
|
|
67
67
|
*/
|
|
68
68
|
class BlocksController extends AbstractController_1.default {
|
|
69
69
|
constructor(api, options) {
|
|
70
|
-
super(api, '/blocks', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.blockStore
|
|
70
|
+
super(api, '/blocks', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.blockStore));
|
|
71
71
|
this.options = options;
|
|
72
72
|
/**
|
|
73
73
|
* Get the latest block.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":";;;;;AACA,yCAAuC;AAIvC,6CAA+C;AAG/C,+EAAuD;
|
|
1
|
+
{"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { ApiPromise } from '@polkadot/api';
|
|
2
2
|
import LRU from 'lru-cache';
|
|
3
|
-
import { BlockWeightStore } from 'src/types/chains-config';
|
|
4
3
|
import { IBlock } from 'src/types/responses';
|
|
5
4
|
import { BlocksService } from '../../services';
|
|
6
5
|
import AbstractController from '../AbstractController';
|
|
7
6
|
interface ControllerOptions {
|
|
8
|
-
blockWeightStore: BlockWeightStore;
|
|
9
7
|
minCalcFeeRuntime: null | number;
|
|
10
8
|
blockStore: LRU<string, IBlock>;
|
|
11
9
|
}
|
|
@@ -7,7 +7,7 @@ const services_1 = require("../../services");
|
|
|
7
7
|
const AbstractController_1 = __importDefault(require("../AbstractController"));
|
|
8
8
|
class BlocksExtrinsicsController extends AbstractController_1.default {
|
|
9
9
|
constructor(api, options) {
|
|
10
|
-
super(api, '/blocks/:blockId/extrinsics', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.blockStore
|
|
10
|
+
super(api, '/blocks/:blockId/extrinsics', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.blockStore));
|
|
11
11
|
/**
|
|
12
12
|
*
|
|
13
13
|
* @param _req Express Request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlocksExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksExtrinsicsController.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"BlocksExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksExtrinsicsController.ts"],"names":[],"mappings":";;;;;AAKA,6CAA+C;AAE/C,+EAAuD;AAOvD,MAAqB,0BAA2B,SAAQ,4BAAiC;IACxF,YAAY,GAAe,EAAE,OAA0B;QACtD,KAAK,CACJ,GAAG,EACH,6BAA6B,EAC7B,IAAI,wBAAa,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,UAAU,CAAC,CACrE,CAAC;QAUH;;;;WAIG;QACK,4BAAuB,GAAiC,KAAK,EACpE,EACC,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EACnC,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,GACnC,EACD,GAAG,EACa,EAAE;YAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEjD,MAAM,YAAY,GAAG,SAAS,KAAK,MAAM,CAAC;YAC1C,MAAM,gBAAgB,GAAG,aAAa,KAAK,MAAM,CAAC;YAElD,MAAM,OAAO,GAAG;gBACf,SAAS,EAAE,YAAY;gBACvB,aAAa,EAAE,gBAAgB;gBAC/B,cAAc,EAAE,IAAI;gBACpB,kBAAkB,EAAE,KAAK;gBACzB,gBAAgB,EAAE,IAAI;aACtB,CAAC;YAEF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAE5C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAExE;;eAEG;YACH,IAAI,CAAC,kBAAkB,CACtB,cAAc,EACd,8CAA8C,CAC9C,CAAC;YAEF;;;eAGG;YACH,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAE3C,0BAA0B,CAAC,aAAa,CACvC,GAAG,EACH,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAChD,CAAC;QACH,CAAC,CAAC;QAxDD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC;YAC9B,CAAC,kBAAkB,EAAE,IAAI,CAAC,uBAAuB,CAAC;SAClD,CAAC,CAAC;IACJ,CAAC;CAkDD;AAhED,6CAgEC"}
|
|
@@ -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"}
|
|
@@ -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
|