@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
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksExtrinsicsController.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;;;;;AAKxE,6CAA+C;AAG/C,+EAAuD;AAEvD,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,EAAE,OAAO,CAAC,cAAc,CAAC,CAC7F,CAAC;QAQH;;;;WAIG;QACK,4BAAuB,GAAiC,KAAK,EACpE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EACpF,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;YAClD,MAAM,SAAS,GAAG,MAAM,KAAK,MAAM,CAAC;YAEpC,MAAM,OAAO,GAAG;gBACf,SAAS,EAAE,YAAY;gBACvB,aAAa,EAAE,gBAAgB;gBAC/B,cAAc,EAAE,IAAI;gBACpB,kBAAkB,EAAE,KAAK;gBACzB,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,SAAS;gBACjB,eAAe,EAAE,KAAK;gBACtB,MAAM,EAAE,SAAS;aACjB,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,CAAC,cAAc,EAAE,8CAA8C,CAAC,CAAC;YAExF;;;eAGG;YACH,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAE3C,0BAA0B,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACjG,CAAC,CAAC;QAjDD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;CA6CD;AAzDD,6CAyDC"}
1
+ {"version":3,"file":"BlocksExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksExtrinsicsController.ts"],"names":[],"mappings":"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"}
@@ -22,15 +22,24 @@ const services_1 = require("../../services");
22
22
  const AbstractController_1 = __importDefault(require("../AbstractController"));
