@substrate/api-sidecar 19.0.2 → 19.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +41 -15
  2. package/build/package.json +11 -10
  3. package/build/src/SidecarConfig.js +9 -1
  4. package/build/src/SidecarConfig.js.map +1 -1
  5. package/build/src/Specs.d.ts +1 -0
  6. package/build/src/Specs.js +34 -1
  7. package/build/src/Specs.js.map +1 -1
  8. package/build/src/chains-config/defaultControllers.js +2 -1
  9. package/build/src/chains-config/defaultControllers.js.map +1 -1
  10. package/build/src/chains-config/kusamaControllers.js +2 -1
  11. package/build/src/chains-config/kusamaControllers.js.map +1 -1
  12. package/build/src/chains-config/polkadotControllers.js +2 -1
  13. package/build/src/chains-config/polkadotControllers.js.map +1 -1
  14. package/build/src/controllers/AbstractController.js.map +1 -1
  15. package/build/src/controllers/blocks/BlocksController.d.ts +2 -0
  16. package/build/src/controllers/blocks/BlocksController.js +87 -8
  17. package/build/src/controllers/blocks/BlocksController.js.map +1 -1
  18. package/build/src/controllers/blocks/BlocksExtrinsicsController.d.ts +1 -0
  19. package/build/src/controllers/blocks/BlocksExtrinsicsController.js +13 -2
  20. package/build/src/controllers/blocks/BlocksExtrinsicsController.js.map +1 -1
  21. package/build/src/controllers/blocks/BlocksRawExtrinsicsController.js +12 -3
  22. package/build/src/controllers/blocks/BlocksRawExtrinsicsController.js.map +1 -1
  23. package/build/src/controllers/index.d.ts +2 -1
  24. package/build/src/controllers/index.js +2 -1
  25. package/build/src/controllers/index.js.map +1 -1
  26. package/build/src/controllers/pallets/PalletsOnGoingReferendaController.d.ts +14 -0
  27. package/build/src/controllers/pallets/PalletsOnGoingReferendaController.js +43 -0
  28. package/build/src/controllers/pallets/PalletsOnGoingReferendaController.js.map +1 -0
  29. package/build/src/controllers/pallets/index.d.ts +1 -0
  30. package/build/src/controllers/pallets/index.js +4 -2
  31. package/build/src/controllers/pallets/index.js.map +1 -1
  32. package/build/src/logging/Log.js +11 -0
  33. package/build/src/logging/Log.js.map +1 -1
  34. package/build/src/main.js +14 -11
  35. package/build/src/main.js.map +1 -1
  36. package/build/src/metrics/Metrics.d.ts +31 -0
  37. package/build/src/metrics/Metrics.js +175 -0
  38. package/build/src/metrics/Metrics.js.map +1 -0
  39. package/build/src/metrics/config.d.ts +2 -0
  40. package/build/src/metrics/config.js +71 -0
  41. package/build/src/metrics/config.js.map +1 -0
  42. package/build/src/metrics/index.d.ts +2 -0
  43. package/build/src/metrics/index.js +33 -0
  44. package/build/src/metrics/index.js.map +1 -0
  45. package/build/src/middleware/error/httpErrorMiddleware.js +0 -6
  46. package/build/src/middleware/error/httpErrorMiddleware.js.map +1 -1
  47. package/build/src/parseArgs.js +0 -9
  48. package/build/src/parseArgs.js.map +1 -1
  49. package/build/src/services/accounts/AccountsAssetsService.js +1 -2
  50. package/build/src/services/accounts/AccountsAssetsService.js.map +1 -1
  51. package/build/src/services/accounts/AccountsPoolAssetsService.js +1 -2
  52. package/build/src/services/accounts/AccountsPoolAssetsService.js.map +1 -1
  53. package/build/src/services/accounts/AccountsStakingPayoutsService.js +4 -2
  54. package/build/src/services/accounts/AccountsStakingPayoutsService.js.map +1 -1
  55. package/build/src/services/blocks/BlocksService.d.ts +1 -3
  56. package/build/src/services/blocks/BlocksService.js +16 -26
  57. package/build/src/services/blocks/BlocksService.js.map +1 -1
  58. package/build/src/services/blocks/BlocksService.spec.js +6 -67
  59. package/build/src/services/blocks/BlocksService.spec.js.map +1 -1
  60. package/build/src/services/pallets/PalletsOnGoingReferendaService.d.ts +12 -0
  61. package/build/src/services/pallets/PalletsOnGoingReferendaService.js +53 -0
  62. package/build/src/services/pallets/PalletsOnGoingReferendaService.js.map +1 -0
  63. package/build/src/services/pallets/PalletsOnGoingReferendaService.spec.d.ts +1 -0
  64. package/build/src/services/pallets/PalletsOnGoingReferendaService.spec.js +77 -0
  65. package/build/src/services/pallets/PalletsOnGoingReferendaService.spec.js.map +1 -0
  66. package/build/src/services/pallets/PalletsStakingProgressService.js +3 -3
  67. package/build/src/services/pallets/PalletsStakingProgressService.js.map +1 -1
  68. package/build/src/services/pallets/index.d.ts +1 -0
  69. package/build/src/services/pallets/index.js +2 -1
  70. package/build/src/services/pallets/index.js.map +1 -1
  71. package/build/src/types/metrics/index.d.ts +13 -0
  72. package/build/src/types/metrics/index.js +3 -0
  73. package/build/src/types/metrics/index.js.map +1 -0
  74. package/build/src/types/requests.d.ts +17 -0
  75. package/build/src/types/responses/PalletOnGoingReferenda.d.ts +14 -0
  76. package/build/src/types/responses/PalletOnGoingReferenda.js +18 -0
  77. package/build/src/types/responses/PalletOnGoingReferenda.js.map +1 -0
  78. package/build/src/types/responses/index.d.ts +1 -0
  79. package/build/src/types/responses/index.js +2 -1
  80. package/build/src/types/responses/index.js.map +1 -1
  81. package/build/src/types/sidecar-config/CONFIG.d.ts +7 -1
  82. package/build/src/types/sidecar-config/CONFIG.js +6 -0
  83. package/build/src/types/sidecar-config/CONFIG.js.map +1 -1
  84. package/build/src/types/sidecar-config/MODULES.d.ts +2 -1
  85. package/build/src/types/sidecar-config/MODULES.js +1 -0
  86. package/build/src/types/sidecar-config/MODULES.js.map +1 -1
  87. package/build/src/types/sidecar-config/SidecarConfig.d.ts +9 -0
  88. package/package.json +11 -10
  89. package/build/src/util/metrics.d.ts +0 -21
  90. package/build/src/util/metrics.js +0 -49
  91. package/build/src/util/metrics.js.map +0 -1
