UNPKG

2.52 kBSource Map (JSON)View Raw
1{"version":3,"file":"block-tracker-inspector.js","sourceRoot":"","sources":["../src/block-tracker-inspector.ts"],"names":[],"mappings":";;;AACA,qDAA2E;AAI3E,MAAM,sBAAsB,GAAa;IACvC,0BAA0B;IAC1B,2BAA2B;CAC5B,CAAC;AAMF,wEAAwE;AACxE,SAAgB,qCAAqC,CAAC,EACpD,YAAY,GAC2B;IACvC,OAAO,uCAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;;QACpD,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAChD,OAAO,IAAI,EAAE,CAAC;SACf;QACD,gDAAgD;QAChD,MAAM,IAAI,EAAE,CAAC;QACb,wCAAwC;QACxC,IAAI,QAAC,GAAG,CAAC,MAAM,0CAAE,WAAW,CAAA,EAAE;YAC5B,OAAO,SAAS,CAAC;SAClB;QACD,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;YAC9C,mEAAmE;YACnE,MAAM,WAAW,GAAW,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACxE,4FAA4F;YAC5F,MAAM,kBAAkB,GAAW,MAAM,CAAC,QAAQ,CAChD,YAAY,CAAC,eAAe,EAAS,EACrC,EAAE,CACH,CAAC;YACF,IAAI,WAAW,GAAG,kBAAkB,EAAE;gBACpC,MAAM,YAAY,CAAC,mBAAmB,EAAE,CAAC;aAC1C;SACF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AA3BD,sFA2BC","sourcesContent":["import { PollingBlockTracker } from 'eth-block-tracker';\nimport { createAsyncMiddleware, JsonRpcMiddleware } from 'json-rpc-engine';\n\nimport { Block } from './utils/cache';\n\nconst futureBlockRefRequests: string[] = [\n 'eth_getTransactionByHash',\n 'eth_getTransactionReceipt',\n];\n\ninterface BlockTrackerInspectorMiddlewareOptions {\n blockTracker: PollingBlockTracker;\n}\n\n// inspect if response contains a block ref higher than our latest block\nexport function createBlockTrackerInspectorMiddleware({\n blockTracker,\n}: BlockTrackerInspectorMiddlewareOptions): JsonRpcMiddleware<string[], Block> {\n return createAsyncMiddleware(async (req, res, next) => {\n if (!futureBlockRefRequests.includes(req.method)) {\n return next();\n }\n // eslint-disable-next-line node/callback-return\n await next();\n // abort if no result or no block number\n if (!res.result?.blockNumber) {\n return undefined;\n }\n if (typeof res.result.blockNumber === 'string') {\n // if number is higher, suggest block-tracker check for a new block\n const blockNumber: number = Number.parseInt(res.result.blockNumber, 16);\n // Typecast: If getCurrentBlock returns null, currentBlockNumber will be NaN, which is fine.\n const currentBlockNumber: number = Number.parseInt(\n blockTracker.getCurrentBlock() as any,\n 16,\n );\n if (blockNumber > currentBlockNumber) {\n await blockTracker.checkForLatestBlock();\n }\n }\n return undefined;\n });\n}\n"]}
\No newline at end of file