@substrate/api-sidecar 17.0.0 → 17.1.1
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 +21 -1
- package/build/package.json +7 -6
- package/build/src/chains-config/assetHubKusamaControllers.d.ts +5 -0
- package/build/src/chains-config/{statemineControllers.js → assetHubKusamaControllers.js} +4 -4
- package/build/src/chains-config/assetHubKusamaControllers.js.map +1 -0
- package/build/src/chains-config/assetHubPolkadotControllers.d.ts +5 -0
- package/build/src/chains-config/{statemintControllers.js → assetHubPolkadotControllers.js} +4 -4
- package/build/src/chains-config/assetHubPolkadotControllers.js.map +1 -0
- package/build/src/chains-config/index.js +6 -6
- package/build/src/chains-config/index.js.map +1 -1
- package/build/src/chains-config/westendControllers.js +1 -0
- package/build/src/chains-config/westendControllers.js.map +1 -1
- package/build/src/main.js +10 -0
- package/build/src/main.js.map +1 -1
- package/build/src/middleware/error/httpErrorMiddleware.js +6 -0
- package/build/src/middleware/error/httpErrorMiddleware.js.map +1 -1
- package/build/src/middleware/validate/validateBooleanMiddleware.spec.js +1 -1
- package/build/src/middleware/validate/validateBooleanMiddleware.spec.js.map +1 -1
- package/build/src/parseArgs.js +13 -1
- package/build/src/parseArgs.js.map +1 -1
- package/build/src/services/accounts/AccountsConvertService.js +15 -2
- package/build/src/services/accounts/AccountsConvertService.js.map +1 -1
- package/build/src/services/accounts/AccountsConvertService.spec.js +15 -1
- package/build/src/services/accounts/AccountsConvertService.spec.js.map +1 -1
- package/build/src/util/metrics.d.ts +21 -0
- package/build/src/util/metrics.js +49 -0
- package/build/src/util/metrics.js.map +1 -0
- package/package.json +7 -6
- package/build/src/chains-config/statemineControllers.d.ts +0 -5
- package/build/src/chains-config/statemineControllers.js.map +0 -1
- package/build/src/chains-config/statemintControllers.d.ts +0 -5
- package/build/src/chains-config/statemintControllers.js.map +0 -1
package/README.md
CHANGED
|
@@ -242,6 +242,26 @@ file you can `symlink` it with `.env.test`. For example you could run
|
|
|
242
242
|
`ln -s .env.myEnv .env.test && yarn start:log-rpc` to use `.env.myEnv` to set ENV variables. (see linux
|
|
243
243
|
commands `ln` and `unlink` for more info.)
|
|
244
244
|
|
|
245
|
+
### Prometheus server
|
|
246
|
+
Prometheus metrics can be enabled by running sidecar with the following flag :
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
yarn start --prometheus
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
You can also define a custom port by running :
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
yarn start --prometheus --prometheus-port=<YOUR_CUSTOM_PORT>
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
The metrics endpoint can then be accessed :
|
|
259
|
+
- on the default port : `http://127.0.0.1:9100/metrics` or
|
|
260
|
+
- on your custom port if you defined one : `http://127.0.0.1:<YOUR_CUSTOM_PORT>/metrics`
|
|
261
|
+
|
|
262
|
+
That way you will have access to the default prometheus metrics and one extra custom metric called `sas_http_errors` (of type counter). This counter is increased by 1 every time an http error has occured in sidecar.
|
|
263
|
+
|
|
264
|
+
|
|
245
265
|
## Debugging fee and staking payout calculations
|
|
246
266
|
|
|
247
267
|
It is possible to get more information about the fee and staking payout calculation process logged to
|
|
@@ -258,7 +278,7 @@ CALC_DEBUG=1 sh calc/build.sh
|
|
|
258
278
|
|
|
259
279
|
## Chain integration guide
|
|
260
280
|
|
|
261
|
-
[Click here for chain integration guide.](./guides/CHAIN_INTEGRATION.md)
|
|
281
|
+
[Click here for chain integration guide.](./guides/CHAIN_INTEGRATION.md)
|
|
262
282
|
|
|
263
283
|
## Docker
|
|
264
284
|
|
package/build/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "17.
|
|
2
|
+
"version": "17.1.1",
|
|
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",
|
|
@@ -42,17 +42,17 @@
|
|
|
42
42
|
"start:latest-e2e-scripts": "yarn build:scripts && node scripts/build/runLatestE2eTests.js",
|
|
43
43
|
"start:historical-e2e-tests": "yarn build:e2e-tests && node ./e2e-tests/build/historical/historical.js --config=./e2e-tests/jest.config.js",
|
|
44
44
|
"start:historical-e2e-scripts": "yarn build:scripts && node scripts/build/runHistoricalE2eTests.js",
|
|
45
|
-
"test": "NODE_ENV=test substrate-exec-jest
|
|
45
|
+
"test": "NODE_ENV=test substrate-exec-jest",
|
|
46
46
|
"test:watch": "NODE_ENV=test substrate-exec-jest --watch",
|
|
47
|
-
"test:ci": "NODE_ENV=test substrate-exec-jest
|
|
47
|
+
"test:ci": "NODE_ENV=test substrate-exec-jest",
|
|
48
48
|
"test:latest-e2e-tests": "yarn start:latest-e2e-scripts",
|
|
49
49
|
"test:historical-e2e-tests": "yarn start:historical-e2e-scripts",
|
|
50
50
|
"test:test-release": "yarn build:scripts && node scripts/build/runYarnPack.js"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@polkadot/api": "^10.
|
|
54
|
-
"@polkadot/api-contract": "^10.
|
|
55
|
-
"@polkadot/util-crypto": "^12.2
|
|
53
|
+
"@polkadot/api": "^10.9.1",
|
|
54
|
+
"@polkadot/api-contract": "^10.9.1",
|
|
55
|
+
"@polkadot/util-crypto": "^12.3.2",
|
|
56
56
|
"@substrate/calc": "^0.3.1",
|
|
57
57
|
"argparse": "^2.0.1",
|
|
58
58
|
"confmgr": "^1.0.10",
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"express-winston": "^4.2.0",
|
|
61
61
|
"http-errors": "^2.0.0",
|
|
62
62
|
"lru-cache": "^7.13.1",
|
|
63
|
+
"prom-client": "^14.2.0",
|
|
63
64
|
"rxjs": "^7.5.6",
|
|
64
65
|
"winston": "^3.8.1"
|
|
65
66
|
},
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
// You should have received a copy of the GNU General Public License
|
|
16
16
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.
|
|
18
|
+
exports.assetHubKusamaControllers = void 0;
|
|
19
19
|
const cache_1 = require("./cache");
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* Asset Hub Kusama configuration for Sidecar.
|
|
22
22
|
*/
|
|
23
|
-
exports.
|
|
23
|
+
exports.assetHubKusamaControllers = {
|
|
24
24
|
controllers: [
|
|
25
25
|
'AccountsAssets',
|
|
26
26
|
'AccountsBalanceInfo',
|
|
@@ -49,4 +49,4 @@ exports.statemineControllers = {
|
|
|
49
49
|
hasQueryFeeApi: new cache_1.QueryFeeDetailsCache(null, null),
|
|
50
50
|
},
|
|
51
51
|
};
|
|
52
|
-
//# sourceMappingURL=
|
|
52
|
+
//# sourceMappingURL=assetHubKusamaControllers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assetHubKusamaControllers.js","sourceRoot":"","sources":["../../../src/chains-config/assetHubKusamaControllers.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAGxE,mCAA6D;AAE7D;;GAEG;AACU,QAAA,yBAAyB,GAAqB;IAC1D,WAAW,EAAE;QACZ,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB;QAClB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,eAAe;QACf,eAAe;QACf,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,oBAAY,GAAE;QAC1B,cAAc,EAAE,IAAI,4BAAoB,CAAC,IAAI,EAAE,IAAI,CAAC;KACpD;CACD,CAAC"}
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
// You should have received a copy of the GNU General Public License
|
|
16
16
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.
|
|
18
|
+
exports.assetHubPolkadotControllers = void 0;
|
|
19
19
|
const cache_1 = require("./cache");
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* Asset Hub Polkadot configuration for Sidecar.
|
|
22
22
|
*/
|
|
23
|
-
exports.
|
|
23
|
+
exports.assetHubPolkadotControllers = {
|
|
24
24
|
controllers: [
|
|
25
25
|
'AccountsAssets',
|
|
26
26
|
'AccountsBalanceInfo',
|
|
@@ -50,4 +50,4 @@ exports.statemintControllers = {
|
|
|
50
50
|
hasQueryFeeApi: new cache_1.QueryFeeDetailsCache(null, null),
|
|
51
51
|
},
|
|
52
52
|
};
|
|
53
|
-
//# sourceMappingURL=
|
|
53
|
+
//# sourceMappingURL=assetHubPolkadotControllers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assetHubPolkadotControllers.js","sourceRoot":"","sources":["../../../src/chains-config/assetHubPolkadotControllers.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAGxE,mCAA6D;AAE7D;;GAEG;AACU,QAAA,2BAA2B,GAAqB;IAC5D,WAAW,EAAE;QACZ,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB;QAClB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,sBAAsB;QACtB,eAAe;QACf,eAAe;QACf,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,oBAAY,GAAE;QAC1B,cAAc,EAAE,IAAI,4BAAoB,CAAC,IAAI,EAAE,IAAI,CAAC;KACpD;CACD,CAAC"}
|
|
@@ -18,6 +18,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.getControllersForSpec = void 0;
|
|
19
19
|
const controllers_1 = require("../controllers");
|
|
20
20
|
const acalaControllers_1 = require("./acalaControllers");
|
|
21
|
+
const assetHubKusamaControllers_1 = require("./assetHubKusamaControllers");
|
|
22
|
+
const assetHubPolkadotControllers_1 = require("./assetHubPolkadotControllers");
|
|
21
23
|
const astarControllers_1 = require("./astarControllers");
|
|
22
24
|
const bifrostControllers_1 = require("./bifrostControllers");
|
|
23
25
|
const bifrostPolkadotControllers_1 = require("./bifrostPolkadotControllers");
|
|
@@ -39,8 +41,6 @@ const polkadotControllers_1 = require("./polkadotControllers");
|
|
|
39
41
|
const polymeshControllers_1 = require("./polymeshControllers");
|
|
40
42
|
const shidenControllers_1 = require("./shidenControllers");
|
|
41
43
|
const soraControllers_1 = require("./soraControllers");
|
|
42
|
-
const statemineControllers_1 = require("./statemineControllers");
|
|
43
|
-
const statemintControllers_1 = require("./statemintControllers");
|
|
44
44
|
const westendControllers_1 = require("./westendControllers");
|
|
45
45
|
const specToControllerMap = {
|
|
46
46
|
westend: westendControllers_1.westendControllers,
|
|
@@ -53,10 +53,10 @@ const specToControllerMap = {
|
|
|
53
53
|
'dock-main-runtime': dockMainnetControllers_1.dockMainnetControllers,
|
|
54
54
|
'dock-pos-main-runtime': dockPoSMainnetControllers_1.dockPoSMainnetControllers,
|
|
55
55
|
'dock-pos-test-runtime': dockPoSTestnetControllers_1.dockTestnetControllers,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
westmine:
|
|
59
|
-
|
|
56
|
+
'asset-hub-kusama': assetHubKusamaControllers_1.assetHubKusamaControllers,
|
|
57
|
+
'asset-hub-polkadot': assetHubPolkadotControllers_1.assetHubPolkadotControllers,
|
|
58
|
+
westmine: assetHubKusamaControllers_1.assetHubKusamaControllers,
|
|
59
|
+
'asset-hub-westend': assetHubPolkadotControllers_1.assetHubPolkadotControllers,
|
|
60
60
|
shiden: shidenControllers_1.shidenControllers,
|
|
61
61
|
astar: astarControllers_1.astarControllers,
|
|
62
62
|
sora: soraControllers_1.soraControllers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chains-config/index.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAIxE,gDAA6C;AAI7C,yDAAsD;AACtD,yDAAsD;AACtD,6DAA0D;AAC1D,6EAA0E;AAC1E,+DAA4D;AAC5D,yDAAsD;AACtD,6DAA0D;AAC1D,qEAAkE;AAClE,2EAAwE;AACxE,2EAAqE;AACrE,yDAAsD;AACtD,2DAAwD;AACxD,uDAAoD;AACpD,2DAAwD;AACxD,2DAAwD;AACxD,6DAA0D;AAC1D,yDAAsD;AACtD,+DAA4D;AAC5D,+DAA4D;AAC5D,+DAA4D;AAC5D,2DAAwD;AACxD,uDAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chains-config/index.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAIxE,gDAA6C;AAI7C,yDAAsD;AACtD,2EAAwE;AACxE,+EAA4E;AAC5E,yDAAsD;AACtD,6DAA0D;AAC1D,6EAA0E;AAC1E,+DAA4D;AAC5D,yDAAsD;AACtD,6DAA0D;AAC1D,qEAAkE;AAClE,2EAAwE;AACxE,2EAAqE;AACrE,yDAAsD;AACtD,2DAAwD;AACxD,uDAAoD;AACpD,2DAAwD;AACxD,2DAAwD;AACxD,6DAA0D;AAC1D,yDAAsD;AACtD,+DAA4D;AAC5D,+DAA4D;AAC5D,+DAA4D;AAC5D,2DAAwD;AACxD,uDAAoD;AACpD,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,kBAAkB,EAAE,qDAAyB;IAC7C,oBAAoB,EAAE,yDAA2B;IACjD,QAAQ,EAAE,qDAAyB;IACnC,mBAAmB,EAAE,yDAA2B;IAChD,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;IAC3B,gBAAgB,EAAE,uDAA0B;IAC5C,KAAK,EAAE,mCAAgB;IACvB,QAAQ,EAAE,yCAAmB;CAC7B,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"westendControllers.js","sourceRoot":"","sources":["../../../src/chains-config/westendControllers.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAGxE,mCAA6D;AAE7D;;GAEG;AACU,QAAA,kBAAkB,GAAqB;IACnD,WAAW,EAAE;QACZ,qBAAqB;QACrB,iBAAiB;QACjB,qBAAqB;QACrB,wBAAwB;QACxB,kBAAkB;QAClB,qBAAqB;QACrB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,sBAAsB;QACtB,eAAe;QACf,eAAe;QACf,eAAe;QACf,wBAAwB;QACxB,wBAAwB;QACxB,0BAA0B;QAC1B,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,oBAAY,GAAE;QAC1B,cAAc,EAAE,IAAI,4BAAoB,CAAC,IAAI,EAAE,IAAI,CAAC;KACpD;CACD,CAAC"}
|
|
1
|
+
{"version":3,"file":"westendControllers.js","sourceRoot":"","sources":["../../../src/chains-config/westendControllers.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAGxE,mCAA6D;AAE7D;;GAEG;AACU,QAAA,kBAAkB,GAAqB;IACnD,WAAW,EAAE;QACZ,qBAAqB;QACrB,iBAAiB;QACjB,qBAAqB;QACrB,wBAAwB;QACxB,kBAAkB;QAClB,qBAAqB;QACrB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,sBAAsB;QACtB,eAAe;QACf,eAAe;QACf,eAAe;QACf,wBAAwB;QACxB,wBAAwB;QACxB,0BAA0B;QAC1B,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,oBAAY,GAAE;QAC1B,cAAc,EAAE,IAAI,4BAAoB,CAAC,IAAI,EAAE,IAAI,CAAC;KACpD;CACD,CAAC"}
|
package/build/src/main.js
CHANGED
|
@@ -55,6 +55,7 @@ const Log_1 = require("./logging/Log");
|
|
|
55
55
|
const middleware = __importStar(require("./middleware"));
|
|
56
56
|
const parseArgs_1 = require("./parseArgs");
|
|
57
57
|
const SidecarConfig_1 = require("./SidecarConfig");
|
|
58
|
+
const metrics_1 = __importDefault(require("./util/metrics"));
|
|
58
59
|
async function main() {
|
|
59
60
|
const { config } = SidecarConfig_1.SidecarConfig;
|
|
60
61
|
const { logger } = Log_1.Log;
|
|
@@ -104,6 +105,15 @@ async function main() {
|
|
|
104
105
|
const server = app.listen();
|
|
105
106
|
server.keepAliveTimeout = config.EXPRESS.KEEP_ALIVE_TIMEOUT;
|
|
106
107
|
server.headersTimeout = config.EXPRESS.KEEP_ALIVE_TIMEOUT + 5000;
|
|
108
|
+
if (args.prometheus) {
|
|
109
|
+
// Create Metrics App
|
|
110
|
+
const metricsApp = new metrics_1.default({
|
|
111
|
+
port: 9100,
|
|
112
|
+
host: config.EXPRESS.HOST,
|
|
113
|
+
});
|
|
114
|
+
// Start the Metrics server
|
|
115
|
+
metricsApp.listen();
|
|
116
|
+
}
|
|
107
117
|
}
|
|
108
118
|
/**
|
|
109
119
|
* Prompt the user with some basic info about the node and the network they have
|
package/build/src/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;AAEA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExE,yCAAyC;AACzC,iCAA+B;AAE/B,uCAA2C;AAC3C,yDAAkE;AAElE,qCAA+B;AAE/B,mEAA0C;AAC1C,gDAAwB;AACxB,mDAAwD;AACxD,+DAA4D;AAC5D,uCAAoC;AACpC,yDAA2C;AAC3C,2CAAwC;AACxC,mDAAgD;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.httpErrorMiddleware = void 0;
|
|
19
19
|
const http_errors_1 = require("http-errors");
|
|
20
20
|
const Log_1 = require("../../logging/Log");
|
|
21
|
+
const parseArgs_1 = require("../../parseArgs");
|
|
22
|
+
const metrics_1 = require("../../util/metrics");
|
|
21
23
|
/**
|
|
22
24
|
* Handle HttpError instances.
|
|
23
25
|
*
|
|
@@ -33,12 +35,16 @@ const httpErrorMiddleware = (err, _req, res, next) => {
|
|
|
33
35
|
if (res.headersSent || !(err instanceof http_errors_1.HttpError)) {
|
|
34
36
|
return next(err);
|
|
35
37
|
}
|
|
38
|
+
const args = (0, parseArgs_1.parseArgs)();
|
|
36
39
|
const code = err.status;
|
|
37
40
|
const info = {
|
|
38
41
|
code,
|
|
39
42
|
message: err.message,
|
|
40
43
|
stack: err.stack,
|
|
41
44
|
};
|
|
45
|
+
if (args.prometheus) {
|
|
46
|
+
metrics_1.httpErrorCounter.inc();
|
|
47
|
+
}
|
|
42
48
|
Log_1.Log.logger.error(info);
|
|
43
49
|
res.status(code).send(info);
|
|
44
50
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpErrorMiddleware.js","sourceRoot":"","sources":["../../../../src/middleware/error/httpErrorMiddleware.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAGxE,6CAAwC;AAExC,2CAAwC;AACxC;;;;;;;;;;GAUG;AACI,MAAM,mBAAmB,GAAwB,CACvD,GAAY,EACZ,IAAI,EACJ,GAAG,EACH,IAAI,EACG,EAAE;IACT,IAAI,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,YAAY,uBAAS,CAAC,EAAE;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;KACjB;
|
|
1
|
+
{"version":3,"file":"httpErrorMiddleware.js","sourceRoot":"","sources":["../../../../src/middleware/error/httpErrorMiddleware.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAGxE,6CAAwC;AAExC,2CAAwC;AACxC,+CAA4C;AAC5C,gDAAsD;AACtD;;;;;;;;;;GAUG;AACI,MAAM,mBAAmB,GAAwB,CACvD,GAAY,EACZ,IAAI,EACJ,GAAG,EACH,IAAI,EACG,EAAE;IACT,IAAI,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,YAAY,uBAAS,CAAC,EAAE;QACnD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;KACjB;IACD,MAAM,IAAI,GAAG,IAAA,qBAAS,GAAE,CAAC;IACzB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC;IAExB,MAAM,IAAI,GAAG;QACZ,IAAI;QACJ,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,KAAK,EAAE,GAAG,CAAC,KAAK;KAChB,CAAC;IACF,IAAI,IAAI,CAAC,UAAU,EAAE;QACpB,0BAAgB,CAAC,GAAG,EAAE,CAAC;KACvB;IACD,SAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAvBW,QAAA,mBAAmB,uBAuB9B"}
|
|
@@ -18,7 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
const http_errors_1 = require("http-errors");
|
|
19
19
|
const util_1 = require("./util");
|
|
20
20
|
const validateBooleanMiddleware_1 = require("./validateBooleanMiddleware");
|
|
21
|
-
describe('
|
|
21
|
+
describe('validateBooleanMiddleware', () => {
|
|
22
22
|
(0, util_1.doesNotErrorWith)('no query params in path', {
|
|
23
23
|
query: {},
|
|
24
24
|
}, (0, validateBooleanMiddleware_1.validateBooleanMiddleware)([]));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateBooleanMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/validate/validateBooleanMiddleware.spec.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;AAGxE,6CAAyC;AAEzC,iCAAsD;AACtD,2EAAwE;AAExE,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"validateBooleanMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/validate/validateBooleanMiddleware.spec.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;AAGxE,6CAAyC;AAEzC,iCAAsD;AACtD,2EAAwE;AAExE,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IAC1C,IAAA,uBAAgB,EACf,yBAAyB,EACzB;QACC,KAAK,EAAE,EAAE;KACa,EACvB,IAAA,qDAAyB,EAAC,EAAE,CAAC,CAC7B,CAAC;IAEF,IAAA,uBAAgB,EACf,mCAAmC,EACnC;QACC,KAAK,EAAE;YACN,SAAS,EAAE,MAAM;YACjB,SAAS,EAAE,OAAO;SAClB;KACqB,EACvB,IAAA,qDAAyB,EAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CACrD,CAAC;IAEF,IAAA,uBAAgB,EACf,oCAAoC,EACpC;QACC,KAAK,EAAE;YACN,OAAO,EAAE,OAAO;SAChB;KACqB,EACvB,IAAA,qDAAyB,EAAC,EAAE,CAAC,CAC7B,CAAC;IAEF,IAAA,iBAAU,EACT,6BAA6B,EAC7B;QACC,KAAK,EAAE;YACN,SAAS,EAAE,OAAO;SAClB;KACqB,EACvB,IAAI,wBAAU,CACb,kEAAkE,CAClE,EACD,IAAA,qDAAyB,EAAC,CAAC,WAAW,CAAC,CAAC,CACxC,CAAC;IAEF,IAAA,iBAAU,EACT,8BAA8B,EAC9B;QACC,KAAK,EAAE;YACN,SAAS,EAAE,QAAQ;SACnB;KACqB,EACvB,IAAI,wBAAU,CACb,mEAAmE,CACnE,EACD,IAAA,qDAAyB,EAAC,CAAC,WAAW,CAAC,CAAC,CACxC,CAAC;IAEF,IAAA,iBAAU,EACT,+BAA+B,EAC/B;QACC,KAAK,EAAE;YACN,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,UAAU;SACrB;KACqB,EACvB,IAAI,wBAAU,CACb,0IAA0I,CAC1I,EACD,IAAA,qDAAyB,EAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CACrD,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/build/src/parseArgs.js
CHANGED
|
@@ -19,7 +19,19 @@ exports.parseArgs = void 0;
|
|
|
19
19
|
const argparse_1 = require("argparse");
|
|
20
20
|
const parseArgs = () => {
|
|
21
21
|
const parser = new argparse_1.ArgumentParser();
|
|
22
|
-
parser.add_argument('-v', '--version', {
|
|
22
|
+
parser.add_argument('-v', '--version', {
|
|
23
|
+
action: 'store_true',
|
|
24
|
+
help: 'print substrate-api-sidecar version',
|
|
25
|
+
});
|
|
26
|
+
parser.add_argument('-p', '--prometheus', {
|
|
27
|
+
action: 'store_true',
|
|
28
|
+
help: 'enable the prometheus metrics endpoint',
|
|
29
|
+
});
|
|
30
|
+
parser.add_argument('-pp', '--prometheus-port', {
|
|
31
|
+
type: 'int',
|
|
32
|
+
default: 9100,
|
|
33
|
+
help: 'specify the port number on which the prometheus metrics are exposed [default: 9100]',
|
|
34
|
+
});
|
|
23
35
|
return parser.parse_args();
|
|
24
36
|
};
|
|
25
37
|
exports.parseArgs = parseArgs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseArgs.js","sourceRoot":"","sources":["../../src/parseArgs.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAExE,uCAAqD;AAE9C,MAAM,SAAS,GAAG,GAAc,EAAE;IACxC,MAAM,MAAM,GAAG,IAAI,yBAAc,EAAE,CAAC;IAEpC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"parseArgs.js","sourceRoot":"","sources":["../../src/parseArgs.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAExE,uCAAqD;AAE9C,MAAM,SAAS,GAAG,GAAc,EAAE;IACxC,MAAM,MAAM,GAAG,IAAI,yBAAc,EAAE,CAAC;IAEpC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE;QACtC,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,qCAAqC;KAC3C,CAAC,CAAC;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE;QACzC,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,wCAAwC;KAC9C,CAAC,CAAC;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,mBAAmB,EAAE;QAC/C,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,qFAAqF;KAC3F,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,UAAU,EAAe,CAAC;AACzC,CAAC,CAAC;AAlBW,QAAA,SAAS,aAkBpB"}
|
|
@@ -18,10 +18,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.AccountsConvertService = void 0;
|
|
19
19
|
const api_1 = require("@polkadot/api");
|
|
20
20
|
const util_1 = require("@polkadot/util");
|
|
21
|
+
const util_2 = require("@polkadot/util");
|
|
21
22
|
const util_crypto_1 = require("@polkadot/util-crypto");
|
|
22
|
-
const util_crypto_2 = require("@polkadot/util-crypto");
|
|
23
23
|
const http_errors_1 = require("http-errors");
|
|
24
24
|
const AbstractService_1 = require("../AbstractService");
|
|
25
|
+
/**
|
|
26
|
+
* Copyright 2023 via polkadot-js/common
|
|
27
|
+
*
|
|
28
|
+
* The slightly modified below logic is copyrighted from polkadot-js/common . The exact path to the code can be seen here:
|
|
29
|
+
* https://github.com/polkadot-js/common/blob/e5cb0ba2b4a6b5817626cc964b4f66334f2410e4/packages/keyring/src/pair/index.ts#L44-L49
|
|
30
|
+
*/
|
|
31
|
+
const TYPE_ADDRESS = {
|
|
32
|
+
ecdsa: (p) => ((0, util_2.hexToU8a)(p).length > 32 ? (0, util_crypto_1.blake2AsHex)(p) : p),
|
|
33
|
+
ed25519: (p) => p,
|
|
34
|
+
sr25519: (p) => p,
|
|
35
|
+
};
|
|
25
36
|
class AccountsConvertService extends AbstractService_1.AbstractService {
|
|
26
37
|
/**
|
|
27
38
|
* Takes a given AccountId or Public Key (hex) and converts it to an SS58 address.
|
|
@@ -48,7 +59,9 @@ class AccountsConvertService extends AbstractService_1.AbstractService {
|
|
|
48
59
|
if (network === null) {
|
|
49
60
|
throw new http_errors_1.BadRequest('The given `prefix` query parameter does not correspond to an existing network.');
|
|
50
61
|
}
|
|
51
|
-
const accountId2Encode = publicKey
|
|
62
|
+
const accountId2Encode = publicKey
|
|
63
|
+
? TYPE_ADDRESS[scheme](accountId)
|
|
64
|
+
: accountId;
|
|
52
65
|
const keyring = new api_1.Keyring({ type: scheme, ss58Format: ss58Prefix });
|
|
53
66
|
const address = keyring.encodeAddress(accountId2Encode, ss58Prefix);
|
|
54
67
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountsConvertService.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsConvertService.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAExE,uCAAwC;AACxC,yCAAuC;AACvC,
|
|
1
|
+
{"version":3,"file":"AccountsConvertService.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsConvertService.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAExE,uCAAwC;AACxC,yCAAuC;AACvC,yCAA0C;AAC1C,uDAAiE;AACjE,6CAAyC;AAGzC,wDAAqD;AAErD;;;;;GAKG;AACH,MAAM,YAAY,GAAG;IACpB,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAA,eAAQ,EAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAA,yBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;CACzB,CAAC;AAEF,MAAa,sBAAuB,SAAQ,iCAAe;IAC1D;;;;;;;;;OASG;IACI,cAAc,CACpB,SAAiB,EACjB,MAAuC,EACvC,UAAkB,EAClB,SAAkB;QAElB,MAAM,cAAc,GAAG,IAAA,YAAK,EAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,EAAE;YACpB,MAAM,IAAI,wBAAU,CACnB,8DAA8D,CAC9D,CAAC;SACF;QACD,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,aAAa,IAAI,yBAAW,EAAE;YACxC,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE;gBAC3C,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;gBACnC,MAAM;aACN;SACD;QACD,IAAI,OAAO,KAAK,IAAI,EAAE;YACrB,MAAM,IAAI,wBAAU,CACnB,gFAAgF,CAChF,CAAC;SACF;QAED,MAAM,gBAAgB,GAAG,SAAS;YACjC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;YACjC,CAAC,CAAC,SAAS,CAAC;QAEb,MAAM,OAAO,GAAG,IAAI,aAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAEpE,OAAO;YACN,UAAU;YACV,OAAO;YACP,OAAO;YACP,SAAS;YACT,MAAM;YACN,SAAS;SACT,CAAC;IACH,CAAC;CACD;AApDD,wDAoDC"}
|
|
@@ -99,6 +99,20 @@ describe('Convert accounts', () => {
|
|
|
99
99
|
const polkadotPublicKey = '0x026e42c81603c7eaa2bdc40115306f05c94b563ff9e92120e8ea3480fec939e2e9';
|
|
100
100
|
expect((0, sanitize_1.sanitizeNumbers)(validateService.accountConvert(polkadotPublicKey, 'ecdsa', 0, false))).toStrictEqual(expectedResponse);
|
|
101
101
|
});
|
|
102
|
+
// This ensures the behaviour of the endpoint correctly converts a kusama publicKey given
|
|
103
|
+
// the following input. See PR: https://github.com/paritytech/substrate-api-sidecar/pull/1280
|
|
104
|
+
it('Should convert a valid Kusama publicKey when `publicKey` equals `true`', () => {
|
|
105
|
+
const expectedResponse = {
|
|
106
|
+
accountId: '0x96074594cccf1cd185fa8a72ceaeefd86648f8d45514f3ce33c31bdd07e4655d',
|
|
107
|
+
address: 'Fy2rsYCoowQBtuFXqLE65ehAY9T6KWcGiNCQAyPDCkfpm4s',
|
|
108
|
+
network: 'kusama',
|
|
109
|
+
publicKey: true,
|
|
110
|
+
scheme: 'sr25519',
|
|
111
|
+
ss58Prefix: '2',
|
|
112
|
+
};
|
|
113
|
+
const kusamaPublicKey = '0x96074594cccf1cd185fa8a72ceaeefd86648f8d45514f3ce33c31bdd07e4655d';
|
|
114
|
+
expect((0, sanitize_1.sanitizeNumbers)(validateService.accountConvert(kusamaPublicKey, 'sr25519', 2, true))).toStrictEqual(expectedResponse);
|
|
115
|
+
});
|
|
102
116
|
// We try to convert a Polkadot AccountId to an SS58 Address by setting the publicKey=true
|
|
103
117
|
// which is not correct and that is why in the response we have an invalid address.
|
|
104
118
|
// If we would like to convert it correctly and have the expected SS58 address
|
|
@@ -107,7 +121,7 @@ describe('Convert accounts', () => {
|
|
|
107
121
|
const expectedResponse = {
|
|
108
122
|
ss58Prefix: '0',
|
|
109
123
|
network: 'polkadot',
|
|
110
|
-
address: '
|
|
124
|
+
address: '1rsCBWhPgyDETNS9yxnANSnm3KAtkxm4mu9jjfMhDF6xaV8',
|
|
111
125
|
accountId: '0x2607fd20388303bd409e551202ee47b753b4382feac914e9f7ab0d4f728c2bf7',
|
|
112
126
|
scheme: 'ecdsa',
|
|
113
127
|
publicKey: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccountsConvertService.spec.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsConvertService.spec.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;AAIxE,6CAAiD;AACjD,+CAAsD;AACtD,qEAAkE;AAElE,MAAM,OAAO,GAAG;IACf,GAAG,qBAAc;CACQ,CAAC;AAC3B,MAAM,eAAe,GAAG,IAAI,+CAAsB,CAAC,OAAO,CAAC,CAAC;AAE5D,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,sFAAsF,EAAE,GAAG,EAAE;QAC/F,MAAM,gBAAgB,GAAG;YACxB,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,kDAAkD;YAC3D,SAAS,EACR,oEAAoE;YACrE,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,kBAAkB,GACvB,oEAAoE,CAAC;QAEtE,MAAM,CACL,IAAA,0BAAe,EACd,eAAe,CAAC,cAAc,CAAC,kBAAkB,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CACtE,CACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;QAC9F,MAAM,gBAAgB,GAAG;YACxB,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,iDAAiD;YAC1D,SAAS,EACR,oEAAoE;YACrE,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,cAAc,GACnB,oEAAoE,CAAC;QAEtE,MAAM,CACL,IAAA,0BAAe,EACd,eAAe,CAAC,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CACnE,CACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;QAC9F,MAAM,gBAAgB,GAAG;YACxB,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,kDAAkD;YAC3D,SAAS,EACR,oEAAoE;YACrE,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,cAAc,GACnB,oEAAoE,CAAC;QAEtE,MAAM,CACL,IAAA,0BAAe,EACd,eAAe,CAAC,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,CACpE,CACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACpE,MAAM,gBAAgB,GAAG;YACxB,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,iDAAiD;YAC1D,SAAS,EACR,oEAAoE;YACrE,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,cAAc,GACnB,oEAAoE,CAAC;QAEtE,MAAM,CACL,IAAA,0BAAe,EACd,eAAe,CAAC,cAAc,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CACnE,CACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,8DAA8D;IAC9D,EAAE,CAAC,oGAAoG,EAAE,GAAG,EAAE;QAC7G,MAAM,gBAAgB,GAAG;YACxB,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,iDAAiD;YAC1D,SAAS,EACR,sEAAsE;YACvE,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,IAAI;SACf,CAAC;QACF,MAAM,iBAAiB,GACtB,sEAAsE,CAAC;QAExE,MAAM,CACL,IAAA,0BAAe,EACd,eAAe,CAAC,cAAc,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,CACnE,CACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,gFAAgF;IAChF,wFAAwF;IACxF,EAAE,CAAC,yGAAyG,EAAE,GAAG,EAAE;QAClH,MAAM,gBAAgB,GAAG;YACxB,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,kDAAkD;YAC3D,SAAS,EACR,sEAAsE;YACvE,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,iBAAiB,GACtB,sEAAsE,CAAC;QAExE,MAAM,CACL,IAAA,0BAAe,EACd,eAAe,CAAC,cAAc,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CACpE,CACD,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,0FAA0F;IAC1F,mFAAmF;IACnF,8EAA8E;IAC9E,0CAA0C;IAC1C,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;QAChG,MAAM,gBAAgB,GAAG;YACxB,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,UAAU;YACnB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"AccountsConvertService.spec.js","sourceRoot":"","sources":["../../../../src/services/accounts/AccountsConvertService.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import client from 'prom-client';
|
|
2
|
+
export declare const httpErrorCounter: client.Counter<string>;
|
|
3
|
+
interface IAppConfiguration {
|
|
4
|
+
port: number;
|
|
5
|
+
host: string;
|
|
6
|
+
}
|
|
7
|
+
export default class Metrics_App {
|
|
8
|
+
private app;
|
|
9
|
+
private readonly port;
|
|
10
|
+
private readonly host;
|
|
11
|
+
/**
|
|
12
|
+
* @param appConfig configuration for app.
|
|
13
|
+
*/
|
|
14
|
+
constructor({ host }: IAppConfiguration);
|
|
15
|
+
listen(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Mount the metrics endpoint.
|
|
18
|
+
*/
|
|
19
|
+
private metricsEndpoint;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.httpErrorCounter = void 0;
|
|
7
|
+
const express_1 = __importDefault(require("express"));
|
|
8
|
+
const prom_client_1 = __importDefault(require("prom-client"));
|
|
9
|
+
const Log_1 = require("../logging/Log");
|
|
10
|
+
const parseArgs_1 = require("../parseArgs");
|
|
11
|
+
exports.httpErrorCounter = new prom_client_1.default.Counter({
|
|
12
|
+
name: 'sas_http_errors',
|
|
13
|
+
help: 'Number of HTTP Errors',
|
|
14
|
+
});
|
|
15
|
+
class Metrics_App {
|
|
16
|
+
/**
|
|
17
|
+
* @param appConfig configuration for app.
|
|
18
|
+
*/
|
|
19
|
+
constructor({ host }) {
|
|
20
|
+
const args = (0, parseArgs_1.parseArgs)();
|
|
21
|
+
this.port = Number(args.prometheus_port);
|
|
22
|
+
this.app = (0, express_1.default)();
|
|
23
|
+
this.host = host;
|
|
24
|
+
this.metricsEndpoint();
|
|
25
|
+
}
|
|
26
|
+
listen() {
|
|
27
|
+
const { logger } = Log_1.Log;
|
|
28
|
+
this.app.listen(this.port, this.host, () => {
|
|
29
|
+
logger.info(`Metrics Server started at http://${this.host}:${this.port}/`);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Mount the metrics endpoint.
|
|
34
|
+
*/
|
|
35
|
+
metricsEndpoint() {
|
|
36
|
+
const register = new prom_client_1.default.Registry();
|
|
37
|
+
register.registerMetric(exports.httpErrorCounter);
|
|
38
|
+
prom_client_1.default.collectDefaultMetrics({ register, prefix: 'sas_' });
|
|
39
|
+
// Set up the metrics endpoint
|
|
40
|
+
this.app.get('/metrics', (_req, res) => {
|
|
41
|
+
void (async () => {
|
|
42
|
+
res.set('Content-Type', register.contentType);
|
|
43
|
+
res.send(await register.metrics());
|
|
44
|
+
})();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.default = Metrics_App;
|
|
49
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/util/metrics.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAE9B,8DAAiC;AAEjC,wCAAqC;AACrC,4CAAyC;AAE5B,QAAA,gBAAgB,GAAG,IAAI,qBAAM,CAAC,OAAO,CAAC;IAClD,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,uBAAuB;CAC7B,CAAC,CAAC;AAOH,MAAqB,WAAW;IAK/B;;OAEG;IACH,YAAY,EAAE,IAAI,EAAqB;QACtC,MAAM,IAAI,GAAG,IAAA,qBAAS,GAAE,CAAC;QAEzB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAED,MAAM;QACL,MAAM,EAAE,MAAM,EAAE,GAAG,SAAG,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,IAAI,CACV,oCAAoC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAC7D,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe;QACtB,MAAM,QAAQ,GAAG,IAAI,qBAAM,CAAC,QAAQ,EAAE,CAAC;QACvC,QAAQ,CAAC,cAAc,CAAC,wBAAgB,CAAC,CAAC;QAC1C,qBAAM,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,8BAA8B;QAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;YACzD,KAAK,CAAC,KAAK,IAAI,EAAE;gBAChB,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAC9C,GAAG,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YACpC,CAAC,CAAC,EAAE,CAAC;QACN,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AA1CD,8BA0CC"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "17.
|
|
2
|
+
"version": "17.1.1",
|
|
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",
|
|
@@ -42,17 +42,17 @@
|
|
|
42
42
|
"start:latest-e2e-scripts": "yarn build:scripts && node scripts/build/runLatestE2eTests.js",
|
|
43
43
|
"start:historical-e2e-tests": "yarn build:e2e-tests && node ./e2e-tests/build/historical/historical.js --config=./e2e-tests/jest.config.js",
|
|
44
44
|
"start:historical-e2e-scripts": "yarn build:scripts && node scripts/build/runHistoricalE2eTests.js",
|
|
45
|
-
"test": "NODE_ENV=test substrate-exec-jest
|
|
45
|
+
"test": "NODE_ENV=test substrate-exec-jest",
|
|
46
46
|
"test:watch": "NODE_ENV=test substrate-exec-jest --watch",
|
|
47
|
-
"test:ci": "NODE_ENV=test substrate-exec-jest
|
|
47
|
+
"test:ci": "NODE_ENV=test substrate-exec-jest",
|
|
48
48
|
"test:latest-e2e-tests": "yarn start:latest-e2e-scripts",
|
|
49
49
|
"test:historical-e2e-tests": "yarn start:historical-e2e-scripts",
|
|
50
50
|
"test:test-release": "yarn build:scripts && node scripts/build/runYarnPack.js"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@polkadot/api": "^10.
|
|
54
|
-
"@polkadot/api-contract": "^10.
|
|
55
|
-
"@polkadot/util-crypto": "^12.2
|
|
53
|
+
"@polkadot/api": "^10.9.1",
|
|
54
|
+
"@polkadot/api-contract": "^10.9.1",
|
|
55
|
+
"@polkadot/util-crypto": "^12.3.2",
|
|
56
56
|
"@substrate/calc": "^0.3.1",
|
|
57
57
|
"argparse": "^2.0.1",
|
|
58
58
|
"confmgr": "^1.0.10",
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"express-winston": "^4.2.0",
|
|
61
61
|
"http-errors": "^2.0.0",
|
|
62
62
|
"lru-cache": "^7.13.1",
|
|
63
|
+
"prom-client": "^14.2.0",
|
|
63
64
|
"rxjs": "^7.5.6",
|
|
64
65
|
"winston": "^3.8.1"
|
|
65
66
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"statemineControllers.js","sourceRoot":"","sources":["../../../src/chains-config/statemineControllers.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAGxE,mCAA6D;AAE7D;;GAEG;AACU,QAAA,oBAAoB,GAAqB;IACrD,WAAW,EAAE;QACZ,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB;QAClB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,eAAe;QACf,eAAe;QACf,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,oBAAY,GAAE;QAC1B,cAAc,EAAE,IAAI,4BAAoB,CAAC,IAAI,EAAE,IAAI,CAAC;KACpD;CACD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"statemintControllers.js","sourceRoot":"","sources":["../../../src/chains-config/statemintControllers.ts"],"names":[],"mappings":";AAAA,oDAAoD;AACpD,8CAA8C;AAC9C,EAAE;AACF,gFAAgF;AAChF,uEAAuE;AACvE,oEAAoE;AACpE,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,iEAAiE;AACjE,gEAAgE;AAChE,+CAA+C;AAC/C,EAAE;AACF,oEAAoE;AACpE,wEAAwE;;;AAGxE,mCAA6D;AAE7D;;GAEG;AACU,QAAA,oBAAoB,GAAqB;IACrD,WAAW,EAAE;QACZ,gBAAgB;QAChB,qBAAqB;QACrB,kBAAkB;QAClB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,sBAAsB;QACtB,eAAe;QACf,eAAe;QACf,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,oBAAY,GAAE;QAC1B,cAAc,EAAE,IAAI,4BAAoB,CAAC,IAAI,EAAE,IAAI,CAAC;KACpD;CACD,CAAC"}
|