@lidofinance/eth-api-providers 0.0.3

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.
package/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # @lidofinance/eth-api-providers
2
+
3
+ Wraps JsonRpcProvider to track requests to RPC.
4
+
5
+ ## Installation
6
+
7
+ `yarn add @lidofinance/eth-api-providers`
8
+
9
+ ## Getting started
10
+
11
+ You just need to pass a few extra parameters to the used JsonRpcProvider, and you will get a patched class.
12
+
13
+ ```ts
14
+ import {
15
+ providerFactory,
16
+ StaticJsonRpcBatchProvider,
17
+ } from '@lidofinance/eth-providers';
18
+ import { trackedJsonRpcProvider } from '@lidofinance/eth-api-providers';
19
+ import { registry } from './metrics';
20
+ import { METRICS_PREFIX } from '../config';
21
+
22
+ export const getStaticRpcBatchProvider = providerFactory(
23
+ trackedJsonRpcProvider({
24
+ prefix: METRICS_PREFIX,
25
+ registry,
26
+ Provider: StaticJsonRpcBatchProvider,
27
+ }),
28
+ );
29
+ ```
package/dist/index.cjs ADDED
@@ -0,0 +1,60 @@
1
+ var $dxMF8$lidofinanceapimetrics = require("@lidofinance/api-metrics");
2
+
3
+ function $parcel$exportWildcard(dest, source) {
4
+ Object.keys(source).forEach(function(key) {
5
+ if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
6
+ return;
7
+ }
8
+
9
+ Object.defineProperty(dest, key, {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return source[key];
13
+ }
14
+ });
15
+ });
16
+
17
+ return dest;
18
+ }
19
+ function $parcel$export(e, n, v, s) {
20
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
21
+ }
22
+ var $49914269bebe5bbd$exports = {};
23
+
24
+ $parcel$export($49914269bebe5bbd$exports, "trackedJsonRpcProvider", () => $49914269bebe5bbd$export$1edad9289b994780);
25
+
26
+ const $49914269bebe5bbd$export$1edad9289b994780 = ({ prefix: prefix , registry: registry , Provider: Provider })=>{
27
+ const { rpcRequestCount: rpcRequestCount , rpcRequestMethods: rpcRequestMethods , rpcResponseTime: rpcResponseTime } = (0, $dxMF8$lidofinanceapimetrics.rpcMetricsFactory)(prefix, registry);
28
+ // @ts-expect-error need to investigate how to fix
29
+ return class extends Provider {
30
+ async send(method, params) {
31
+ const chainId = this._network.chainId;
32
+ const url = this.connection.url;
33
+ const provider = (0, $dxMF8$lidofinanceapimetrics.getProviderLabel)(url);
34
+ rpcRequestCount.labels({
35
+ chainId: chainId,
36
+ provider: provider
37
+ }).inc();
38
+ rpcRequestMethods.labels({
39
+ method: method
40
+ }).inc();
41
+ const responseTime = rpcResponseTime.startTimer();
42
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
43
+ const response = await super.send(method, params);
44
+ responseTime(// Not sure how to get correct status here, but it's probably 2xx, or it throws an error
45
+ {
46
+ chainId: chainId,
47
+ provider: provider,
48
+ status: "2xx"
49
+ });
50
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
51
+ return response;
52
+ }
53
+ };
54
+ };
55
+
56
+
57
+ $parcel$exportWildcard(module.exports, $49914269bebe5bbd$exports);
58
+
59
+
60
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;ACAA;AAUO,MAAM,yCAAsB,GAAG,CAAmC,UACvE,MAAM,CAAA,YACN,QAAQ,CAAA,YACR,QAAQ,CAAA,EAC4B,GAAQ;IAC5C,MAAM,mBAAE,eAAe,CAAA,qBAAE,iBAAiB,CAAA,mBAAE,eAAe,CAAA,EAAE,GAAG,CAAA,GAAA,8CAAiB,CAAA,CAAC,MAAM,EAAE,QAAQ,CAAC;IAEnG,kDAAkD;IAClD,OAAO,cAAc,QAAQ;QAC3B,MAAM,IAAI,CAAC,MAAc,EAAE,MAAiB,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG;YAE/B,MAAM,QAAQ,GAAG,CAAA,GAAA,6CAAgB,CAAA,CAAC,GAAG,CAAC;YACtC,eAAe,CAAC,MAAM,CAAC;yBAAE,OAAO;0BAAE,QAAQ;aAAE,CAAC,CAAC,GAAG,EAAE;YACnD,iBAAiB,CAAC,MAAM,CAAC;wBAAE,MAAM;aAAE,CAAC,CAAC,GAAG,EAAE;YAC1C,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,EAAE;YAEjD,mEAAmE;YACnE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;YAEjD,YAAY,CACV,wFAAwF;YACxF;yBAAE,OAAO;0BAAE,QAAQ;gBAAE,MAAM,EAAE,KAAK;aAAE,CACrC;YAED,+DAA+D;YAC/D,OAAO,QAAQ,CAAA;SAChB;KACF,CAAA;CACF;;ADxCD","sources":["packages/eth/api/providers/src/index.ts","packages/eth/api/providers/src/trackedJsonRpcProvider.ts"],"sourcesContent":["export * from './trackedJsonRpcProvider'\n","import { JsonRpcProvider } from '@ethersproject/providers'\nimport { getProviderLabel, rpcMetricsFactory } from '@lidofinance/api-metrics'\nimport { Registry } from 'prom-client'\n\nexport type TrackedJsonRpcProviderParameters<P extends typeof JsonRpcProvider> = {\n prefix: string\n registry: Registry\n Provider: P\n}\n\nexport const trackedJsonRpcProvider = <P extends typeof JsonRpcProvider>({\n prefix,\n registry,\n Provider,\n}: TrackedJsonRpcProviderParameters<P>): P => {\n const { rpcRequestCount, rpcRequestMethods, rpcResponseTime } = rpcMetricsFactory(prefix, registry)\n\n // @ts-expect-error need to investigate how to fix\n return class extends Provider {\n async send(method: string, params: unknown[]) {\n const chainId = this._network.chainId\n const url = this.connection.url\n\n const provider = getProviderLabel(url)\n rpcRequestCount.labels({ chainId, provider }).inc()\n rpcRequestMethods.labels({ method }).inc()\n const responseTime = rpcResponseTime.startTimer()\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const response = await super.send(method, params)\n\n responseTime(\n // Not sure how to get correct status here, but it's probably 2xx, or it throws an error\n { chainId, provider, status: '2xx' },\n )\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return response\n }\n }\n}\n"],"names":[],"version":3,"file":"index.cjs.map","sourceRoot":"../../../../../"}
@@ -0,0 +1,10 @@
1
+ import { JsonRpcProvider } from "@ethersproject/providers";
2
+ import { Registry } from "prom-client";
3
+ export type TrackedJsonRpcProviderParameters<P extends typeof JsonRpcProvider> = {
4
+ prefix: string;
5
+ registry: Registry;
6
+ Provider: P;
7
+ };
8
+ export const trackedJsonRpcProvider: <P extends typeof JsonRpcProvider>({ prefix, registry, Provider, }: TrackedJsonRpcProviderParameters<P>) => P;
9
+
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"mappings":";;AAIA,6CAA6C,CAAC,SAAS,sBAAsB,IAAI;IAC/E,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,CAAC,CAAA;CACZ,CAAA;AAED,OAAO,MAAM,qIA8BZ,CAAA","sources":["packages/eth/api/providers/src/src/trackedJsonRpcProvider.ts","packages/eth/api/providers/src/src/index.ts","packages/eth/api/providers/src/index.ts"],"sourcesContent":[null,null,"export * from './trackedJsonRpcProvider'\n"],"names":[],"version":3,"file":"index.d.ts.map","sourceRoot":"../../../../../"}
package/dist/index.mjs ADDED
@@ -0,0 +1,44 @@
1
+ import {rpcMetricsFactory as $6lHim$rpcMetricsFactory, getProviderLabel as $6lHim$getProviderLabel} from "@lidofinance/api-metrics";
2
+
3
+ function $parcel$export(e, n, v, s) {
4
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
5
+ }
6
+ var $61abdbc1f5acaa33$exports = {};
7
+
8
+ $parcel$export($61abdbc1f5acaa33$exports, "trackedJsonRpcProvider", () => $61abdbc1f5acaa33$export$1edad9289b994780);
9
+
10
+ const $61abdbc1f5acaa33$export$1edad9289b994780 = ({ prefix: prefix , registry: registry , Provider: Provider })=>{
11
+ const { rpcRequestCount: rpcRequestCount , rpcRequestMethods: rpcRequestMethods , rpcResponseTime: rpcResponseTime } = (0, $6lHim$rpcMetricsFactory)(prefix, registry);
12
+ // @ts-expect-error need to investigate how to fix
13
+ return class extends Provider {
14
+ async send(method, params) {
15
+ const chainId = this._network.chainId;
16
+ const url = this.connection.url;
17
+ const provider = (0, $6lHim$getProviderLabel)(url);
18
+ rpcRequestCount.labels({
19
+ chainId: chainId,
20
+ provider: provider
21
+ }).inc();
22
+ rpcRequestMethods.labels({
23
+ method: method
24
+ }).inc();
25
+ const responseTime = rpcResponseTime.startTimer();
26
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
27
+ const response = await super.send(method, params);
28
+ responseTime(// Not sure how to get correct status here, but it's probably 2xx, or it throws an error
29
+ {
30
+ chainId: chainId,
31
+ provider: provider,
32
+ status: "2xx"
33
+ });
34
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
35
+ return response;
36
+ }
37
+ };
38
+ };
39
+
40
+
41
+
42
+
43
+ export {$61abdbc1f5acaa33$export$1edad9289b994780 as trackedJsonRpcProvider};
44
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;ACAA;AAUO,MAAM,yCAAsB,GAAG,CAAmC,UACvE,MAAM,CAAA,YACN,QAAQ,CAAA,YACR,QAAQ,CAAA,EAC4B,GAAQ;IAC5C,MAAM,mBAAE,eAAe,CAAA,qBAAE,iBAAiB,CAAA,mBAAE,eAAe,CAAA,EAAE,GAAG,CAAA,GAAA,wBAAiB,CAAA,CAAC,MAAM,EAAE,QAAQ,CAAC;IAEnG,kDAAkD;IAClD,OAAO,cAAc,QAAQ;QAC3B,MAAM,IAAI,CAAC,MAAc,EAAE,MAAiB,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG;YAE/B,MAAM,QAAQ,GAAG,CAAA,GAAA,uBAAgB,CAAA,CAAC,GAAG,CAAC;YACtC,eAAe,CAAC,MAAM,CAAC;yBAAE,OAAO;0BAAE,QAAQ;aAAE,CAAC,CAAC,GAAG,EAAE;YACnD,iBAAiB,CAAC,MAAM,CAAC;wBAAE,MAAM;aAAE,CAAC,CAAC,GAAG,EAAE;YAC1C,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,EAAE;YAEjD,mEAAmE;YACnE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;YAEjD,YAAY,CACV,wFAAwF;YACxF;yBAAE,OAAO;0BAAE,QAAQ;gBAAE,MAAM,EAAE,KAAK;aAAE,CACrC;YAED,+DAA+D;YAC/D,OAAO,QAAQ,CAAA;SAChB;KACF,CAAA;CACF;;ADxCD","sources":["packages/eth/api/providers/src/index.ts","packages/eth/api/providers/src/trackedJsonRpcProvider.ts"],"sourcesContent":["export * from './trackedJsonRpcProvider'\n","import { JsonRpcProvider } from '@ethersproject/providers'\nimport { getProviderLabel, rpcMetricsFactory } from '@lidofinance/api-metrics'\nimport { Registry } from 'prom-client'\n\nexport type TrackedJsonRpcProviderParameters<P extends typeof JsonRpcProvider> = {\n prefix: string\n registry: Registry\n Provider: P\n}\n\nexport const trackedJsonRpcProvider = <P extends typeof JsonRpcProvider>({\n prefix,\n registry,\n Provider,\n}: TrackedJsonRpcProviderParameters<P>): P => {\n const { rpcRequestCount, rpcRequestMethods, rpcResponseTime } = rpcMetricsFactory(prefix, registry)\n\n // @ts-expect-error need to investigate how to fix\n return class extends Provider {\n async send(method: string, params: unknown[]) {\n const chainId = this._network.chainId\n const url = this.connection.url\n\n const provider = getProviderLabel(url)\n rpcRequestCount.labels({ chainId, provider }).inc()\n rpcRequestMethods.labels({ method }).inc()\n const responseTime = rpcResponseTime.startTimer()\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const response = await super.send(method, params)\n\n responseTime(\n // Not sure how to get correct status here, but it's probably 2xx, or it throws an error\n { chainId, provider, status: '2xx' },\n )\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return response\n }\n }\n}\n"],"names":[],"version":3,"file":"index.mjs.map","sourceRoot":"../../../../../"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@lidofinance/eth-api-providers",
3
+ "description": "Wraps JsonRpcProvider to track requests to RPC",
4
+ "repository": "git@github.com:lidofinance/lido-ui-blocks.git",
5
+ "license": "MIT",
6
+ "version": "0.0.3",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "engines": {
11
+ "node": ">= 16"
12
+ },
13
+ "source": "./src/index.ts",
14
+ "main": "dist/index.cjs",
15
+ "module": "dist/index.mjs",
16
+ "types": "dist/index.d.ts",
17
+ "scripts": {
18
+ "build": "parcel build",
19
+ "format": "prettier --check src",
20
+ "format:fix": "yarn format --write",
21
+ "types": "tsc --noEmit"
22
+ },
23
+ "peerDependencies": {
24
+ "@lidofinance/api-metrics": "0.0.3",
25
+ "@ethersproject/logger": "^5.5.2",
26
+ "@ethersproject/networks": "^5.5.0",
27
+ "@ethersproject/properties": "^5.5.0",
28
+ "@ethersproject/providers": "^5.5.0",
29
+ "prom-client": "^14.0.0"
30
+ },
31
+ "devDependencies": {
32
+ "@lidofinance/api-metrics": "0.0.3",
33
+ "@lidofinance/config-prettier": "0.0.1",
34
+ "@ethersproject/logger": "^5.5.2",
35
+ "@ethersproject/networks": "^5.5.0",
36
+ "@ethersproject/properties": "^5.5.0",
37
+ "@ethersproject/providers": "^5.5.0",
38
+ "prom-client": "^14.0.0"
39
+ }
40
+ }