package/README.md CHANGED
@@ -21,11 +21,6 @@
21
21
 
22
22
  <br /><br />
23
23
 
24
- ## Note
25
-
26
- v1.0.0 was released on 2020-10-23. This major release introduced several renamed endpoints as breaking changes. It is important that users complete the transition to the new endpoints ASAP so they are ready for any subsequent emergency updates. Please visit the [MIGRATION_GUIDE](./guides/MIGRATION_GUIDE.md) to
27
- learn more.
28
-
29
24
  ## Prerequisites
30
25
 
31
26
  ### <= v15.0.0
@@ -175,6 +170,14 @@ For more information on our configuration manager visit its readme [here](https:
175
170
  - `SAS_SUBSTRATE_URL`: URL to which the RPC proxy will attempt to connect to, defaults to
176
171
  `ws://127.0.0.1:9944`. Accepts both a websocket, and http URL.
177
172
 
173
+ ### Metrics Server
174
+
175
+ - `SAS_METRICS_ENABLED`: Boolean to enable the metrics server instance with Prometheus (server metrics) and Loki (logging) connections. Defaults to false.
176
+ - `SAS_METRICS_PROM_HOST`: The host of the prometheus server used to listen to metrics emitted, defaults to `127.0.0.1`.
177
+ - `SAS_METRICS_PROM_PORT`: The port of the prometheus server, defaults to `9100`.
178
+ - `SAS_METRICS_LOKI_HOST`: The host of the loki server used to pull the logs, defaults to `127.0.0.1`.
179
+ - `SAS_METRICS_LOKI_PORT`: The port of the loki server, defaults to `3100`
180
+
178
181
  #### Custom substrate types
179
182
 
180
183
  Some chains require custom type definitions in order for Sidecar to know how to decode the data
@@ -244,24 +247,44 @@ file you can `symlink` it with `.env.test`. For example you could run
244
247
  commands `ln` and `unlink` for more info.)
245
248
 
246
249
  ### Prometheus server
247
- Prometheus metrics can be enabled by running sidecar with the following flag :
248
-
249
- ```bash
250
- yarn start --prometheus
251
- ```
252
250
 
253
- You can also define a custom port by running :
251
+ Prometheus metrics can be enabled by running sidecar with the following env configuration: `SAS_METRICS_ENABLED`=true
254
252
 
255
- ```bash
256
- yarn start --prometheus --prometheus-port=<YOUR_CUSTOM_PORT>
257
- ```
253
+ You can also expand the metrics tracking capabilities to include query params by adding to the env configuration: `SAS_METRICS_INCLUDE_QUERYPARAMS`=true
258
254
 
259
255
  The metrics endpoint can then be accessed :
260
256
  - on the default port : `http://127.0.0.1:9100/metrics` or