23
23
  class BlocksRawExtrinsicsController extends AbstractController_1.default {
24
24
  constructor(api, options) {
25
- super(api, '/blocks/:blockId/extrinsics-raw', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.blockStore, options.hasQueryFeeApi));
25
+ super(api, '/blocks/:blockId/extrinsics-raw', new services_1.BlocksService(api, options.minCalcFeeRuntime, options.hasQueryFeeApi));
26
26
  /**
27
27
  *
28
28
  * @param _req Express Request
29
29
  * @param res Express Response
30
30
  */
31
- this.getBlockRawExtrinsics = async ({ params: { blockId } }, res) => {
31
+ this.getBlockRawExtrinsics = async ({ params: { blockId }, method, route }, res) => {
32
32
  const hash = await this.getHashForBlock(blockId);
33
- BlocksRawExtrinsicsController.sanitizedSend(res, await this.service.fetchBlockRaw(hash));
33
+ const rawBlock = await this.service.fetchBlockRaw(hash);
34
+ BlocksRawExtrinsicsController.sanitizedSend(res, rawBlock);
35
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
36
+ const path = route.path;
37
+ if (res.locals.metrics) {
38
+ const extrinsics_per_block_metrics = res.locals.metrics.registry['sas_extrinsics_per_block'];
39
+ extrinsics_per_block_metrics
40
+ .labels({ method: method, route: path, status_code: res.statusCode })
41
+ .observe(rawBlock.extrinsics.length);
42
+ }
34
43
  };
35
44
  this.initRoutes();
36
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksRawExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksRawExtrinsicsController.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;;;;;AAKxE,6CAA+C;AAG/C,+EAAuD;AAEvD,MAAqB,6BAA8B,SAAQ,4BAAiC;IAC3F,YAAY,GAAe,EAAE,OAA0B;QACtD,KAAK,CACJ,GAAG,EACH,iCAAiC,EACjC,IAAI,wBAAa,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,CAC7F,CAAC;QAQH;;;;WAIG;QACK,0BAAqB,GAAiC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAiB,EAAE;YACnH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YAEjD,6BAA6B,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1F,CAAC,CAAC;QAhBD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;CAYD;AAxBD,gDAwBC"}
1
+ {"version":3,"file":"BlocksRawExtrinsicsController.js","sourceRoot":"","sources":["../../../../src/controllers/blocks/BlocksRawExtrinsicsController.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;;;;;AAKxE,6CAA+C;AAG/C,+EAAuD;AAEvD,MAAqB,6BAA8B,SAAQ,4BAAiC;IAC3F,YAAY,GAAe,EAAE,OAA0B;QACtD,KAAK,CACJ,GAAG,EACH,iCAAiC,EACjC,IAAI,wBAAa,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,cAAc,CAAC,CACzE,CAAC;QAQH;;;;WAIG;QACK,0BAAqB,GAA6C,KAAK,EAC9E,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EACtC,GAAG,EACa,EAAE;YAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACxD,6BAA6B,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAE3D,sEAAsE;YACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;YAElC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE;gBACvB,MAAM,4BAA4B,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAqB,CAAC;gBACjH,4BAA4B;qBAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;qBACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aACtC;QACF,CAAC,CAAC;QA7BD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;CAyBD;AArCD,gDAqCC"}
@@ -2,7 +2,7 @@ import { AccountsAssets, AccountsBalanceInfo, AccountsConvert, AccountsPoolAsset
2
2
  import { Blocks, BlocksExtrinsics, BlocksRawExtrinsics, BlocksTrace } from './blocks';
3
3
  import { ContractsInk } from './contracts';
4
4
  import { NodeNetwork, NodeTransactionPool, NodeVersion } from './node';
5
- import { PalletsAssetConversion, PalletsAssets, PalletsConsts, PalletsDispatchables, PalletsErrors, PalletsEvents, PalletsForeignAssets, PalletsNominationPools, PalletsPoolAssets, PalletsStakingProgress, PalletsStakingValidators, PalletsStorage } from './pallets';
5
+ import { PalletsAssetConversion, PalletsAssets, PalletsConsts, PalletsDispatchables, PalletsErrors, PalletsEvents, PalletsForeignAssets, PalletsNominationPools, PalletsOnGoingReferenda, PalletsPoolAssets, PalletsStakingProgress, PalletsStakingValidators, PalletsStorage } from './pallets';
6
6
  import { Paras } from './paras';
7
7
  import { RuntimeCode, RuntimeMetadata, RuntimeSpec } from './runtime';
8
8
  import { TransactionDryRun, TransactionFeeEstimate, TransactionMaterial, TransactionSubmit } from './transaction';
@@ -32,6 +32,7 @@ export declare const controllers: {
32
32
  PalletsEvents: typeof PalletsEvents;
33
33
  PalletsForeignAssets: typeof PalletsForeignAssets;
34
34
  PalletsNominationPools: typeof PalletsNominationPools;
35
+ PalletsOnGoingReferenda: typeof PalletsOnGoingReferenda;
35
36
  PalletsPoolAssets: typeof PalletsPoolAssets;
36
37
  PalletsStakingProgress: typeof PalletsStakingProgress;
37
38
  PalletsStakingValidators: typeof PalletsStakingValidators;
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2017-2023 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
@@ -50,6 +50,7 @@ exports.controllers = {
50
50
  PalletsEvents: pallets_1.PalletsEvents,
51
51
  PalletsForeignAssets: pallets_1.PalletsForeignAssets,
52
52
  PalletsNominationPools: pallets_1.PalletsNominationPools,
53
+ PalletsOnGoingReferenda: pallets_1.PalletsOnGoingReferenda,
53
54
  PalletsPoolAssets: pallets_1.PalletsPoolAssets,
54
55
  PalletsStakingProgress: pallets_1.PalletsStakingProgress,
55
56
  PalletsStakingValidators: pallets_1.PalletsStakingValidators,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/controllers/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;;;AAExE,yCAUoB;AACpB,qCAAsF;AACtF,2CAA2C;AAC3C,iCAAuE;AACvE,uCAamB;AACnB,mCAAgC;AAChC,uCAAsE;AACtE,+CAAkH;AAElH;;GAEG;AACU,QAAA,WAAW,GAAG;IAC1B,MAAM,EAAN,eAAM;IACN,gBAAgB,EAAhB,yBAAgB;IAChB,WAAW,EAAX,oBAAW;IACX,mBAAmB,EAAnB,4BAAmB;IACnB,cAAc,EAAd,yBAAc;IACd,mBAAmB,EAAnB,8BAAmB;IACnB,eAAe,EAAf,0BAAe;IACf,kBAAkB,EAAlB,6BAAkB;IAClB,iBAAiB,EAAjB,4BAAiB;IACjB,mBAAmB,EAAnB,8BAAmB;IACnB,gBAAgB,EAAhB,2BAAgB;IAChB,mBAAmB,EAAnB,8BAAmB;IACnB,sBAAsB,EAAtB,iCAAsB;IACtB,YAAY,EAAZ,wBAAY;IACZ,aAAa,EAAb,uBAAa;IACb,sBAAsB,EAAtB,gCAAsB;IACtB,oBAAoB,EAApB,8BAAoB;IACpB,aAAa,EAAb,uBAAa;IACb,aAAa,EAAb,uBAAa;IACb,aAAa,EAAb,uBAAa;IACb,oBAAoB,EAApB,8BAAoB;IACpB,sBAAsB,EAAtB,gCAAsB;IACtB,iBAAiB,EAAjB,2BAAiB;IACjB,sBAAsB,EAAtB,gCAAsB;IACtB,wBAAwB,EAAxB,kCAAwB;IACxB,cAAc,EAAd,wBAAc;IACd,WAAW,EAAX,kBAAW;IACX,mBAAmB,EAAnB,0BAAmB;IACnB,WAAW,EAAX,kBAAW;IACX,WAAW,EAAX,qBAAW;IACX,eAAe,EAAf,yBAAe;IACf,WAAW,EAAX,qBAAW;IACX,iBAAiB,EAAjB,+BAAiB;IACjB,sBAAsB,EAAtB,oCAAsB;IACtB,mBAAmB,EAAnB,iCAAmB;IACnB,iBAAiB,EAAjB,+BAAiB;IACjB,KAAK,EAAL,aAAK;CACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/controllers/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;;;AAExE,yCAUoB;AACpB,qCAAsF;AACtF,2CAA2C;AAC3C,iCAAuE;AACvE,uCAcmB;AACnB,mCAAgC;AAChC,uCAAsE;AACtE,+CAAkH;AAElH;;GAEG;AACU,QAAA,WAAW,GAAG;IAC1B,MAAM,EAAN,eAAM;IACN,gBAAgB,EAAhB,yBAAgB;IAChB,WAAW,EAAX,oBAAW;IACX,mBAAmB,EAAnB,4BAAmB;IACnB,cAAc,EAAd,yBAAc;IACd,mBAAmB,EAAnB,8BAAmB;IACnB,eAAe,EAAf,0BAAe;IACf,kBAAkB,EAAlB,6BAAkB;IAClB,iBAAiB,EAAjB,4BAAiB;IACjB,mBAAmB,EAAnB,8BAAmB;IACnB,gBAAgB,EAAhB,2BAAgB;IAChB,mBAAmB,EAAnB,8BAAmB;IACnB,sBAAsB,EAAtB,iCAAsB;IACtB,YAAY,EAAZ,wBAAY;IACZ,aAAa,EAAb,uBAAa;IACb,sBAAsB,EAAtB,gCAAsB;IACtB,oBAAoB,EAApB,8BAAoB;IACpB,aAAa,EAAb,uBAAa;IACb,aAAa,EAAb,uBAAa;IACb,aAAa,EAAb,uBAAa;IACb,oBAAoB,EAApB,8BAAoB;IACpB,sBAAsB,EAAtB,gCAAsB;IACtB,uBAAuB,EAAvB,iCAAuB;IACvB,iBAAiB,EAAjB,2BAAiB;IACjB,sBAAsB,EAAtB,gCAAsB;IACtB,wBAAwB,EAAxB,kCAAwB;IACxB,cAAc,EAAd,wBAAc;IACd,WAAW,EAAX,kBAAW;IACX,mBAAmB,EAAnB,0BAAmB;IACnB,WAAW,EAAX,kBAAW;IACX,WAAW,EAAX,qBAAW;IACX,eAAe,EAAf,yBAAe;IACf,WAAW,EAAX,qBAAW;IACX,iBAAiB,EAAjB,+BAAiB;IACjB,sBAAsB,EAAtB,oCAAsB;IACtB,mBAAmB,EAAnB,iCAAmB;IACnB,iBAAiB,EAAjB,+BAAiB;IACjB,KAAK,EAAL,aAAK;CACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { ApiPromise } from '@polkadot/api';
2
+ import { PalletsOnGoingReferendaService } from '../../services';
3
+ import AbstractController from '../AbstractController';
4
+ export default class PalletsOnGoingReferendaController extends AbstractController<PalletsOnGoingReferendaService> {
5
+ constructor(api: ApiPromise);
6
+ protected initRoutes(): void;
7
+ /**
8
+ * Get the on-going referenda.
9
+ *
10
+ * @param _req Express Request
11
+ * @param res Express Response
12
+ */
13
+ private getPalletOnGoingReferenda;
14
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ // Copyright 2017-2024 Parity Technologies (UK) Ltd.
3
+ // This file is part of Substrate API Sidecar.
4
+ //
5
+ // Substrate API Sidecar is free software: you can redistribute it and/or modify
6
+ // it under the terms of the GNU General Public License as published by
7
+ // the Free Software Foundation, either version 3 of the License, or
8
+ // (at your option) any later version.
9
+ //
10
+ // This program is distributed in the hope that it will be useful,
11
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ // GNU General Public License for more details.
14
+ //
15
+ // You should have received a copy of the GNU General Public License
16
+ // along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ const services_1 = require("../../services");
22
+ const AbstractController_1 = __importDefault(require("../AbstractController"));
23
+ class PalletsOnGoingReferendaController extends AbstractController_1.default {
24
+ constructor(api) {
25
+ super(api, '/pallets/on-going-referenda', new services_1.PalletsOnGoingReferendaService(api));
26
+ /**
27
+ * Get the on-going referenda.
28
+ *
29
+ * @param _req Express Request
30
+ * @param res Express Response
31
+ */
32
+ this.getPalletOnGoingReferenda = async ({ query: { at } }, res) => {
33
+ const hash = await this.getHashFromAt(at);
34
+ PalletsOnGoingReferendaController.sanitizedSend(res, await this.service.derivePalletOnGoingReferenda(hash));
35
+ };
36
+ this.initRoutes();
37
+ }
38
+ initRoutes() {
39
+ this.safeMountAsyncGetHandlers([['', this.getPalletOnGoingReferenda]]);
40
+ }
41
+ }
42
+ exports.default = PalletsOnGoingReferendaController;
43
+ //# sourceMappingURL=PalletsOnGoingReferendaController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PalletsOnGoingReferendaController.js","sourceRoot":"","sources":["../../../../src/controllers/pallets/PalletsOnGoingReferendaController.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;;;;;AAKxE,6CAAgE;AAChE,+EAAuD;AAEvD,MAAqB,iCAAkC,SAAQ,4BAAkD;IAChH,YAAY,GAAe;QAC1B,KAAK,CAAC,GAAG,EAAE,6BAA6B,EAAE,IAAI,yCAA8B,CAAC,GAAG,CAAC,CAAC,CAAC;QAQpF;;;;;WAKG;QACK,8BAAyB,GAAmB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAiB,EAAE;YACnG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAE1C,iCAAiC,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7G,CAAC,CAAC;QAjBD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;CAaD;AArBD,oDAqBC"}
@@ -6,6 +6,7 @@ export { default as PalletsErrors } from './PalletsErrorsController';
6
6
  export { default as PalletsEvents } from './PalletsEventsController';
7
7
  export { default as PalletsForeignAssets } from './PalletsForeignAssetsController';
8
8
  export { default as PalletsNominationPools } from './PalletsNominationPoolsController';
9
+ export { default as PalletsOnGoingReferenda } from './PalletsOnGoingReferendaController';
9
10
  export { default as PalletsPoolAssets } from './PalletsPoolAssetsController';
10
11
  export { default as PalletsStakingProgress } from './PalletsStakingProgressController';
11
12
  export { default as PalletsStakingValidators } from './PalletsStakingValidatorsController';
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2017-2023 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
@@ -18,7 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  return (mod && mod.__esModule) ? mod : { "default": mod };
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.PalletsStorage = exports.PalletsStakingValidators = exports.PalletsStakingProgress = exports.PalletsPoolAssets = exports.PalletsNominationPools = exports.PalletsForeignAssets = exports.PalletsEvents = exports.PalletsErrors = exports.PalletsDispatchables = exports.PalletsConsts = exports.PalletsAssets = exports.PalletsAssetConversion = void 0;
21
+ exports.PalletsStorage = exports.PalletsStakingValidators = exports.PalletsStakingProgress = exports.PalletsPoolAssets = exports.PalletsOnGoingReferenda = exports.PalletsNominationPools = exports.PalletsForeignAssets = exports.PalletsEvents = exports.PalletsErrors = exports.PalletsDispatchables = exports.PalletsConsts = exports.PalletsAssets = exports.PalletsAssetConversion = void 0;
22
22
  var PalletsAssetConversionController_1 = require("./PalletsAssetConversionController");
23
23
  Object.defineProperty(exports, "PalletsAssetConversion", { enumerable: true, get: function () { return __importDefault(PalletsAssetConversionController_1).default; } });
24
24
  var PalletsAssetsController_1 = require("./PalletsAssetsController");
@@ -35,6 +35,8 @@ var PalletsForeignAssetsController_1 = require("./PalletsForeignAssetsController
35
35
  Object.defineProperty(exports, "PalletsForeignAssets", { enumerable: true, get: function () { return __importDefault(PalletsForeignAssetsController_1).default; } });
36
36
  var PalletsNominationPoolsController_1 = require("./PalletsNominationPoolsController");
37
37
  Object.defineProperty(exports, "PalletsNominationPools", { enumerable: true, get: function () { return __importDefault(PalletsNominationPoolsController_1).default; } });
38
+ var PalletsOnGoingReferendaController_1 = require("./PalletsOnGoingReferendaController");
39
+ Object.defineProperty(exports, "PalletsOnGoingReferenda", { enumerable: true, get: function () { return __importDefault(PalletsOnGoingReferendaController_1).default; } });
38
40
  var PalletsPoolAssetsController_1 = require("./PalletsPoolAssetsController");
39
41
  Object.defineProperty(exports, "PalletsPoolAssets", { enumerable: true, get: function () { return __importDefault(PalletsPoolAssetsController_1).default; } });
40
42
  var PalletsStakingProgressController_1 = require("./PalletsStakingProgressController");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/controllers/pallets/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;;;;;;AAExE,uFAAuF;AAA9E,2JAAA,OAAO,OAA0B;AAC1C,qEAAqE;AAA5D,yIAAA,OAAO,OAAiB;AACjC,qEAAqE;AAA5D,yIAAA,OAAO,OAAiB;AACjC,mFAAmF;AAA1E,uJAAA,OAAO,OAAwB;AACxC,qEAAqE;AAA5D,yIAAA,OAAO,OAAiB;AACjC,qEAAqE;AAA5D,yIAAA,OAAO,OAAiB;AACjC,mFAAmF;AAA1E,uJAAA,OAAO,OAAwB;AACxC,uFAAuF;AAA9E,2JAAA,OAAO,OAA0B;AAC1C,6EAA6E;AAApE,iJAAA,OAAO,OAAqB;AACrC,uFAAuF;AAA9E,2JAAA,OAAO,OAA0B;AAC1C,2FAA2F;AAAlF,+JAAA,OAAO,OAA4B;AAC5C,uEAAuE;AAA9D,2IAAA,OAAO,OAAkB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/controllers/pallets/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;;;;;;AAExE,uFAAuF;AAA9E,2JAAA,OAAO,OAA0B;AAC1C,qEAAqE;AAA5D,yIAAA,OAAO,OAAiB;AACjC,qEAAqE;AAA5D,yIAAA,OAAO,OAAiB;AACjC,mFAAmF;AAA1E,uJAAA,OAAO,OAAwB;AACxC,qEAAqE;AAA5D,yIAAA,OAAO,OAAiB;AACjC,qEAAqE;AAA5D,yIAAA,OAAO,OAAiB;AACjC,mFAAmF;AAA1E,uJAAA,OAAO,OAAwB;AACxC,uFAAuF;AAA9E,2JAAA,OAAO,OAA0B;AAC1C,yFAAyF;AAAhF,6JAAA,OAAO,OAA2B;AAC3C,6EAA6E;AAApE,iJAAA,OAAO,OAAqB;AACrC,uFAAuF;AAA9E,2JAAA,OAAO,OAA0B;AAC1C,2FAA2F;AAAlF,+JAAA,OAAO,OAA4B;AAC5C,uEAAuE;AAA9D,2IAAA,OAAO,OAAkB"}
@@ -14,9 +14,13 @@
14
14
  //
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
17
20
  Object.defineProperty(exports, "__esModule", { value: true });
18
21
  exports.Log = void 0;
19
22
  const winston_1 = require("winston");
23
+ const winston_loki_1 = __importDefault(require("winston-loki"));
20
24
  const SidecarConfig_1 = require("../SidecarConfig");
21
25
  const transports_1 = require("./transports");
22
26
  /**
@@ -34,6 +38,13 @@ class Log {
34
38
  if (SidecarConfig_1.SidecarConfig.config.LOG.WRITE) {
35
39
  this._transports.push((0, transports_1.fileTransport)('logs.log'));
36
40
  }
41
+ if (SidecarConfig_1.SidecarConfig.config.METRICS.ENABLED) {
42
+ this._transports.push(new winston_loki_1.default({
43
+ host: `http://${SidecarConfig_1.SidecarConfig.config.METRICS.LOKI_HOST}:${SidecarConfig_1.SidecarConfig.config.METRICS.LOKI_PORT}`,
44
+ useWinstonMetaAsLabels: true,
45
+ json: true,
46
+ }));
47
+ }
37
48
  this._logger = (0, winston_1.createLogger)({
38
49
  transports: this._transports,
39
50
  exitOnError: false,
@@ -1 +1 @@
1
- {"version":3,"file":"Log.js","sourceRoot":"","sources":["../../../src/logging/Log.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,qCAA+C;AAG/C,oDAAiD;AACjD,6CAA+D;AAE/D;;GAEG;AACH,MAAa,GAAG;IAGP,MAAM,CAAC,MAAM;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO,IAAI,CAAC,OAAO,CAAC;SACpB;QAED,IAAI,CAAC,WAAW,GAAG,CAAC,IAAA,6BAAgB,GAAE,CAAC,CAAC;QAExC;;WAEG;QACH,IAAI,6BAAa,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;YACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAA,0BAAa,EAAC,UAAU,CAAC,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,OAAO,GAAG,IAAA,sBAAY,EAAC;YAC3B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,WAAW,EAAE,KAAK;YAClB,iBAAiB,EAAE,IAAI,CAAC,WAAW;SACnC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,KAAK,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;CACD;AAhCD,kBAgCC"}
1
+ {"version":3,"file":"Log.js","sourceRoot":"","sources":["../../../src/logging/Log.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,qCAA+C;AAE/C,gEAAyC;AAEzC,oDAAiD;AACjD,6CAA+D;AAE/D;;GAEG;AACH,MAAa,GAAG;IAGP,MAAM,CAAC,MAAM;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO,IAAI,CAAC,OAAO,CAAC;SACpB;QAED,IAAI,CAAC,WAAW,GAAG,CAAC,IAAA,6BAAgB,GAAE,CAAC,CAAC;QAExC;;WAEG;QACH,IAAI,6BAAa,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;YACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAA,0BAAa,EAAC,UAAU,CAAC,CAAC,CAAC;SACjD;QAED,IAAI,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;YACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CACpB,IAAI,sBAAa,CAAC;gBACjB,IAAI,EAAE,UAAU,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,IAAI,6BAAa,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;gBAClG,sBAAsB,EAAE,IAAI;gBAC5B,IAAI,EAAE,IAAI;aACV,CAAC,CACF,CAAC;SACF;QAED,IAAI,CAAC,OAAO,GAAG,IAAA,sBAAY,EAAC;YAC3B,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,WAAW,EAAE,KAAK;YAClB,iBAAiB,EAAE,IAAI,CAAC,WAAW;SACnC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,KAAK,MAAM;QAChB,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;CACD;AA1CD,kBA0CC"}
package/build/src/main.js CHANGED
@@ -52,11 +52,11 @@ const App_1 = __importDefault(require("./App"));
52
52
  const chains_config_1 = require("./chains-config");
53
53
  const consoleOverride_1 = require("./logging/consoleOverride");
54
54
  const Log_1 = require("./logging/Log");
55
+ const index_1 = require("./metrics/index");
55
56
  const middleware = __importStar(require("./middleware"));
56
57
  const typesBundle_1 = __importDefault(require("./override-types/typesBundle"));
57
58
  const parseArgs_1 = require("./parseArgs");
58
59
  const SidecarConfig_1 = require("./SidecarConfig");
59
- const metrics_1 = __importDefault(require("./util/metrics"));
60
60
  async function main() {
61
61
  const { config } = SidecarConfig_1.SidecarConfig;
62
62
  const { logger } = Log_1.Log;
@@ -82,9 +82,21 @@ async function main() {
82
82
  api.rpc.state.getRuntimeVersion(),
83
83
  ]);
84
84
  startUpPrompt(config.SUBSTRATE.URL, chainName.toString(), implName.toString());
85
+ const preMiddlewares = [(0, express_1.json)(), middleware.httpLoggerCreate(logger)];
86
+ if (config.METRICS.ENABLED) {
87
+ // Create Metrics App
88
+ const metricsApp = new index_1.MetricsApp({
89
+ port: config.METRICS.PROM_PORT,
90
+ host: config.METRICS.PROM_HOST,
91
+ });
92
+ // Generate metrics middleware
93
+ preMiddlewares.push(metricsApp.preMiddleware());
94
+ // Start the Metrics server
95
+ metricsApp.listen();
96
+ }
85
97
  // Create our App
86
98
  const app = new App_1.default({
87
- preMiddleware: [(0, express_1.json)(), middleware.httpLoggerCreate(logger)],
99
+ preMiddleware: preMiddlewares,
88
100
  controllers: (0, chains_config_1.getControllersForSpec)(api, specName.toString()),
89
101
  postMiddleware: [
90
102
  middleware.txError,
@@ -100,15 +112,6 @@ async function main() {
100
112
  const server = app.listen();
101
113
  server.keepAliveTimeout = config.EXPRESS.KEEP_ALIVE_TIMEOUT;
102
114
  server.headersTimeout = config.EXPRESS.KEEP_ALIVE_TIMEOUT + 5000;
103
- if (args.prometheus) {
104
- // Create Metrics App
105
- const metricsApp = new metrics_1.default({
106
- port: 9100,
107
- host: config.EXPRESS.HOST,
108
- });
109
- // Start the Metrics server
110
- metricsApp.listen();
111
- }
112
115
  }
113
116
  /**
114
117
  * Prompt the user with some basic info about the node and the network they have
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { Request, Response } from 'express';
2
+ import client from 'prom-client';
3
+ interface IAppConfiguration {
4
+ port: number;
5
+ host: string;
6
+ }
7
+ interface Query extends Request {
8
+ route: {
9
+ path: string;
10
+ [key: string]: unknown;
11
+ };
12
+ }
13
+ export default class Metrics_App {
14
+ private app;
15
+ private registry;
16
+ private metrics;
17
+ private includeQueryParams;
18
+ private readonly port;
19
+ private readonly host;
20
+ /**
21
+ * @param appConfig configuration for app.
22
+ */
23
+ constructor({ host, port }: IAppConfiguration);
24
+ listen(): void;
25
+ getRegisteredMetrics(): Record<string, client.Metric>;
26
+ private createMetricByType;
27
+ private getRoute;
28
+ preMiddleware(): (req: Query, res: Response, next: () => void) => void;
29
+ private init;
30
+ }
31
+ export {};
@@ -0,0 +1,175 @@
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
+ const express_1 = __importDefault(require("express"));
7
+ const prom_client_1 = __importDefault(require("prom-client"));
8
+ const Log_1 = require("../logging/Log");
9
+ const SidecarConfig_1 = require("../SidecarConfig");
10
+ const _1 = require(".");
11
+ class Metrics_App {
12
+ /**
13
+ * @param appConfig configuration for app.
14
+ */
15
+ constructor({ host, port }) {
16
+ this.includeQueryParams = SidecarConfig_1.SidecarConfig.config.METRICS.INCLUDE_QUERYPARAMS;
17
+ this.port = port;
18
+ this.app = (0, express_1.default)();
19
+ this.host = host;
20
+ this.registry = new prom_client_1.default.Registry();
21
+ this.metrics = {};
22
+ this.init();
23
+ }
24
+ listen() {
25
+ const { logger } = Log_1.Log;
26
+ this.app.listen(this.port, this.host, () => {
27
+ logger.info(`Metrics Server started at http://${this.host}:${this.port}/metrics`);
28
+ });
29
+ }
30
+ getRegisteredMetrics() {
31
+ return this.metrics;
32
+ }
33
+ createMetricByType(prefix = 'sas', metric) {
34
+ const prefixedName = prefix + '_' + metric.name;
35
+ if (prefixedName in this.metrics) {
36
+ return this.metrics[prefixedName];
37
+ }
38
+ switch (metric.type) {
39
+ case "counter" /* MetricType.Counter */: {
40
+ const counter = new prom_client_1.default.Counter({
41
+ name: prefixedName,
42
+ help: metric.help,
43
+ labelNames: metric.labels || [],
44
+ registers: [this.registry],
45
+ });
46
+ this.registry.registerMetric(counter);
47
+ this.metrics[prefixedName] = counter;
48
+ return counter;
49
+ }
50
+ case "histogram" /* MetricType.Histogram */: {
51
+ const histogram = new prom_client_1.default.Histogram({
52
+ name: prefixedName,
53
+ help: metric.help,
54
+ labelNames: metric.labels || [],
55
+ registers: [this.registry],
56
+ buckets: metric.buckets || [0.1, 0.5, 1, 1.5, 2, 3, 4, 5],
57
+ });
58
+ this.metrics[prefixedName] = histogram;
59
+ return histogram;
60
+ }
61
+ case "gauge" /* MetricType.Gauge */:
62
+ throw new Error('Gauge not implemented');
63
+ case "summary" /* MetricType.Summary */:
64
+ throw new Error('Summary not implemented');
65
+ default:
66
+ throw new Error('Unknown metric type');
67
+ }
68
+ }
69
+ getRoute(req) {
70
+ var _a, _b;
71
+ let route = req.baseUrl;
72
+ if (req.route) {
73
+ if (req.route.path !== '/') {
74
+ route = route ? route + ((_a = req.route) === null || _a === void 0 ? void 0 : _a.path) : (_b = req.route) === null || _b === void 0 ? void 0 : _b.path;
75
+ }
76
+ if (!route || route === '' || typeof route !== 'string') {
77
+ route = req.originalUrl.split('?')[0];
78
+ }
79
+ else {
80
+ const splittedRoute = route.split('/');
81
+ const splittedUrl = req.originalUrl.split('?')[0].split('/');
82
+ const routeIndex = splittedUrl.length - splittedRoute.length + 1;
83
+ const baseUrl = splittedUrl.slice(0, routeIndex).join('/');
84
+ route = baseUrl + route;
85
+ }
86
+ if (this.includeQueryParams === true && Object.keys(req.query).length > 0) {
87
+ route = `${route}?${Object.keys(req.query)
88
+ .sort()
89
+ .map((queryParam) => `${queryParam}=<?>`)
90
+ .join('&')}`;
91
+ }
92
+ }
93
+ if (typeof req.params === 'object') {
94
+ Object.keys(req.params).forEach((paramName) => {
95
+ route = route.replace(req.params[paramName], ':' + paramName);
96
+ });
97
+ }
98
+ if (!route || route === '') {
99
+ // if (!req.route && res && res.statusCode === 404) {
100
+ route = 'N/A';
101
+ }
102
+ return route;
103
+ }
104
+ preMiddleware() {
105
+ return (req, res, next) => {
106
+ const tot_requests = this.metrics['sas_http_requests'];
107
+ // request count metrics
108
+ if (req.originalUrl != '/favicon.ico') {
109
+ tot_requests.inc();
110
+ }
111
+ const request_duration_seconds = this.metrics['sas_request_duration_seconds'];
112
+ const end = request_duration_seconds.startTimer();
113
+ res.locals.metrics = {
114
+ timer: end,
115
+ registry: this.metrics,
116
+ };
117
+ const oldJson = res.json;
118
+ res.json = (body) => {
119
+ res.locals.body = body;
120
+ return oldJson.call(res, body);
121
+ };
122
+ res.once('finish', () => {
123
+ if (res.statusCode >= 400 && req.originalUrl != '/favicon.ico') {
124
+ const request_errors = this.metrics['sas_http_request_error'];
125
+ request_errors.inc();
126
+ }
127
+ else if (res.statusCode < 400) {
128
+ const request_success = this.metrics['sas_http_request_success'];
129
+ request_success.inc();
130
+ }
131
+ let resContentLength = '0';
132
+ if ('_contentLength' in res && res['_contentLength'] != null) {
133
+ resContentLength = res['_contentLength'];
134
+ }
135
+ else if (res.hasHeader('Content-Length')) {
136
+ resContentLength = res.getHeader('Content-Length');
137
+ }
138
+ // Generic Metrics per route (latency, response size, response size to latency ratio)
139
+ // response size metrics
140
+ const response_size_bytes = this.metrics['sas_response_size_bytes'];
141
+ response_size_bytes
142
+ .labels({ method: req.method, route: this.getRoute(req), status_code: res.statusCode })
143
+ .observe(parseFloat(resContentLength));
144
+ // latency metrics
145
+ const latency = end({ method: req.method, route: this.getRoute(req), status_code: res.statusCode });
146
+ // response size to latency ratio
147
+ const response_size_latency_ratio = this.metrics['sas_response_size_bytes_seconds'];
148
+ response_size_latency_ratio
149
+ .labels({ method: req.method, route: this.getRoute(req), status_code: res.statusCode })
150
+ .observe(parseFloat(resContentLength) / latency);
151
+ });
152
+ next();
153
+ };
154
+ }
155
+ init() {
156
+ // Set up
157
+ _1.config.metric_list.forEach((metric) => this.createMetricByType('sas', metric));
158
+ prom_client_1.default.collectDefaultMetrics({ register: this.registry, prefix: 'sas_' });
159
+ // Set up the metrics endpoint
160
+ this.app.get('/metrics', (_req, res) => {
161
+ void (async () => {
162
+ res.set('Content-Type', this.registry.contentType);
163
+ res.send(await this.registry.metrics());
164
+ })();
165
+ });
166
+ this.app.get('/metrics.json', (_req, res) => {
167
+ void (async () => {
168
+ res.set('Content-Type', this.registry.contentType);
169
+ res.send(await this.registry.getMetricsAsJSON());
170
+ })();
171
+ });
172
+ }
173
+ }
174
+ exports.default = Metrics_App;
175
+ //# sourceMappingURL=Metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Metrics.js","sourceRoot":"","sources":["../../../src/metrics/Metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { IMetric } from '../types/metrics';
2
+ export declare const metric_list: IMetric[];
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ // as new metrics are added in routes they need to be registered here to make them available across the apps
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.metric_list = void 0;
5
+ exports.metric_list = [
6
+ {
7
+ name: 'http_request_error',
8
+ help: 'Number of HTTP Errors',
9
+ type: "counter" /* MetricType.Counter */,
10
+ },
11
+ {
12
+ name: 'http_request_success',
13
+ help: 'Number of HTTP Success',
14
+ type: "counter" /* MetricType.Counter */,
15
+ },
16
+ {
17
+ name: 'http_requests',
18
+ help: 'Total number of HTTP Requests',
19
+ type: "counter" /* MetricType.Counter */,
20
+ },
21
+ {
22
+ name: 'request_duration_seconds',
23
+ help: 'Duration of HTTP requests in seconds',
24
+ labels: ['method', 'route', 'status_code'],
25
+ buckets: [0.1, 0.5, 1, 1.5, 2, 3, 4, 5],
26
+ type: "histogram" /* MetricType.Histogram */,
27
+ },
28
+ {
29
+ name: 'response_size_bytes',
30
+ help: 'Size of HTTP responses in bytes',
31
+ labels: ['method', 'route', 'status_code'],
32
+ buckets: [100, 500, 1000, 5000, 10000, 50000, 100000, 500000, 1000000, 5000000],
33
+ type: "histogram" /* MetricType.Histogram */,
34
+ },
35
+ {
36
+ name: 'response_size_bytes_seconds',
37
+ help: 'Ratio of response size to latency',
38
+ labels: ['method', 'route', 'status_code'],
39
+ buckets: [64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144],
40
+ type: "histogram" /* MetricType.Histogram */,
41
+ },
42
+ {
43
+ name: 'extrinsics_in_request',
44
+ help: 'Number of extrinsics in a request',
45
+ type: "histogram" /* MetricType.Histogram */,
46
+ buckets: [5, 10, 20, 40, 80, 160, 320, 640, 1280, 2560, 5120, 10240, 20480],
47
+ labels: ['method', 'route', 'status_code'],
48
+ },
49
+ {
50
+ name: 'extrinsics_per_second',
51
+ help: 'Number of extrinsics per second',
52
+ type: "histogram" /* MetricType.Histogram */,
53
+ labels: ['method', 'route', 'status_code'],
54
+ buckets: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024],
55
+ },
56
+ {
57
+ name: 'extrinsics_per_block',
58
+ help: 'Average number of extrinsics per block',
59
+ type: "histogram" /* MetricType.Histogram */,
60
+ labels: ['method', 'route', 'status_code'],
61
+ buckets: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024],
62
+ },
63
+ {
64
+ name: 'seconds_per_block',
65
+ help: 'Average seconds per block',
66
+ type: "histogram" /* MetricType.Histogram */,
67
+ labels: ['method', 'route', 'status_code'],
68
+ buckets: [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024],
69
+ },
70
+ ];
71
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/metrics/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * as config from './config';
2
+ export { default as MetricsApp } from './Metrics';