@substrate/api-sidecar 12.0.1 → 12.1.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 (23) hide show
  1. package/build/package.json +4 -4
  2. package/build/src/controllers/node/NodeTransactionPoolController.d.ts +6 -2
  3. package/build/src/controllers/node/NodeTransactionPoolController.js +9 -4
  4. package/build/src/controllers/node/NodeTransactionPoolController.js.map +1 -1
  5. package/build/src/logging/transports/consoleTransport.js +1 -1
  6. package/build/src/logging/transports/consoleTransport.js.map +1 -1
  7. package/build/src/middleware/error/errorMiddleware.spec.js +4 -0
  8. package/build/src/middleware/error/errorMiddleware.spec.js.map +1 -1
  9. package/build/src/middleware/error/httpErrorMiddleware.spec.js +4 -0
  10. package/build/src/middleware/error/httpErrorMiddleware.spec.js.map +1 -1
  11. package/build/src/middleware/error/internalErrorMiddleware.spec.js +4 -0
  12. package/build/src/middleware/error/internalErrorMiddleware.spec.js.map +1 -1
  13. package/build/src/middleware/error/legacyErrorMiddleware.spec.js +4 -0
  14. package/build/src/middleware/error/legacyErrorMiddleware.spec.js.map +1 -1
  15. package/build/src/middleware/error/txErrorMiddleware.spec.js +4 -0
  16. package/build/src/middleware/error/txErrorMiddleware.spec.js.map +1 -1
  17. package/build/src/services/node/NodeTransactionPoolService.d.ts +43 -1
  18. package/build/src/services/node/NodeTransactionPoolService.js +129 -6
  19. package/build/src/services/node/NodeTransactionPoolService.js.map +1 -1
  20. package/build/src/services/node/NodeTransactionPoolService.spec.js +31 -4
  21. package/build/src/services/node/NodeTransactionPoolService.spec.js.map +1 -1
  22. package/build/src/types/responses/NodeTransactionPool.d.ts +20 -0
  23. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "12.0.1",
2
+ "version": "12.1.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",
@@ -35,7 +35,7 @@
35
35
  "start:log-rpc": "yarn run build && NODE_ENV=test yarn run main ",
36
36
  "dev": "tsc-watch --onSuccess \"yarn run main\"",
37
37
  "test": "NODE_ENV=test substrate-exec-jest --detectOpenHandles",
38
- "test:watch": "substrate-exec-jest --watch",
38
+ "test:watch": "NODE_ENV=test substrate-exec-jest --watch",
39
39
  "test:cov": "NODE_ENV=test substrate-exec-jest --detectOpenHandles --coverage",
40
40
  "lint:e2e-tests": "cd e2e-tests && substrate-dev-run-lint",
41
41
  "build:e2e-tests": "substrate-exec-tsc --project e2e-tests/tsconfig.json",
@@ -54,8 +54,8 @@
54
54
  "update-pjs-deps": "substrate-update-pjs-deps && yarn"
55
55
  },