261
257
  - on your custom port if you defined one : `http://127.0.0.1:<YOUR_CUSTOM_PORT>/metrics`
262
258
 
263
- 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.
259
+ A JSON format response is available at `http://127.0.0.1:9100/metrics.json`.
260
+
261
+ That way you will have access to the default prometheus node instance metrics and the following metrics will be emitted for each route:
264
262
 
263
+ - `sas_http_request_error`: type counter and tracks http errors occuring in sidecar
264
+ - `sas_http_request_success`: type counter and tracks successfull http requests
265
+ - `sas_http_requests`: type counter and tracks all http requests
266
+ - `sas_request_duration_seconds`: type histogram and tracks the latency of the requests
267
+ - `sas_response_size_bytes_seconds`: type histogram and tracks the response size of the requests
268
+ - `sas_response_size_latency_ratio_seconds`: type histogram and tracks the response bytes per second of the requests
269
+
270
+ The blocks controller also includes the following route-specific metrics:
271
+
272
+ - `sas_extrinsics_in_request`: type histogram and tracks the number of extrinsics returned in the request when a range of blocks is queried
273
+ - `sas_extrinsics_per_second`: type histogram and tracks the returned extrinics per second
274
+ - `sas_extrinsics_per_block`: type histogram and tracks the returned extrinsics per block
275
+ - `sas_seconds_per_block`: type histogram and tracks the request time per block
276
+
277
+ The metrics registry is injected in the Response object when the `SAS_METRICS_ENABLED` flag is set to `true` in the `.env` file, allowing to extend the controller based metrics to any given controller from within the controller functions.
278
+
279
+ To successfully run and access the metrics and logs in Grafana (for example) the following are required:
280
+
281
+ - prometheus server (info [here](https://prometheus.io/docs/prometheus/latest/getting_started/))
282
+ - loki server and promtail (info [here](https://grafana.com/docs/loki/latest/setup/install/))
283
+
284
+ For mac users using homebrew:
285
+ ```bash
286
+ brew install prometheus loki promtail
287
+ ```
265
288
 
266
289
  ## Debugging fee and staking payout calculations
267
290
 
@@ -352,6 +375,9 @@ All the commits in this repo follow the [Conventional Commits spec](https://www.
352
375
 
353
376
  1. Follow [RELEASE.md](./RELEASE.md) next if you're working through a full sidecar release. This will involve creating a separate PR where the changelog and versions are bumped.
354
377
 
378
+ ### Maintenance Guide
379
+ A more complete list of the maintainer's tasks can be found in the [MAINTENANCE.md](./guides/MAINTENANCE.md) guide.
380
+
355
381
  ## Hardware requirements
356
382
 
357
383
  ### Disk Space
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "19.0.2",
2
+ "version": "19.2.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",
@@ -50,25 +50,26 @@
50
50
  "test:test-release": "yarn build:scripts && node scripts/build/runYarnPack.js"
51
51
  },
52
52
  "dependencies": {
53
- "@polkadot/api": "^12.0.1",
54
- "@polkadot/api-contract": "^12.0.1",
55
- "@polkadot/util-crypto": "^12.6.2",
53
+ "@polkadot/api": "^13.2.1",
54
+ "@polkadot/api-contract": "^13.2.1",
55
+ "@polkadot/util-crypto": "^13.1.1",
56
56
  "@substrate/calc": "^0.3.1",
57
57
  "argparse": "^2.0.1",
58
- "confmgr": "^1.0.10",
59
- "express": "^4.19.2",
58
+ "confmgr": "^1.1.0",
59
+ "express": "^4.21.0",
60
60
  "express-winston": "^4.2.0",
61
61
  "http-errors": "^2.0.0",
62
- "lru-cache": "^10.2.2",
63
- "prom-client": "^15.1.2",
62
+ "lru-cache": "^11.0.1",
63
+ "prom-client": "^15.1.3",
64
64
  "rxjs": "^7.8.1",
65
- "winston": "^3.13.0"
65
+ "winston": "^3.14.2",
66
+ "winston-loki": "^6.1.2"
66
67
  },
67
68
  "devDependencies": {
68
69
  "@substrate/dev": "^0.7.1",
69
70
  "@types/argparse": "2.0.16",
70
71
  "@types/express": "^4.17.21",
71
- "@types/express-serve-static-core": "^4.19.1",
72
+ "@types/express-serve-static-core": "^4.19.5",
72
73
  "@types/http-errors": "2.0.4",
73
74
  "@types/lru-cache": "^7.10.10",
74
75
  "@types/morgan": "1.9.9",
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2017-2022 Parity Technologies (UK) Ltd.
2
+ // Copyright 2017-2024 Parity Technologies (UK) Ltd.
3
3
  // This file is part of Substrate API Sidecar.
4
4
  //
5
5
  // Substrate API Sidecar is free software: you can redistribute it and/or modify
@@ -69,6 +69,14 @@ class SidecarConfig {
69
69
  WRITE_MAX_FILE_SIZE: config.Get(sidecar_config_1.MODULES.LOG, sidecar_config_1.CONFIG.WRITE_MAX_FILE_SIZE),
70
70
  WRITE_MAX_FILES: config.Get(sidecar_config_1.MODULES.LOG, sidecar_config_1.CONFIG.WRITE_MAX_FILES),
71
71
  },
72
+ METRICS: {
73
+ ENABLED: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.ENABLED),
74
+ PROM_HOST: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.PROM_HOST),
75
+ PROM_PORT: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.PROM_PORT),
76
+ LOKI_HOST: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.LOKI_HOST),
77
+ LOKI_PORT: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.LOKI_PORT),
78
+ INCLUDE_QUERYPARAMS: config.Get(sidecar_config_1.MODULES.METRICS, sidecar_config_1.CONFIG.INCLUDE_QUERYPARAMS),
79
+ },
72
80
  };
