UNPKG

2.33 kBSource Map (JSON)View Raw
1{"version":3,"file":"block-ref-rewrite.js","sourceRoot":"","sources":["../src/block-ref-rewrite.ts"],"names":[],"mappings":";;;AACA,qDAA2E;AAC3E,yCAA0D;AAM1D,SAAgB,+BAA+B,CAAC,EAC9C,YAAY,MACwB,EAAE;IACtC,IAAI,CAAC,YAAY,EAAE;QACjB,MAAM,KAAK,CACT,yEAAyE,CAC1E,CAAC;KACH;IAED,OAAO,uCAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;;QACrD,MAAM,aAAa,GAAuB,0BAAkB,CAAC,GAAG,CAAC,CAAC;QAClE,2CAA2C;QAC3C,IAAI,aAAa,KAAK,SAAS,EAAE;YAC/B,OAAO,IAAI,EAAE,CAAC;SACf;QACD,uBAAuB;QACvB,IAAI,QAAQ,SAAuB,GAAG,CAAC,MAAM,0CAAG,aAAa,CAAC,CAAC;QAC/D,oCAAoC;QACpC,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,QAAQ,GAAG,QAAQ,CAAC;SACrB;QACD,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACzB,OAAO,IAAI,EAAE,CAAC;SACf;QACD,mDAAmD;QACnD,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;QAC9D,IAAI,GAAG,CAAC,MAAM,EAAE;YACd,kDAAkD;YAClD,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,iBAAiB,CAAC;SAC/C;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAhCD,0EAgCC","sourcesContent":["import { PollingBlockTracker } from 'eth-block-tracker';\nimport { createAsyncMiddleware, JsonRpcMiddleware } from 'json-rpc-engine';\nimport { blockTagParamIndex, Block } from './utils/cache';\n\ninterface BlockRefRewriteMiddlewareOptions {\n blockTracker?: PollingBlockTracker;\n}\n\nexport function createBlockRefRewriteMiddleware({\n blockTracker,\n}: BlockRefRewriteMiddlewareOptions = {}): JsonRpcMiddleware<string[], Block> {\n if (!blockTracker) {\n throw Error(\n 'BlockRefRewriteMiddleware - mandatory \"blockTracker\" option is missing.',\n );\n }\n\n return createAsyncMiddleware(async (req, _res, next) => {\n const blockRefIndex: number | undefined = blockTagParamIndex(req);\n // skip if method does not include blockRef\n if (blockRefIndex === undefined) {\n return next();\n }\n // skip if not \"latest\"\n let blockRef: string | undefined = req.params?.[blockRefIndex];\n // omitted blockRef implies \"latest\"\n if (blockRef === undefined) {\n blockRef = 'latest';\n }\n if (blockRef !== 'latest') {\n return next();\n }\n // rewrite blockRef to block-tracker's block number\n const latestBlockNumber = await blockTracker.getLatestBlock();\n if (req.params) {\n // eslint-disable-next-line require-atomic-updates\n req.params[blockRefIndex] = latestBlockNumber;\n }\n return next();\n });\n}\n"]}
\No newline at end of file