56
56
  "dependencies": {
57
- "@polkadot/api": "8.5.1",
58
- "@polkadot/util-crypto": "9.2.1",
57
+ "@polkadot/api": "^8.7.1",
58
+ "@polkadot/util-crypto": "^9.4.1",
59
59
  "@substrate/calc": "^0.2.8",
60
60
  "argparse": "^2.0.1",
61
61
  "confmgr": "1.0.7",
@@ -8,14 +8,18 @@ import AbstractController from '../AbstractController';
8
8
  * - `pool`: array of
9
9
  * - `hash`: H256 hash of the extrinsic.
10
10
  * - `encodedExtrinsic`: Scale encoded extrinsic.
11
+ * - `tip`: Tip included into the extrinsic. Available when the `includeFee` query param is set to true.
12
+ * - `priority`: Priority of the transaction. Calculated by tip * (max_block_{weight|length} / bounded_{weight|length}).
13
+ * Available when the `includeFee` query param is set to true.
14
+ * - `partialFee`: PartialFee for a transaction. Available when the `includeFee` query param is set to true.
11
15
  */
12
16
  export default class NodeTransactionPoolController extends AbstractController<NodeTransactionPoolService> {
13
17
  constructor(api: ApiPromise);
14
18
  protected initRoutes(): void;
15
19
  /**
16
- ** GET pending extrinsics from the Substrate node.
20
+ * GET pending extrinsics from the Substrate node.
17
21
  *
18
- * @param _req Express Request
22
+ * @param req Express Request, accepts the query param `includeFee`
19
23
  * @param res Express Response
20
24
  */
21
25
  private getNodeTransactionPool;
@@ -27,18 +27,23 @@ const AbstractController_1 = __importDefault(require("../AbstractController"));
27
27
  * - `pool`: array of
28
28
  * - `hash`: H256 hash of the extrinsic.
29
29
  * - `encodedExtrinsic`: Scale encoded extrinsic.
30
+ * - `tip`: Tip included into the extrinsic. Available when the `includeFee` query param is set to true.
31
+ * - `priority`: Priority of the transaction. Calculated by tip * (max_block_{weight|length} / bounded_{weight|length}).
32
+ * Available when the `includeFee` query param is set to true.
33
+ * - `partialFee`: PartialFee for a transaction. Available when the `includeFee` query param is set to true.
30
34
  */
31
35
  class NodeTransactionPoolController extends AbstractController_1.default {
32
36
  constructor(api) {
33
37
  super(api, '/node/transaction-pool', new services_1.NodeTransactionPoolService(api));
34
38
  /**
35
- ** GET pending extrinsics from the Substrate node.
39
+ * GET pending extrinsics from the Substrate node.
36
40
  *
37
- * @param _req Express Request
41
+ * @param req Express Request, accepts the query param `includeFee`
38
42
  * @param res Express Response
39
43
  */
40
- this.getNodeTransactionPool = async (_req, res) => {
41
- NodeTransactionPoolController.sanitizedSend(res, await this.service.fetchTransactionPool());
44
+ this.getNodeTransactionPool = async ({ query: { includeFee } }, res) => {
45
+ const shouldIncludeFee = includeFee === 'true';
46
+ NodeTransactionPoolController.sanitizedSend(res, await this.service.fetchTransactionPool(shouldIncludeFee));
42
47
  };
43
48
  this.initRoutes();
44
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NodeTransactionPoolController.js","sourceRoot":"","sources":["../../../../src/controllers/node/NodeTransactionPoolController.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,6CAA4D;AAC5D,+EAAuD;AAEvD;;;;;;;GAOG;AACH,MAAqB,6BAA8B,SAAQ,4BAA8C;IACxG,YAAY,GAAe;QAC1B,KAAK,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,qCAA0B,CAAC,GAAG,CAAC,CAAC,CAAC;QAQ3E;;;;;WAKG;QACK,2BAAsB,GAAmB,KAAK,EACrD,IAAI,EACJ,GAAG,EACa,EAAE;YAClB,6BAA6B,CAAC,aAAa,CAC1C,GAAG,EACH,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CACzC,CAAC;QACH,CAAC,CAAC;QArBD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;CAiBD;AAzBD,gDAyBC"}
1
+ {"version":3,"file":"NodeTransactionPoolController.js","sourceRoot":"","sources":["../../../../src/controllers/node/NodeTransactionPoolController.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,6CAA4D;AAC5D,+EAAuD;AAEvD;;;;;;;;;;;GAWG;AACH,MAAqB,6BAA8B,SAAQ,4BAA8C;IACxG,YAAY,GAAe;QAC1B,KAAK,CAAC,GAAG,EAAE,wBAAwB,EAAE,IAAI,qCAA0B,CAAC,GAAG,CAAC,CAAC,CAAC;QAQ3E;;;;;WAKG;QACK,2BAAsB,GAAmB,KAAK,EACrD,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EACzB,GAAG,EACa,EAAE;YAClB,MAAM,gBAAgB,GAAG,UAAU,KAAK,MAAM,CAAC;YAE/C,6BAA6B,CAAC,aAAa,CAC1C,GAAG,EACH,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CACzD,CAAC;QACH,CAAC,CAAC;QAvBD,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAES,UAAU;QACnB,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;CAmBD;AA3BD,gDA2BC"}
@@ -52,7 +52,7 @@ function consoleTransport() {
52
52
  handleExceptions: true,
53
53
  format: winston_1.format.combine(...transformers),
54
54
  // Silence using `jest --silent`
55
- silent: process.argv.indexOf('--silent') >= 0,
55
+ silent: process.env.NODE_ENV === 'test',
56
56
  });
57
57
  }
58
58
  exports.consoleTransport = consoleTransport;
@@ -1 +1 @@
1
- {"version":3,"file":"consoleTransport.js","sourceRoot":"","sources":["../../../../src/logging/transports/consoleTransport.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,qCAA6C;AAE7C,uDAAoD;AACpD,kDAMyB;AAEzB;;GAEG;AACH,SAAgB,gBAAgB;IAC/B,MAAM,EACL,MAAM,EAAE,EAAE,GAAG,EAAE,GACf,GAAG,6BAAa,CAAC;IAClB;;OAEG;IACH,MAAM,WAAW,GAAG,gBAAM,CAAC,MAAM,CAAC,CAAC,IAAuB,EAAE,EAAE;QAC7D,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE;YAChB,yEAAyE;YACzE,OAAO,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAmB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,KACjD,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OACP,OAAO,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAe,EAAE,CAAC;SAC/B;QAED,OAAO,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAmB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,KAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,IAAA,6BAAc,GAAE,EAAE,IAAA,6BAAc,GAAE,EAAE,wBAAS,CAAC,CAAC;IAErE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QACd,YAAY,CAAC,IAAI,CAAC,gBAAM,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,CAAC;KAClD;SAAM;QACN,YAAY,CAAC,IAAI,CAAC,gBAAM,CAAC,WAAW,EAAE,CAAC,CAAC;KACxC;IAED,IAAI,GAAG,CAAC,UAAU,EAAE;QACnB,YAAY,CAAC,OAAO,CAAC,IAAA,wBAAS,GAAE,CAAC,CAAC;KAClC;IAED,IAAI,GAAG,CAAC,UAAU,EAAE;QACnB,YAAY,CAAC,OAAO,CAAC,IAAA,2BAAY,GAAE,CAAC,CAAC;KACrC;IAED,OAAO,IAAI,oBAAU,CAAC,OAAO,CAAC;QAC7B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,MAAM;QAC1B,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE,gBAAM,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC;QACvC,gCAAgC;QAChC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;KAC7C,CAAC,CAAC;AACJ,CAAC;AAzCD,4CAyCC"}
1
+ {"version":3,"file":"consoleTransport.js","sourceRoot":"","sources":["../../../../src/logging/transports/consoleTransport.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,qCAA6C;AAE7C,uDAAoD;AACpD,kDAMyB;AAEzB;;GAEG;AACH,SAAgB,gBAAgB;IAC/B,MAAM,EACL,MAAM,EAAE,EAAE,GAAG,EAAE,GACf,GAAG,6BAAa,CAAC;IAClB;;OAEG;IACH,MAAM,WAAW,GAAG,gBAAM,CAAC,MAAM,CAAC,CAAC,IAAuB,EAAE,EAAE;QAC7D,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,EAAE;YAChB,yEAAyE;YACzE,OAAO,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAmB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,KACjD,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OACP,OAAO,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAe,EAAE,CAAC;SAC/B;QAED,OAAO,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAmB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,KAAK,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,CAAC,IAAA,6BAAc,GAAE,EAAE,IAAA,6BAAc,GAAE,EAAE,wBAAS,CAAC,CAAC;IAErE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QACd,YAAY,CAAC,IAAI,CAAC,gBAAM,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,CAAC;KAClD;SAAM;QACN,YAAY,CAAC,IAAI,CAAC,gBAAM,CAAC,WAAW,EAAE,CAAC,CAAC;KACxC;IAED,IAAI,GAAG,CAAC,UAAU,EAAE;QACnB,YAAY,CAAC,OAAO,CAAC,IAAA,wBAAS,GAAE,CAAC,CAAC;KAClC;IAED,IAAI,GAAG,CAAC,UAAU,EAAE;QACnB,YAAY,CAAC,OAAO,CAAC,IAAA,2BAAY,GAAE,CAAC,CAAC;KACrC;IAED,OAAO,IAAI,oBAAU,CAAC,OAAO,CAAC;QAC7B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,MAAM;QAC1B,gBAAgB,EAAE,IAAI;QACtB,MAAM,EAAE,gBAAM,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC;QACvC,gCAAgC;QAChC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;KACvC,CAAC,CAAC;AACJ,CAAC;AAzCD,4CAyCC"}
@@ -21,6 +21,10 @@ const testTools_1 = require("./testTools");
21
21
  const errorMiddlewareCallsNextWithErr = (0, testTools_1.callsNextWithErr)(errorMiddleware_1.errorMiddleware);
22
22
  const errorMiddlewareCatchesErrWithStatus = (0, testTools_1.catchesErrWithStatus)(errorMiddleware_1.errorMiddleware);
23
23
  describe('errorMiddleware', () => {
24
+ // Necessary since the consolveOverride is called after the getter for the logger is launced
25
+ beforeAll(() => {
26
+ jest.spyOn(console, 'log').mockImplementation(() => ({}));
27
+ });
24
28
  errorMiddlewareCallsNextWithErr('ILegacyError', {
25
29
  error: 'legacy error',
26
30
  statusCode: 500,
@@ -1 +1 @@
1
- {"version":3,"file":"errorMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/error/errorMiddleware.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;;AAExE,6CAA8D;AAE9D,uDAAoD;AACpD,2CAIqB;AAErB,MAAM,+BAA+B,GAAG,IAAA,4BAAgB,EAAC,iCAAe,CAAC,CAAC;AAE1E,MAAM,mCAAmC,GACxC,IAAA,gCAAoB,EAAC,iCAAe,CAAC,CAAC;AAEvC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,+BAA+B,CAAC,cAAc,EAAE;QAC/C,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,GAAG;KACf,CAAC,CAAC;IAEH,+BAA+B,CAAC,aAAa,EAAE;QAC9C,KAAK,EAAE,aAAa;KACpB,CAAC,CAAC;IAEH,+BAA+B,CAAC,gBAAgB,EAAE;QACjD,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,UAAU;KACjB,CAAC,CAAC;IAEH,+BAA+B,CAAC,iBAAiB,EAAE;QAClD,oBAAoB,EAAE,KAAK;KAC3B,CAAC,CAAC;IAEH,mCAAmC,CAClC,OAAO,EACP,IAAI,KAAK,CAAC,kBAAkB,CAAC,EAC7B,GAAG,CACH,CAAC;IAEF,mCAAmC,CAClC,wEAAwE,EACxE,IAAI,wBAAU,CAAC,aAAa,CAAC,EAC7B,GAAG,CACH,CAAC;IAEF,mCAAmC,CAClC,sDAAsD,EACtD,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,EACzC,GAAG,CACH,CAAC;IAEF,IAAA,oCAAwB,EAAC,iCAAe,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"errorMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/error/errorMiddleware.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;;AAExE,6CAA8D;AAE9D,uDAAoD;AACpD,2CAIqB;AAErB,MAAM,+BAA+B,GAAG,IAAA,4BAAgB,EAAC,iCAAe,CAAC,CAAC;AAE1E,MAAM,mCAAmC,GACxC,IAAA,gCAAoB,EAAC,iCAAe,CAAC,CAAC;AAEvC,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,4FAA4F;IAC5F,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,+BAA+B,CAAC,cAAc,EAAE;QAC/C,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,GAAG;KACf,CAAC,CAAC;IAEH,+BAA+B,CAAC,aAAa,EAAE;QAC9C,KAAK,EAAE,aAAa;KACpB,CAAC,CAAC;IAEH,+BAA+B,CAAC,gBAAgB,EAAE;QACjD,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,UAAU;KACjB,CAAC,CAAC;IAEH,+BAA+B,CAAC,iBAAiB,EAAE;QAClD,oBAAoB,EAAE,KAAK;KAC3B,CAAC,CAAC;IAEH,mCAAmC,CAClC,OAAO,EACP,IAAI,KAAK,CAAC,kBAAkB,CAAC,EAC7B,GAAG,CACH,CAAC;IAEF,mCAAmC,CAClC,wEAAwE,EACxE,IAAI,wBAAU,CAAC,aAAa,CAAC,EAC7B,GAAG,CACH,CAAC;IAEF,mCAAmC,CAClC,sDAAsD,EACtD,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,EACzC,GAAG,CACH,CAAC;IAEF,IAAA,oCAAwB,EAAC,iCAAe,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC"}
@@ -25,6 +25,10 @@ const testTools_1 = require("./testTools");
25
25
  const httpErrorMiddlewareCallsNextWithErr = (0, testTools_1.callsNextWithErr)(httpErrorMiddleware_1.httpErrorMiddleware);
26
26
  const httpErrorMiddlewareCatchesErrWithStatus = (0, testTools_1.catchesErrWithStatus)(httpErrorMiddleware_1.httpErrorMiddleware);
27
27
  describe('httpErrorMiddleware', () => {
28
+ // Necessary since the consolveOverride is called after the getter for the logger is launced
29
+ beforeAll(() => {
30
+ jest.spyOn(console, 'log').mockImplementation(() => ({}));
31
+ });
28
32
  httpErrorMiddlewareCallsNextWithErr('Error', new Error('This is an error'));
29
33
  httpErrorMiddlewareCallsNextWithErr('IBasicError', {
30
34
  error: 'basic error',
@@ -1 +1 @@
1
- {"version":3,"file":"httpErrorMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/error/httpErrorMiddleware.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;;;;;AAExE,8DAA+C;AAC/C,6CAA8D;AAE9D,+DAA4D;AAC5D,2CAIqB;AAErB,MAAM,mCAAmC,GACxC,IAAA,4BAAgB,EAAC,yCAAmB,CAAC,CAAC;AAEvC,MAAM,uCAAuC,GAC5C,IAAA,gCAAoB,EAAC,yCAAmB,CAAC,CAAC;AAE3C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,mCAAmC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE5E,mCAAmC,CAAC,aAAa,EAAE;QAClD,KAAK,EAAE,aAAa;KACpB,CAAC,CAAC;IAEH,mCAAmC,CAAC,cAAc,EAAE;QACnD,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,GAAG;KACf,CAAC,CAAC;IAEH,mCAAmC,CAAC,gBAAgB,EAAE;QACrD,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,UAAU;KACjB,CAAC,CAAC;IAEH,mCAAmC,CAAC,iBAAiB,EAAE;QACtD,oBAAoB,EAAE,KAAK;KAC3B,CAAC,CAAC;IAEH,uCAAuC,CACtC,0BAA0B,EAC1B,IAAA,qBAAoB,EAAC,GAAG,EAAE,aAAa,CAAC,EACxC,GAAG,CACH,CAAC;IAEF,uCAAuC,CACtC,YAAY,EACZ,IAAI,wBAAU,CAAC,aAAa,CAAC,EAC7B,GAAG,CACH,CAAC;IAEF,uCAAuC,CACtC,qBAAqB,EACrB,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,EACzC,GAAG,CACH,CAAC;IAEF,IAAA,oCAAwB,EACvB,yCAAmB,EACnB,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"httpErrorMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/error/httpErrorMiddleware.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;;;;;AAExE,8DAA+C;AAC/C,6CAA8D;AAE9D,+DAA4D;AAC5D,2CAIqB;AAErB,MAAM,mCAAmC,GACxC,IAAA,4BAAgB,EAAC,yCAAmB,CAAC,CAAC;AAEvC,MAAM,uCAAuC,GAC5C,IAAA,gCAAoB,EAAC,yCAAmB,CAAC,CAAC;AAE3C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,4FAA4F;IAC5F,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,mCAAmC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE5E,mCAAmC,CAAC,aAAa,EAAE;QAClD,KAAK,EAAE,aAAa;KACpB,CAAC,CAAC;IAEH,mCAAmC,CAAC,cAAc,EAAE;QACnD,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,GAAG;KACf,CAAC,CAAC;IAEH,mCAAmC,CAAC,gBAAgB,EAAE;QACrD,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,UAAU;KACjB,CAAC,CAAC;IAEH,mCAAmC,CAAC,iBAAiB,EAAE;QACtD,oBAAoB,EAAE,KAAK;KAC3B,CAAC,CAAC;IAEH,uCAAuC,CACtC,0BAA0B,EAC1B,IAAA,qBAAoB,EAAC,GAAG,EAAE,aAAa,CAAC,EACxC,GAAG,CACH,CAAC;IAEF,uCAAuC,CACtC,YAAY,EACZ,IAAI,wBAAU,CAAC,aAAa,CAAC,EAC7B,GAAG,CACH,CAAC;IAEF,uCAAuC,CACtC,qBAAqB,EACrB,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,EACzC,GAAG,CACH,CAAC;IAEF,IAAA,oCAAwB,EACvB,yCAAmB,EACnB,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -24,6 +24,10 @@ const internalErrorMiddleware_1 = require("./internalErrorMiddleware");
24
24
  const testTools_1 = require("./testTools");
25
25
  const internalErrorMiddlewareCatchesErrWithResponse = (0, testTools_1.catchesErrWithResponse)(internalErrorMiddleware_1.internalErrorMiddleware);
26
26
  describe('internalErrorMiddleware', () => {
27
+ // Necessary since the consolveOverride is called after the getter for the logger is launced
28
+ beforeAll(() => {
29
+ jest.spyOn(console, 'log').mockImplementation(() => ({}));
30
+ });
27
31
  internalErrorMiddlewareCatchesErrWithResponse('ITxLegacyError', {
28
32
  data: 'tx could not be processed',
29
33
  cause: 'unknown',
@@ -1 +1 @@
1
- {"version":3,"file":"internalErrorMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/error/internalErrorMiddleware.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;;;;;AAExE,6CAA8D;AAC9D,8DAA+C;AAE/C,uEAAoE;AACpE,2CAA+E;AAE/E,MAAM,6CAA6C,GAAG,IAAA,kCAAsB,EAC3E,iDAAuB,CACvB,CAAC;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACxC,6CAA6C,CAC5C,gBAAgB,EAChB;QACC,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,UAAU;KACjB,EACD,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,aAAa,EACb;QACC,KAAK,EAAE,aAAa;KACpB,EACD,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,cAAc,EACd;QACC,KAAK,EAAE,gCAAgC;QACvC,UAAU,EAAE,GAAG;KACf,EACD,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,OAAO,EACP,IAAI,KAAK,CAAC,kBAAkB,CAAC,EAC7B,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,YAAY,EACZ,IAAI,wBAAU,CAAC,aAAa,CAAC,EAC7B,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,qBAAqB,EACrB,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,EACzC,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,0BAA0B,EAC1B,IAAA,qBAAoB,EAAC,GAAG,EAAE,aAAa,CAAC,EACxC,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,QAAQ,EACR,OAAO,EACP,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,MAAM,EACN,IAAI,EACJ,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,WAAW,EACX,SAAS,EACT,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,IAAI,EACJ,CAAC,CAAC,EACF,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,eAAe,EACf,EAAE,OAAO,EAAE,uBAAuB,EAAE,EACpC,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,IAAA,oCAAwB,EAAC,iDAAuB,EAAE;QACjD,EAAE,GAAG,EAAE,qBAAqB,EAAE;KAC9B,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"internalErrorMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/error/internalErrorMiddleware.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;;;;;AAExE,6CAA8D;AAC9D,8DAA+C;AAE/C,uEAAoE;AACpE,2CAA+E;AAE/E,MAAM,6CAA6C,GAAG,IAAA,kCAAsB,EAC3E,iDAAuB,CACvB,CAAC;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACxC,4FAA4F;IAC5F,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,6CAA6C,CAC5C,gBAAgB,EAChB;QACC,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,UAAU;KACjB,EACD,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,aAAa,EACb;QACC,KAAK,EAAE,aAAa;KACpB,EACD,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,cAAc,EACd;QACC,KAAK,EAAE,gCAAgC;QACvC,UAAU,EAAE,GAAG;KACf,EACD,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,OAAO,EACP,IAAI,KAAK,CAAC,kBAAkB,CAAC,EAC7B,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,YAAY,EACZ,IAAI,wBAAU,CAAC,aAAa,CAAC,EAC7B,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,qBAAqB,EACrB,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,EACzC,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,0BAA0B,EAC1B,IAAA,qBAAoB,EAAC,GAAG,EAAE,aAAa,CAAC,EACxC,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,QAAQ,EACR,OAAO,EACP,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,MAAM,EACN,IAAI,EACJ,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,WAAW,EACX,SAAS,EACT,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,IAAI,EACJ,CAAC,CAAC,EACF,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,6CAA6C,CAC5C,eAAe,EACf,EAAE,OAAO,EAAE,uBAAuB,EAAE,EACpC,GAAG,EACH,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,IAAA,oCAAwB,EAAC,iDAAuB,EAAE;QACjD,EAAE,GAAG,EAAE,qBAAqB,EAAE;KAC9B,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -25,6 +25,10 @@ const testTools_1 = require("./testTools");
25
25
  const legacyErrorMiddlewareCallsNextWithErr = (0, testTools_1.callsNextWithErr)(legacyErrorMiddleware_1.legacyErrorMiddleware);
26
26
  const legacyErrorMiddlewareCatchesErrWithResponse = (0, testTools_1.catchesErrWithResponse)(legacyErrorMiddleware_1.legacyErrorMiddleware);
27
27
  describe('legacyErrorMiddleware', () => {
28
+ // Necessary since the consolveOverride is called after the getter for the logger is launced
29
+ beforeAll(() => {
30
+ jest.spyOn(console, 'log').mockImplementation(() => ({}));
31
+ });
28
32
  legacyErrorMiddlewareCallsNextWithErr('Error', new Error('This is an error'));
29
33
  legacyErrorMiddlewareCallsNextWithErr('BadRequest', new http_errors_1.BadRequest('bad request'));
30
34
  legacyErrorMiddlewareCallsNextWithErr('InternalServerError (http-error which extends Error)', new http_errors_1.InternalServerError('internal error'));
@@ -1 +1 @@
1
- {"version":3,"file":"legacyErrorMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/error/legacyErrorMiddleware.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;;;;;AAExE,6CAA8D;AAC9D,8DAA+C;AAE/C,mEAAgE;AAChE,2CAIqB;AAErB,MAAM,qCAAqC,GAAG,IAAA,4BAAgB,EAC7D,6CAAqB,CACrB,CAAC;AAEF,MAAM,2CAA2C,GAAG,IAAA,kCAAsB,EACzE,6CAAqB,CACrB,CAAC;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACtC,qCAAqC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE9E,qCAAqC,CACpC,YAAY,EACZ,IAAI,wBAAU,CAAC,aAAa,CAAC,CAC7B,CAAC;IAEF,qCAAqC,CACpC,sDAAsD,EACtD,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,qCAAqC,CAAC,iBAAiB,EAAE;QACxD,oBAAoB,EAAE,MAAM;KAC5B,CAAC,CAAC;IAEH,2CAA2C;IAC1C,sEAAsE;IACtE,6CAA6C;IAC7C,4CAA4C,EAC5C;QACC,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,UAAU;KACjB,EACD,GAAG,EACH,IAAI,iCAAmB,CAAC,UAAU,CAAC,CACnC,CAAC;IAEF,2CAA2C,CAC1C,aAAa,EACb;QACC,KAAK,EAAE,aAAa;KACpB,EACD,GAAG,EACH,IAAI,iCAAmB,CAAC,aAAa,CAAC,CACtC,CAAC;IAEF,2CAA2C,CAC1C,cAAc,EACd;QACC,KAAK,EAAE,gCAAgC;QACvC,UAAU,EAAE,GAAG;KACf,EACD,GAAG,EACH,IAAA,qBAAoB,EAAC,GAAG,EAAE,gCAAgC,CAAC,CAC3D,CAAC;IAEF,IAAA,oCAAwB,EAAC,6CAAqB,EAAE;QAC/C,KAAK,EAAE,gCAAgC;QACvC,UAAU,EAAE,GAAG;KACf,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"legacyErrorMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/error/legacyErrorMiddleware.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;;;;;AAExE,6CAA8D;AAC9D,8DAA+C;AAE/C,mEAAgE;AAChE,2CAIqB;AAErB,MAAM,qCAAqC,GAAG,IAAA,4BAAgB,EAC7D,6CAAqB,CACrB,CAAC;AAEF,MAAM,2CAA2C,GAAG,IAAA,kCAAsB,EACzE,6CAAqB,CACrB,CAAC;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACtC,4FAA4F;IAC5F,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,qCAAqC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE9E,qCAAqC,CACpC,YAAY,EACZ,IAAI,wBAAU,CAAC,aAAa,CAAC,CAC7B,CAAC;IAEF,qCAAqC,CACpC,sDAAsD,EACtD,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,qCAAqC,CAAC,iBAAiB,EAAE;QACxD,oBAAoB,EAAE,MAAM;KAC5B,CAAC,CAAC;IAEH,2CAA2C;IAC1C,sEAAsE;IACtE,6CAA6C;IAC7C,4CAA4C,EAC5C;QACC,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,UAAU;KACjB,EACD,GAAG,EACH,IAAI,iCAAmB,CAAC,UAAU,CAAC,CACnC,CAAC;IAEF,2CAA2C,CAC1C,aAAa,EACb;QACC,KAAK,EAAE,aAAa;KACpB,EACD,GAAG,EACH,IAAI,iCAAmB,CAAC,aAAa,CAAC,CACtC,CAAC;IAEF,2CAA2C,CAC1C,cAAc,EACd;QACC,KAAK,EAAE,gCAAgC;QACvC,UAAU,EAAE,GAAG;KACf,EACD,GAAG,EACH,IAAA,qBAAoB,EAAC,GAAG,EAAE,gCAAgC,CAAC,CAC3D,CAAC;IAEF,IAAA,oCAAwB,EAAC,6CAAqB,EAAE;QAC/C,KAAK,EAAE,gCAAgC;QACvC,UAAU,EAAE,GAAG;KACf,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -21,6 +21,10 @@ const txErrorMiddleware_1 = require("./txErrorMiddleware");
21
21
  const txErrorMiddlewareCallsNextWithErr = (0, testTools_1.callsNextWithErr)(txErrorMiddleware_1.txErrorMiddleware);
22
22
  const txErrorMiddlewareCatchesErrWithResponse = (0, testTools_1.catchesErrWithResponse)(txErrorMiddleware_1.txErrorMiddleware);
23
23
  describe('txErrorMiddleware', () => {
24
+ // Necessary since the consolveOverride is called after the getter for the logger is launced
25
+ beforeAll(() => {
26
+ jest.spyOn(console, 'log').mockImplementation(() => ({}));
27
+ });
24
28
  txErrorMiddlewareCallsNextWithErr('Error', new Error('This is an error'));
25
29
  txErrorMiddlewareCallsNextWithErr('BadRequest', new http_errors_1.BadRequest('bad request'));
26
30
  txErrorMiddlewareCallsNextWithErr('InternalServerError (http-error which extends Error)', new http_errors_1.InternalServerError('internal error'));
@@ -1 +1 @@
1
- {"version":3,"file":"txErrorMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/error/txErrorMiddleware.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;;AAExE,6CAA8D;AAE9D,2CAIqB;AACrB,2DAAwD;AAExD,MAAM,iCAAiC,GAAG,IAAA,4BAAgB,EAAC,qCAAiB,CAAC,CAAC;AAE9E,MAAM,uCAAuC,GAC5C,IAAA,kCAAsB,EAAC,qCAAiB,CAAC,CAAC;AAE3C,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,iCAAiC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE1E,iCAAiC,CAChC,YAAY,EACZ,IAAI,wBAAU,CAAC,aAAa,CAAC,CAC7B,CAAC;IAEF,iCAAiC,CAChC,sDAAsD,EACtD,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,iCAAiC,CAAC,iBAAiB,EAAE;QACpD,GAAG,EAAE,UAAU;KACf,CAAC,CAAC;IAEH,iCAAiC,CAAC,cAAc,EAAE;QACjD,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,GAAG;KACf,CAAC,CAAC;IAEH,iCAAiC,CAAC,aAAa,EAAE;QAChD,KAAK,EAAE,aAAa;KACpB,CAAC,CAAC;IAEH,uCAAuC,CACtC,4BAA4B,EAC5B;QACC,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,WAAW;KAClB,EACD,GAAG,EACH;QACC,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,WAAW;KAClB,CACD,CAAC;IAEF,uCAAuC,CACtC,+BAA+B,EAC/B;QACC,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,WAAW;KAClB,EACD,GAAG,EACH;QACC,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,WAAW;KAClB,CACD,CAAC;IAEF,IAAA,oCAAwB,EAAC,qCAAiB,EAAE;QAC3C,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,WAAW;KAClB,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"txErrorMiddleware.spec.js","sourceRoot":"","sources":["../../../../src/middleware/error/txErrorMiddleware.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;;AAExE,6CAA8D;AAE9D,2CAIqB;AACrB,2DAAwD;AAExD,MAAM,iCAAiC,GAAG,IAAA,4BAAgB,EAAC,qCAAiB,CAAC,CAAC;AAE9E,MAAM,uCAAuC,GAC5C,IAAA,kCAAsB,EAAC,qCAAiB,CAAC,CAAC;AAE3C,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,4FAA4F;IAC5F,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,iCAAiC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE1E,iCAAiC,CAChC,YAAY,EACZ,IAAI,wBAAU,CAAC,aAAa,CAAC,CAC7B,CAAC;IAEF,iCAAiC,CAChC,sDAAsD,EACtD,IAAI,iCAAmB,CAAC,gBAAgB,CAAC,CACzC,CAAC;IAEF,iCAAiC,CAAC,iBAAiB,EAAE;QACpD,GAAG,EAAE,UAAU;KACf,CAAC,CAAC;IAEH,iCAAiC,CAAC,cAAc,EAAE;QACjD,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,GAAG;KACf,CAAC,CAAC;IAEH,iCAAiC,CAAC,aAAa,EAAE;QAChD,KAAK,EAAE,aAAa;KACpB,CAAC,CAAC;IAEH,uCAAuC,CACtC,4BAA4B,EAC5B;QACC,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,WAAW;KAClB,EACD,GAAG,EACH;QACC,IAAI,EAAE,GAAG;QACT,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,WAAW;KAClB,CACD,CAAC;IAEF,uCAAuC,CACtC,+BAA+B,EAC/B;QACC,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,WAAW;KAClB,EACD,GAAG,EACH;QACC,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,WAAW;KAClB,CACD,CAAC;IAEF,IAAA,oCAAwB,EAAC,qCAAiB,EAAE;QAC3C,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,WAAW;KAClB,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,5 +1,47 @@
1
1
  import { INodeTransactionPool } from '../../types/responses';
2
2
  import { AbstractService } from '../AbstractService';
3
3
  export declare class NodeTransactionPoolService extends AbstractService {
4
- fetchTransactionPool(): Promise<INodeTransactionPool>;
4
+ /**
5
+ * Fetch the transaction pool, and provide relevant extrinsic information.
6
+ *
7
+ * @param includeFee Whether or not to include the fee's and priority of a extrinsic
8
+ * in the transaction pool.
9
+ */
10
+ fetchTransactionPool(includeFee: boolean): Promise<INodeTransactionPool>;
11
+ /**
12
+ * Extract all information related to the extrinsic, and compute it's
13
+ * priority in the transaction pool.
14
+ *
15
+ * @param ext Extrinsic we want to provide all the information for.
16
+ */
17
+ private extractExtrinsicInfo;
18
+ /**
19
+ * We calculate the priority of an extrinsic in the transaction pool depending
20
+ * on its dispatch class, ie. 'normal', 'operational', 'mandatory'.
21
+ *
22
+ * The following formula can summarize the below logic.
23
+ * tip * (max_block_{weight|length} / bounded_{weight|length})
24
+ *
25
+ * Please reference this link for more information
26
+ * ref: https://github.com/paritytech/substrate/blob/fe5bf49290d166b9552f65e751d46ec592173ebd/frame/transaction-payment/src/lib.rs#L610
27
+ *
28
+ * @param ext
29
+ * @param c
30
+ * @param weight
31
+ */
32
+ private computeExtPriority;
33
+ /**
34
+ * Explicitly define the type of class an extrinsic is.
35
+ *
36
+ * @param c DispatchClass of an extrinsic
37
+ */
38
+ private defineDispatchClassType;
39
+ /**
40
+ * Multiply a value (tip) by its maxTxPerBlock multiplier.
41
+ * ref: https://github.com/paritytech/substrate/blob/fe5bf49290d166b9552f65e751d46ec592173ebd/frame/transaction-payment/src/lib.rs#L633
42
+ *
43
+ * @param val Value to be multiplied by the maxTxPerBlock. Usually a tip.
44
+ * @param maxTxPerBlock The minimum value between maxTxPerBlockWeight and maxTxPerBlockLength
45
+ */
46
+ private maxReward;
5
47
  }
@@ -14,23 +14,146 @@
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.NodeTransactionPoolService = void 0;
22
+ const bn_js_1 = __importDefault(require("bn.js"));
19
23
  const AbstractService_1 = require("../AbstractService");
20
24
  class NodeTransactionPoolService extends AbstractService_1.AbstractService {
21
- async fetchTransactionPool() {
25
+ /**
26
+ * Fetch the transaction pool, and provide relevant extrinsic information.
27
+ *
28
+ * @param includeFee Whether or not to include the fee's and priority of a extrinsic
29
+ * in the transaction pool.
30
+ */
31
+ async fetchTransactionPool(includeFee) {
22
32
  const { api } = this;
23
33
  const extrinsics = await api.rpc.author.pendingExtrinsics();
24
- const pool = extrinsics.map((ext) => {
34
+ if (includeFee) {
35
+ const pool = await Promise.all(extrinsics.map((ext) => this.extractExtrinsicInfo(ext)));
25
36
  return {
26
- hash: ext.hash.toHex(),
27
- encodedExtrinsic: ext.toHex(),
37
+ pool,
28
38
  };
29
- });
39
+ }
40
+ else {
41
+ return {
42
+ pool: extrinsics.map((ext) => {
43
+ return {
44
+ hash: ext.hash.toHex(),
45
+ encodedExtrinsic: ext.toHex(),
46
+ };
47
+ }),
48
+ };
49
+ }
50
+ }
51
+ /**
52
+ * Extract all information related to the extrinsic, and compute it's
53
+ * priority in the transaction pool.
54
+ *
55
+ * @param ext Extrinsic we want to provide all the information for.
56
+ */
57
+ async extractExtrinsicInfo(ext) {
58
+ const { api } = this;
59
+ const { hash, tip } = ext;
60
+ const { class: c, partialFee, weight, } = await api.rpc.payment.queryInfo(ext.toHex());
61
+ const priority = await this.computeExtPriority(ext, c, weight);
30
62
  return {
31
- pool,
63
+ hash: hash.toHex(),
64
+ encodedExtrinsic: ext.toHex(),
65
+ tip: tip.toString(),
66
+ priority: priority,
67
+ partialFee: partialFee,
32
68
  };
33
69
  }
70
+ /**
71
+ * We calculate the priority of an extrinsic in the transaction pool depending
72
+ * on its dispatch class, ie. 'normal', 'operational', 'mandatory'.
73
+ *
74
+ * The following formula can summarize the below logic.
75
+ * tip * (max_block_{weight|length} / bounded_{weight|length})
76
+ *
77
+ * Please reference this link for more information
78
+ * ref: https://github.com/paritytech/substrate/blob/fe5bf49290d166b9552f65e751d46ec592173ebd/frame/transaction-payment/src/lib.rs#L610
79
+ *
80
+ * @param ext
81
+ * @param c
82
+ * @param weight
83
+ */
84
+ async computeExtPriority(ext, dispatchClass, weight) {
85
+ const { api } = this;
86
+ const { tip, encodedLength: len } = ext;
87
+ const BN_ONE = new bn_js_1.default(1);
88
+ const sanitizedClass = this.defineDispatchClassType(dispatchClass);
89
+ const maxBlockWeight = api.consts.system.blockWeights.maxBlock;
90
+ const maxLength = api.consts.system.blockLength.max[sanitizedClass];
91
+ const boundedWeight = bn_js_1.default.min(bn_js_1.default.max(weight.toBn(), BN_ONE), maxBlockWeight);
92
+ const boundedLength = bn_js_1.default.min(bn_js_1.default.max(new bn_js_1.default(len), BN_ONE), maxLength);
93
+ const maxTxPerBlockWeight = maxBlockWeight.div(boundedWeight);
94
+ const maxTxPerBlockLength = maxLength.div(boundedLength);
95
+ const maxTxPerBlock = bn_js_1.default.min(maxTxPerBlockWeight, maxTxPerBlockLength);
96
+ const saturatedTip = tip.toBn().add(BN_ONE);
97
+ const scaledTip = this.maxReward(saturatedTip, maxTxPerBlock);
98
+ let priority;
99
+ switch (sanitizedClass) {
100
+ case 'normal': {
101
+ priority = scaledTip.toString();
102
+ break;
103
+ }
104
+ case 'mandatory': {
105
+ priority = scaledTip.toString();
106
+ break;
107
+ }
108
+ case 'operational': {
109
+ const { inclusionFee } = await api.rpc.payment.queryFeeDetails(ext.toHex());
110
+ const { operationalFeeMultiplier } = api.consts.transactionPayment;
111
+ if (inclusionFee.isNone) {
112
+ // This is an unsigned_extrinsic, and does not have priority
113
+ priority = '0';
114
+ break;
115
+ }
116
+ const { baseFee, lenFee, adjustedWeightFee } = inclusionFee.unwrap();
117
+ const computedInclusionFee = baseFee.add(lenFee).add(adjustedWeightFee);
118
+ const finalFee = computedInclusionFee.add(tip.toBn());
119
+ const virtualTip = finalFee.mul(operationalFeeMultiplier);
120
+ const scaledVirtualTip = this.maxReward(virtualTip, maxTxPerBlock);
121
+ priority = scaledTip.add(scaledVirtualTip).toString();
122
+ break;
123
+ }
124
+ default: {
125
+ priority = '0';
126
+ break;
127
+ }
128
+ }
129
+ return priority;
130
+ }
131
+ /**
132
+ * Explicitly define the type of class an extrinsic is.
133
+ *
134
+ * @param c DispatchClass of an extrinsic
135
+ */
136
+ defineDispatchClassType(c) {
137
+ const cString = c.type.toLowerCase();
138
+ if (cString === 'normal')
139
+ return 'normal';
140
+ if (cString === 'mandatory')
141
+ return 'mandatory';
142
+ if (cString === 'operational')
143
+ return 'operational';
144
+ // This will never be reached, but is here to satisfy the TS compiler.
145
+ return 'normal';
146
+ }
147
+ /**
148
+ * Multiply a value (tip) by its maxTxPerBlock multiplier.
149
+ * ref: https://github.com/paritytech/substrate/blob/fe5bf49290d166b9552f65e751d46ec592173ebd/frame/transaction-payment/src/lib.rs#L633
150
+ *
151
+ * @param val Value to be multiplied by the maxTxPerBlock. Usually a tip.
152
+ * @param maxTxPerBlock The minimum value between maxTxPerBlockWeight and maxTxPerBlockLength
153
+ */
154
+ maxReward(val, maxTxPerBlock) {
155
+ return val.mul(maxTxPerBlock);
156
+ }
34
157
  }
35
158
  exports.NodeTransactionPoolService = NodeTransactionPoolService;
36
159
  //# sourceMappingURL=NodeTransactionPoolService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeTransactionPoolService.js","sourceRoot":"","sources":["../../../../src/services/node/NodeTransactionPoolService.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,wDAAqD;AAErD,MAAa,0BAA2B,SAAQ,iCAAe;IAC9D,KAAK,CAAC,oBAAoB;QACzB,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAErB,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAE5D,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACnC,OAAO;gBACN,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtB,gBAAgB,EAAE,GAAG,CAAC,KAAK,EAAE;aAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO;YACN,IAAI;SACJ,CAAC;IACH,CAAC;CACD;AAjBD,gEAiBC"}
1
+ {"version":3,"file":"NodeTransactionPoolService.js","sourceRoot":"","sources":["../../../../src/services/node/NodeTransactionPoolService.ts"],"names":[],"mappings":"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"}
@@ -21,24 +21,51 @@ Object.defineProperty(exports, "__esModule", { value: true });
21
21
  /* eslint-disable @typescript-eslint/no-explicit-any */
22
22
  /* eslint-disable @typescript-eslint/no-unsafe-member-access */
23
23
  const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers");
24
+ const registries_1 = require("../../test-helpers/registries");
24
25
  const mock_1 = require("../test-helpers/mock");
25
26
  const transactionPool_json_1 = __importDefault(require("../test-helpers/responses/node/transactionPool.json"));
27
+ const transactionPoolWithTip_json_1 = __importDefault(require("../test-helpers/responses/node/transactionPoolWithTip.json"));
28
+ const transactionPoolWithTipOperational_json_1 = __importDefault(require("../test-helpers/responses/node/transactionPoolWithTipOperational.json"));
26
29
  const _1 = require(".");
27
30
  const nodeTranstionPoolService = new _1.NodeTransactionPoolService(mock_1.defaultMockApi);
28
31
  describe('NodeTransactionPoolService', () => {
29
32
  describe('fetchTransactionPool', () => {
30
33
  it('works when ApiPromiseWorks (no txs)', async () => {
31
- expect((0, sanitizeNumbers_1.sanitizeNumbers)(await nodeTranstionPoolService
32
- .fetchTransactionPool())).toStrictEqual({ pool: [] });
34
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await nodeTranstionPoolService.fetchTransactionPool(
35
+ // blockHash789629
36
+ false))).toStrictEqual({ pool: [] });
33
37
  });
34
38
  it('works when ApiPromiseWorks (1 tx)', async () => {
35
39
  const ext = mock_1.defaultMockApi.createType('Extrinsic', '0x4d0284d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d015c41b5e704d89787e5208b863fa815a146a19ade0cd95f2378815d72c52b2644c05f0dd6be3bf219b9963ac9ddeec8d379c0cd1d86d8f33f2c1d1a8006efc180050000001a00040500e659a7a1628cdd93febc04a4e0646ea20e9f5f0ce097d9a05290d4a9e054df4e0f0040767b10c403');
36
40
  const pool = mock_1.defaultMockApi.createType('Vec<Extrinsic>', [ext]);
37
41
  mock_1.defaultMockApi.rpc.author.pendingExtrinsics = () => Promise.resolve().then(() => pool);
38
- expect((0, sanitizeNumbers_1.sanitizeNumbers)(await nodeTranstionPoolService
39
- .fetchTransactionPool())).toStrictEqual(transactionPool_json_1.default);
42
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await nodeTranstionPoolService.fetchTransactionPool(
43
+ // blockHash789629
44
+ false))).toStrictEqual(transactionPool_json_1.default);
40
45
  mock_1.defaultMockApi.rpc.author.pendingExtrinsics = mock_1.pendingExtrinsics;
41
46
  });
47
+ it('works when query param `includeFee` is set to true for normal extrinsics', async () => {
48
+ // This test does not use the same metadata in defaultMockApi. It changes it to v9190,
49
+ // and sets it back to the default value after.
50
+ const normalExt = registries_1.polkadotRegistryV9190.createType('Extrinsic', '0x4d028400d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d0196a6cd1652fc83c449884f67e8f444587b69c5874512f1d746ff6f062a097b2acedfe8d2e07915b4c93cc1c3b48a16ebccc1db8eb810146373ba53c9f42ab48e4500000284d717050300e281b7ec09fb8420ca7ba3fbd627fbe203ff04b2ba0777ae1d8a6942257af0230700e8764817');
51
+ const pool = registries_1.polkadotRegistryV9190.createType('Vec<Extrinsic>', [
52
+ normalExt,
53
+ ]);
54
+ mock_1.defaultMockApi.rpc.author.pendingExtrinsics = () => Promise.resolve().then(() => pool);
55
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await nodeTranstionPoolService.fetchTransactionPool(true))).toStrictEqual(transactionPoolWithTip_json_1.default);
56
+ mock_1.defaultMockApi.rpc.author.pendingExtrinsics = mock_1.pendingExtrinsics;
57
+ });
58
+ it('works when query param `includeFee` is set to true for operational extrinsics', async () => {
59
+ const operationalExt = registries_1.polkadotRegistryV9190.createType('Extrinsic', '0x350284004adf51a47b72795366d52285e329229c836ea7bbfe139dbe8fa0700c4f86fc5601fc44dcd1994c111671b3577b02e391be8aff10f7ccf766f3189859ea343db041779a67f9357cba0ba051f83d63e45e7a88b5e2ca642181592052acd9f4ccc8821501c107000f03f2af187bbc8a4a2b5a28c2a3c2d85bf7e5b1700cbf1207a8e4c1eb7d8e7e4037350301');
60
+ const pool = registries_1.polkadotRegistryV9190.createType('Vec<Extrinsic>', [
61
+ operationalExt,
62
+ ]);
63
+ mock_1.defaultMockApi.rpc.author.pendingExtrinsics = () => Promise.resolve().then(() => pool);
64
+ mock_1.defaultMockApi.rpc.payment.queryInfo = mock_1.queryInfoCouncilVote;
65
+ expect((0, sanitizeNumbers_1.sanitizeNumbers)(await nodeTranstionPoolService.fetchTransactionPool(true))).toStrictEqual(transactionPoolWithTipOperational_json_1.default);
66
+ mock_1.defaultMockApi.rpc.author.pendingExtrinsics = mock_1.pendingExtrinsics;
67
+ mock_1.defaultMockApi.rpc.payment.queryInfo = mock_1.queryInfoBalancesTransfer;
68
+ });
42
69
  });
43
70
  });
44
71
  //# sourceMappingURL=NodeTransactionPoolService.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeTransactionPoolService.spec.js","sourceRoot":"","sources":["../../../../src/services/node/NodeTransactionPoolService.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;;;;;AAExE,uDAAuD;AACvD,+DAA+D;AAC/D,oEAAiE;AACjE,+CAI8B;AAC9B,+GAA0F;AAC1F,wBAA+C;AAE/C,MAAM,wBAAwB,GAAG,IAAI,6BAA0B,CAAC,qBAAc,CAAC,CAAC;AAEhF,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC3C,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,CACL,IAAA,iCAAe,EACd,MAAM,wBAAwB;iBAC5B,oBAAoB,EAEnB,CACH,CACD,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,GAAG,GAAG,qBAAc,CAAC,UAAU,CACpC,WAAW,EACX,8SAA8S,CAC9S,CAAC;YAEF,MAAM,IAAI,GAAG,qBAAc,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/D,qBAAc,CAAC,GAAG,CAAC,MAAc,CAAC,iBAAiB,GAAG,GAAG,EAAE,CAC3D,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAEpC,MAAM,CACL,IAAA,iCAAe,EACd,MAAM,wBAAwB;iBAC5B,oBAAoB,EAEnB,CACH,CACD,CAAC,aAAa,CAAC,8BAAuB,CAAC,CAAC;YAExC,qBAAc,CAAC,GAAG,CAAC,MAAc,CAAC,iBAAiB,GAAG,wBAAiB,CAAC;QAC1E,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"NodeTransactionPoolService.spec.js","sourceRoot":"","sources":["../../../../src/services/node/NodeTransactionPoolService.spec.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,26 @@
1
+ import { Balance } from '@polkadot/types/interfaces';
1
2
  interface IPoolExtrinsic {
3
+ /**
4
+ * H256 hash of the extrinsic
5
+ */
2
6
  hash: string;
7
+ /**
8
+ * SCALE encoded extrinsic
9
+ */
3
10
  encodedExtrinsic: string;
11
+ /**
12
+ * The tip within an extrinsic. Available when the `tip` query parameter
13
+ * for `/node/transaction-pool` is set to true.
14
+ */
15
+ tip?: string;
16
+ /**
17
+ * PartialFee for a transaction
18
+ */
19
+ partialFee?: Balance;
20
+ /**
21
+ * Priority of the transaction. Calculated by tip * (max_block_{weight|length} / bounded_{weight|length})
22
+ */
23
+ priority?: string;
4
24
  }
5
25
  export interface INodeTransactionPool {
6
26
  pool: IPoolExtrinsic[];
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "12.0.1",
2
+ "version": "12.1.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",
@@ -35,7 +35,7 @@
35
35
  "start:log-rpc": "yarn run build && NODE_ENV=test yarn run main ",
36
36
  "dev": "tsc-watch --onSuccess \"yarn run main\"",
37
37
  "test": "NODE_ENV=test substrate-exec-jest --detectOpenHandles",
38
- "test:watch": "substrate-exec-jest --watch",
38
+ "test:watch": "NODE_ENV=test substrate-exec-jest --watch",
39
39
  "test:cov": "NODE_ENV=test substrate-exec-jest --detectOpenHandles --coverage",
40
40
  "lint:e2e-tests": "cd e2e-tests && substrate-dev-run-lint",
41
41
  "build:e2e-tests": "substrate-exec-tsc --project e2e-tests/tsconfig.json",
@@ -54,8 +54,8 @@
54
54
  "update-pjs-deps": "substrate-update-pjs-deps && yarn"
55
55
  },
56
56
  "dependencies": {
57
- "@polkadot/api": "8.5.1",
58
- "@polkadot/util-crypto": "9.2.1",
57
+ "@polkadot/api": "^8.7.1",
58
+ "@polkadot/util-crypto": "^9.4.1",
59
59
  "@substrate/calc": "^0.2.8",
60
60
  "argparse": "^2.0.1",
61
61
  "confmgr": "1.0.7",