73
81
  return this._config;
74
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SidecarConfig.js","sourceRoot":"","sources":["../../src/SidecarConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SidecarConfig.js","sourceRoot":"","sources":["../../src/SidecarConfig.ts"],"names":[],"mappings":"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"}
@@ -22,4 +22,5 @@ export declare class Specs {
22
22
  * LOG module of the enviroment variable configuration specification.
23
23
  */
24
24
  private static appendLogSpecs;
25
+ private static appendMetricsSpecs;
25
26
  }
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2017-2022 Parity Technologies (UK) Ltd.
2
+ // Copyright 2017-2024 Parity Technologies (UK) Ltd.
3
3
  // This file is part of Substrate API Sidecar.
4
4
  //
5
5
  // Substrate API Sidecar is free software: you can redistribute it and/or modify
@@ -29,6 +29,7 @@ class Specs {
29
29
  this.appendLogSpecs();
30
30
  this.appendSubstrateSpecs();
31
31
  this.appendExpressSpecs();
32
+ this.appendMetricsSpecs();
32
33
  return this._specs;
33
34
  }
34
35
  /**
@@ -152,6 +153,38 @@ class Specs {
152
153
  mandatory: false,
153
154
  }));
154
155
  }
156
+ static appendMetricsSpecs() {
157
+ if (!this._specs) {
158
+ throw APPEND_SPEC_ERROR;
159
+ }
160
+ this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.ENABLED, 'Whether or not to enable metrics', {
161
+ default: 'false',
162
+ type: 'boolean',
163
+ regexp: /^true|false$/,
164
+ }));
165
+ this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.PROM_HOST, 'Prometheus host', {
166
+ default: '127.0.0.1',
167
+ type: 'string',
168
+ }));
169
+ this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.PROM_PORT, 'Prometheus port', {
170
+ default: 9100,
171
+ type: 'number',
172
+ regexp: /^\d{2,6}$/,
173
+ }));
174
+ this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.LOKI_HOST, 'Loki host', {
175
+ default: '127.0.0.1',
176
+ type: 'string',
177
+ }));
178
+ this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.LOKI_PORT, 'Loki port', {
179
+ default: 3100,
180
+ type: 'number',
181
+ }));
182
+ this._specs.appendSpec(sidecar_config_1.MODULES.METRICS, this._specs.getSpec(sidecar_config_1.CONFIG.INCLUDE_QUERYPARAMS, 'Include query params in the labels of the metrics', {
183
+ default: 'false',
184
+ type: 'boolean',
185
+ regexp: /^true|false$/,
186
+ }));
187
+ }
155
188
  }
156
189
  exports.Specs = Specs;
157
190
  //# sourceMappingURL=Specs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Specs.js","sourceRoot":"","sources":["../../src/Specs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Specs.js","sourceRoot":"","sources":["../../src/Specs.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2017-2022 Parity Technologies (UK) Ltd.
2
+ // Copyright 2017-2024 Parity Technologies (UK) Ltd.
3
3
  // This file is part of Substrate API Sidecar.
4
4
  //
5
5
  // Substrate API Sidecar is free software: you can redistribute it and/or modify
@@ -43,6 +43,7 @@ exports.defaultControllers = {
43
43
  'PalletsErrors',
44
44
  'PalletsEvents',
45
45
  'PalletsForeignAssets',
46
+ 'PalletsOnGoingReferenda',
46
47
  'PalletsStakingProgress',
47
48
  'PalletsStorage',
48
49
  'Paras',
@@ -1 +1 @@
1
- {"version":3,"file":"defaultControllers.js","sourceRoot":"","sources":["../../../src/chains-config/defaultControllers.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;;;GAGG;AACU,QAAA,kBAAkB,GAAqB;IACnD,WAAW,EAAE;QACZ,gBAAgB;QAChB,qBAAqB;QACrB,mBAAmB;QACnB,qBAAqB;QACrB,wBAAwB;QACxB,kBAAkB;QAClB,qBAAqB;QACrB,QAAQ;QACR,kBAAkB;QAClB,qBAAqB;QACrB,cAAc;QACd,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,sBAAsB;QACtB,eAAe;QACf,eAAe;QACf,eAAe;QACf,sBAAsB;QACtB,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,IAAI;QACvB,UAAU,EAAE,IAAA,oBAAY,GAAE;QAC1B,cAAc,EAAE,IAAI,4BAAoB,CAAC,IAAI,EAAE,IAAI,CAAC;KACpD;CACD,CAAC"}
1
+ {"version":3,"file":"defaultControllers.js","sourceRoot":"","sources":["../../../src/chains-config/defaultControllers.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;;;GAGG;AACU,QAAA,kBAAkB,GAAqB;IACnD,WAAW,EAAE;QACZ,gBAAgB;QAChB,qBAAqB;QACrB,mBAAmB;QACnB,qBAAqB;QACrB,wBAAwB;QACxB,kBAAkB;QAClB,qBAAqB;QACrB,QAAQ;QACR,kBAAkB;QAClB,qBAAqB;QACrB,cAAc;QACd,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,eAAe;QACf,sBAAsB;QACtB,eAAe;QACf,eAAe;QACf,eAAe;QACf,sBAAsB;QACtB,yBAAyB;QACzB,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,IAAI;QACvB,UAAU,EAAE,IAAA,oBAAY,GAAE;QAC1B,cAAc,EAAE,IAAI,4BAAoB,CAAC,IAAI,EAAE,IAAI,CAAC;KACpD;CACD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2017-2022 Parity Technologies (UK) Ltd.
2
+ // Copyright 2017-2024 Parity Technologies (UK) Ltd.
3
3
  // This file is part of Substrate API Sidecar.
4
4
  //
5
5
  // Substrate API Sidecar is free software: you can redistribute it and/or modify
@@ -41,6 +41,7 @@ exports.kusamaControllers = {
41
41
  'PalletsErrors',
42
42
  'PalletsEvents',
43
43
  'PalletsNominationPools',
44
+ 'PalletsOnGoingReferenda',
44
45
  'PalletsStakingProgress',
45
46
  'PalletsStakingValidators',
46
47
  'PalletsStorage',
@@ -1 +1 @@
1
- {"version":3,"file":"kusamaControllers.js","sourceRoot":"","sources":["../../../src/chains-config/kusamaControllers.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,iBAAiB,GAAqB;IAClD,WAAW,EAAE;QACZ,qBAAqB;QACrB,iBAAiB;QACjB,mBAAmB;QACnB,qBAAqB;QACrB,wBAAwB;QACxB,kBAAkB;QAClB,qBAAqB;QACrB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,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,IAAI;QACvB,UAAU,EAAE,IAAA,oBAAY,GAAE;QAC1B,cAAc,EAAE,IAAI,4BAAoB,CAAC,IAAI,EAAE,IAAI,CAAC;KACpD;CACD,CAAC"}
1
+ {"version":3,"file":"kusamaControllers.js","sourceRoot":"","sources":["../../../src/chains-config/kusamaControllers.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,iBAAiB,GAAqB;IAClD,WAAW,EAAE;QACZ,qBAAqB;QACrB,iBAAiB;QACjB,mBAAmB;QACnB,qBAAqB;QACrB,wBAAwB;QACxB,kBAAkB;QAClB,qBAAqB;QACrB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,sBAAsB;QACtB,eAAe;QACf,eAAe;QACf,eAAe;QACf,wBAAwB;QACxB,yBAAyB;QACzB,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,IAAI;QACvB,UAAU,EAAE,IAAA,oBAAY,GAAE;QAC1B,cAAc,EAAE,IAAI,4BAAoB,CAAC,IAAI,EAAE,IAAI,CAAC;KACpD;CACD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2017-2022 Parity Technologies (UK) Ltd.
2
+ // Copyright 2017-2024 Parity Technologies (UK) Ltd.
3
3
  // This file is part of Substrate API Sidecar.
4
4
  //
5
5
  // Substrate API Sidecar is free software: you can redistribute it and/or modify
@@ -41,6 +41,7 @@ exports.polkadotControllers = {
41
41
  'PalletsErrors',
42
42
  'PalletsEvents',
43
43
  'PalletsNominationPools',
44
+ 'PalletsOnGoingReferenda',
44
45
  'PalletsStakingProgress',
45
46
  'PalletsStakingValidators',
46
47
  'PalletsStorage',
@@ -1 +1 @@
1
- {"version":3,"file":"polkadotControllers.js","sourceRoot":"","sources":["../../../src/chains-config/polkadotControllers.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,mBAAmB,GAAqB;IACpD,WAAW,EAAE;QACZ,qBAAqB;QACrB,iBAAiB;QACjB,mBAAmB;QACnB,qBAAqB;QACrB,wBAAwB;QACxB,kBAAkB;QAClB,qBAAqB;QACrB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,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,EAAE,EAAE,EAAE,CAAC;KAChD;CACD,CAAC"}
1
+ {"version":3,"file":"polkadotControllers.js","sourceRoot":"","sources":["../../../src/chains-config/polkadotControllers.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,mBAAmB,GAAqB;IACpD,WAAW,EAAE;QACZ,qBAAqB;QACrB,iBAAiB;QACjB,mBAAmB;QACnB,qBAAqB;QACrB,wBAAwB;QACxB,kBAAkB;QAClB,qBAAqB;QACrB,QAAQ;QACR,kBAAkB;QAClB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,qBAAqB;QACrB,aAAa;QACb,sBAAsB;QACtB,eAAe;QACf,eAAe;QACf,eAAe;QACf,wBAAwB;QACxB,yBAAyB;QACzB,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,EAAE,EAAE,EAAE,CAAC;KAChD;CACD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractController.js","sourceRoot":"","sources":["../../../src/controllers/AbstractController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractController.js","sourceRoot":"","sources":["../../../src/controllers/AbstractController.ts"],"names":[],"mappings":"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"}
@@ -71,8 +71,10 @@ import AbstractController from '../AbstractController';
71
71
  */
72
72
  export default class BlocksController extends AbstractController<BlocksService> {
73
73
  private readonly options;
74
+ private blockStore;
74
75
  constructor(api: ApiPromise, options: ControllerOptions);
75
76
  protected initRoutes(): void;
77
+ private emitExtrinsicMetrics;
76
78
  /**
77
79
  * Get the latest block.
78
80
  *
@@ -93,15 +93,40 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
93
93
  */
94
94
  class BlocksController extends AbstractController_1.default {
95
95
  constructor(api, options) {
96
- super(api, '/blocks', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.blockStore, options.hasQueryFeeApi));
96
+ super(api, '/blocks', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.hasQueryFeeApi));
97
97
  this.options = options;
98
+ this.emitExtrinsicMetrics = (totExtrinsics, totBlocks, method, path, res) => {
99
+ if (res.locals.metrics) {
100
+ const seconds = res.locals.metrics.timer();
101
+ const extrinsics_in_request = res.locals.metrics.registry['sas_extrinsics_in_request'];
102
+ extrinsics_in_request.labels({ method: method, route: path, status_code: res.statusCode }).observe(totExtrinsics);
103
+ const extrinsics_per_second = res.locals.metrics.registry['sas_extrinsics_per_second'];
104
+ extrinsics_per_second
105
+ .labels({ method: method, route: path, status_code: res.statusCode })
106
+ .observe(totExtrinsics / seconds);
107
+ const extrinsicsPerBlockMetrics = res.locals.metrics.registry['sas_extrinsics_per_block'];
108
+ extrinsicsPerBlockMetrics
109
+ .labels({ method: 'GET', route: path, status_code: res.statusCode })
110
+ .observe(totExtrinsics / totBlocks);
111
+ const seconds_per_block = res.locals.metrics.registry['sas_seconds_per_block'];
112
+ seconds_per_block
113
+ .labels({ method: method, route: path, status_code: res.statusCode })
114
+ .observe(seconds / totBlocks);
115
+ if (totBlocks > 1) {
116
+ const seconds_per_block = res.locals.metrics.registry['sas_seconds_per_block'];
117
+ seconds_per_block
118
+ .labels({ method: method, route: path, status_code: res.statusCode })
119
+ .observe(seconds / totBlocks);
120
+ }
121
+ }
122
+ };
98
123
  /**
99
124
  * Get the latest block.
100
125
  *
101
126
  * @param _req Express Request
102
127
  * @param res Express Response
103
128
  */
104
- this.getLatestBlock = async ({ query: { eventDocs, extrinsicDocs, finalized, noFees, decodedXcmMsgs, paraId } }, res) => {
129
+ this.getLatestBlock = async ({ query: { eventDocs, extrinsicDocs, finalized, noFees, decodedXcmMsgs, paraId }, method, route }, res) => {
105
130
  const eventDocsArg = eventDocs === 'true';
106
131
  const extrinsicDocsArg = extrinsicDocs === 'true';
107
132
  let hash, queryFinalizedHead, omitFinalizedTag;
@@ -126,7 +151,7 @@ class BlocksController extends AbstractController_1.default {
126
151
  }
127
152
  const noFeesArg = noFees === 'true';
128
153
  const decodedXcmMsgsArg = decodedXcmMsgs === 'true';
129
- const paraIdArg = paraId !== undefined ? this.parseNumberOrThrow(paraId, 'paraId must be an integer') : undefined;
154
+ const paraIdArg = paraId ? this.parseNumberOrThrow(paraId, 'paraId must be an integer') : undefined;
130
155
  const options = {
131
156
  eventDocs: eventDocsArg,
132
157
  extrinsicDocs: extrinsicDocsArg,
@@ -137,8 +162,28 @@ class BlocksController extends AbstractController_1.default {
137
162
  checkDecodedXcm: decodedXcmMsgsArg,
138
163
  paraId: paraIdArg,
139
164
  };
165
+ // Create a key for the cache that is a concatenation of the block hash and all the query params included in the request
166
+ const cacheKey = hash.toString() +
167
+ Number(options.eventDocs) +
168
+ Number(options.extrinsicDocs) +
169
+ Number(options.checkFinalized) +
170
+ Number(options.noFees) +
171
+ Number(options.checkDecodedXcm) +
172
+ Number(options.paraId);
173
+ const isBlockCached = this.blockStore.get(cacheKey);
174
+ if (isBlockCached) {
175
+ BlocksController.sanitizedSend(res, isBlockCached);
176
+ return;
177
+ }
140
178
  const historicApi = await this.api.at(hash);
141
- BlocksController.sanitizedSend(res, await this.service.fetchBlock(hash, historicApi, options));
179
+ const block = await this.service.fetchBlock(hash, historicApi, options);
180
+ this.blockStore.set(cacheKey, block);
181
+ BlocksController.sanitizedSend(res, block);
182
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
183
+ const path = route.path;
184
+ if (res.locals.metrics) {
185
+ this.emitExtrinsicMetrics(block.extrinsics.length, 1, method, path, res);
186
+ }
142
187
  };
143
188
  /**
144
189
  * Get a block by its hash or number identifier.
@@ -146,7 +191,7 @@ class BlocksController extends AbstractController_1.default {
146
191
  * @param req Express Request
147
192
  * @param res Express Response
148
193
  */
149
- this.getBlockById = async ({ params: { number }, query: { eventDocs, extrinsicDocs, noFees, finalizedKey, decodedXcmMsgs, paraId } }, res) => {
194
+ this.getBlockById = async ({ params: { number }, query: { eventDocs, extrinsicDocs, noFees, finalizedKey, decodedXcmMsgs, paraId }, method, route, }, res) => {
150
195
  const checkFinalized = (0, util_1.isHex)(number);
151
196
  const hash = await this.getHashForBlock(number);
152
197
  const eventDocsArg = eventDocs === 'true';
@@ -159,7 +204,7 @@ class BlocksController extends AbstractController_1.default {
159
204
  omitFinalizedTag = true;
160
205
  }
161
206
  const decodedXcmMsgsArg = decodedXcmMsgs === 'true';
162
- const paraIdArg = paraId !== undefined ? this.parseNumberOrThrow(paraId, 'paraId must be an integer') : undefined;
207
+ const paraIdArg = paraId ? this.parseNumberOrThrow(paraId, 'paraId must be an integer') : undefined;
163
208
  const options = {
164
209
  eventDocs: eventDocsArg,
165
210
  extrinsicDocs: extrinsicDocsArg,
@@ -170,10 +215,30 @@ class BlocksController extends AbstractController_1.default {
170
215
  checkDecodedXcm: decodedXcmMsgsArg,
171
216
  paraId: paraIdArg,
172
217
  };
218
+ // Create a key for the cache that is a concatenation of the block hash and all the query params included in the request
219
+ const cacheKey = hash.toString() +
220
+ Number(options.eventDocs) +
221
+ Number(options.extrinsicDocs) +
222
+ Number(options.checkFinalized) +
223
+ Number(options.noFees) +
224
+ Number(options.checkDecodedXcm) +
225
+ Number(options.paraId);
226
+ const isBlockCached = this.blockStore.get(cacheKey);
227
+ if (isBlockCached) {
228
+ BlocksController.sanitizedSend(res, isBlockCached);
229
+ return;
230
+ }
173
231
  // HistoricApi to fetch any historic information that doesnt include the current runtime
174
232
  const historicApi = await this.api.at(hash);
233
+ const block = await this.service.fetchBlock(hash, historicApi, options);
234
+ this.blockStore.set(cacheKey, block);
175
235
  // We set the last param to true because we haven't queried the finalizedHead
176
- BlocksController.sanitizedSend(res, await this.service.fetchBlock(hash, historicApi, options));
236
+ BlocksController.sanitizedSend(res, block);
237
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
238
+ const path = route.path;
239
+ if (res.locals.metrics) {
240
+ this.emitExtrinsicMetrics(block.extrinsics.length, 1, method, path, res);
241
+ }
177
242
  };
178
243
  /**
179
244
  * Return the Header of the identified block.
@@ -202,7 +267,7 @@ class BlocksController extends AbstractController_1.default {
202
267
  * @param req Express Request
203
268
  * @param res Express Response
204
269
  */
205
- this.getBlocks = async ({ query: { range, eventDocs, extrinsicDocs, noFees } }, res) => {
270
+ this.getBlocks = async ({ query: { range, eventDocs, extrinsicDocs, noFees }, method, route }, res) => {
206
271
  if (!range)
207
272
  throw new http_errors_1.BadRequest('range query parameter must be inputted.');
208
273
  // We set a max range to 500 blocks.
@@ -236,13 +301,27 @@ class BlocksController extends AbstractController_1.default {
236
301
  blocksPromise.push(result);
237
302
  }
238
303
  const blocks = (await Promise.all(blocksPromise));
304
+ blocksPromise.length = 0;
239
305
  /**
240
306
  * Sort blocks from least to greatest.
241
307
  */
242
308
  blocks.sort((a, b) => a.number.toNumber() - b.number.toNumber());
243
309
  BlocksController.sanitizedSend(res, blocks);
310
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
311
+ const path = route.path;
312
+ if (res.locals.metrics) {
313
+ const totExtrinsics = blocks.reduce((current, block) => {
314
+ const extrinsics = block.extrinsics;
315
+ if (Array.isArray(extrinsics)) {
316
+ return current + extrinsics.length;
317
+ }
318
+ return current;
319
+ }, 0);
320
+ this.emitExtrinsicMetrics(totExtrinsics, blocks.length, method, path, res);
321
+ }
244
322
  };
245
323
  this.initRoutes();
324
+ this.blockStore = options.blockStore;
246
325
  }
247
326
  initRoutes() {
248
327
  this.router.use(this.path, (0, validate_1.validateBoolean)(['eventDocs', 'extrinsicDocs', 'finalized']));
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BlocksController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksController.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { BlocksService } from '../../services';
3
3
  import type { ControllerOptions } from '../../types/chains-config';
4
4
  import AbstractController from '../AbstractController';
5
5
  export default class BlocksExtrinsicsController extends AbstractController<BlocksService> {
6
+ private blockStore;
6
7
  constructor(api: ApiPromise, options: ControllerOptions);
7
8
  protected initRoutes(): void;
8
9
  /**
@@ -22,7 +22,7 @@ const services_1 = require("../../services");
22
22
  const AbstractController_1 = __importDefault(require("../AbstractController"));
23
23
  class BlocksExtrinsicsController extends AbstractController_1.default {
24
24
  constructor(api, options) {
25
- super(api, '/blocks/:blockId/extrinsics', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.blockStore, options.hasQueryFeeApi));
25
+ super(api, '/blocks/:blockId/extrinsics', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.hasQueryFeeApi));
26
26
  /**
27
27
  *
28
28
  * @param _req Express Request
@@ -43,8 +43,18 @@ class BlocksExtrinsicsController extends AbstractController_1.default {
43
43
  checkDecodedXcm: false,
44
44
  paraId: undefined,
45
45
  };
46
+ const cacheKey = hash.toString() +
47
+ Number(options.eventDocs) +
48
+ Number(options.extrinsicDocs) +
49
+ Number(options.checkFinalized) +
50
+ Number(options.noFees) +
51
+ Number(options.checkDecodedXcm);
52
+ const isBlockCached = this.blockStore.get(cacheKey);
46
53
  const historicApi = await this.api.at(hash);
47
- const block = await this.service.fetchBlock(hash, historicApi, options);
54
+ const block = isBlockCached ? isBlockCached : await this.service.fetchBlock(hash, historicApi, options);
55
+ if (!isBlockCached) {
56
+ this.blockStore.set(cacheKey, block);
57
+ }
48
58
  /**
49
59
  * Verify our param `extrinsicIndex` is an integer represented as a string
50
60
  */
@@ -57,6 +67,7 @@ class BlocksExtrinsicsController extends AbstractController_1.default {
57
67
  BlocksExtrinsicsController.sanitizedSend(res, this.service.fetchExtrinsicByIndex(block, index));
58
68
  };
59
69
  this.initRoutes();
70
+ this.blockStore = options.blockStore;
60
71
  }
61
72
  initRoutes() {
62
73
  this.safeMountAsyncGetHandlers([['/:extrinsicIndex', this.getExtrinsicByTimepoint]]);