@lidofinance/eth-api-providers 0.58.0 → 0.60.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.
package/README.md CHANGED
@@ -11,13 +11,10 @@ Wraps JsonRpcProvider to track requests to RPC.
11
11
  You just need to pass a few extra parameters to the used JsonRpcProvider, and you will get a patched class.
12
12
 
13
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';
14
+ import { providerFactory, StaticJsonRpcBatchProvider } from '@lidofinance/eth-providers'
15
+ import { trackedJsonRpcProvider } from '@lidofinance/eth-api-providers'
16
+ import { registry } from './metrics'
17
+ import { METRICS_PREFIX } from '../config'
21
18
 
22
19
  export const getStaticRpcBatchProvider = providerFactory(
23
20
  trackedJsonRpcProvider({
@@ -25,5 +22,13 @@ export const getStaticRpcBatchProvider = providerFactory(
25
22
  registry,
26
23
  Provider: StaticJsonRpcBatchProvider,
27
24
  }),
28
- );
25
+ )
29
26
  ```
27
+
28
+ ## Metrics
29
+
30
+ Every `send()` call records:
31
+
32
+ - `rpc_service_request` / `rpc_service_request_methods` — counters of attempts and methods.
33
+ - `rpc_service_response` — latency histogram. `status='2xx'` on resolved sends, `status='xxx'` when `super.send` throws.
34
+ - `rpc_service_response_result` — counter with `result='success' | 'failure'` for explicit outcome tracking.
package/dist/index.cjs CHANGED
@@ -24,7 +24,7 @@ var $49914269bebe5bbd$exports = {};
24
24
  $parcel$export($49914269bebe5bbd$exports, "trackedJsonRpcProvider", () => $49914269bebe5bbd$export$1edad9289b994780);
25
25
 
26
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);
27
+ const { rpcRequestCount: rpcRequestCount, rpcRequestMethods: rpcRequestMethods, rpcResponseTime: rpcResponseTime, rpcResponseResultCount: rpcResponseResultCount } = (0, $dxMF8$lidofinanceapimetrics.rpcMetricsFactory)(prefix, registry);
28
28
  // @ts-expect-error need to investigate how to fix
29
29
  return class extends Provider {
30
30
  async send(method, params) {
@@ -39,16 +39,27 @@ const $49914269bebe5bbd$export$1edad9289b994780 = ({ prefix: prefix, registry: r
39
39
  method: method
40
40
  }).inc();
41
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;
42
+ let status = "xxx";
43
+ let result = "failure";
44
+ try {
45
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
46
+ const response = await super.send(method, params);
47
+ status = "2xx";
48
+ result = "success";
49
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
50
+ return response;
51
+ } finally{
52
+ responseTime({
53
+ chainId: chainId,
54
+ provider: provider,
55
+ status: status
56
+ });
57
+ rpcResponseResultCount.labels({
58
+ chainId: chainId,
59
+ provider: provider,
60
+ result: result
61
+ }).inc();
62
+ }
52
63
  }
53
64
  };
54
65
  };
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;ACUO,MAAM,4CAAyB,CAAmC,UACvE,MAAM,YACN,QAAQ,YACR,QAAQ,EAC4B;IACpC,MAAM,mBAAE,eAAe,qBAAE,iBAAiB,mBAAE,eAAe,EAAE,GAAG,CAAA,GAAA,8CAAgB,EAAE,QAAQ;IAE1F,kDAAkD;IAClD,OAAO,cAAc;QACnB,MAAM,KAAK,MAAc,EAAE,MAAiB,EAAE;YAC5C,MAAM,UAAU,IAAI,CAAC,SAAS;YAC9B,MAAM,MAAM,IAAI,CAAC,WAAW;YAE5B,MAAM,WAAW,CAAA,GAAA,6CAAe,EAAE;YAClC,gBAAgB,OAAO;yBAAE;0BAAS;YAAS,GAAG;YAC9C,kBAAkB,OAAO;wBAAE;YAAO,GAAG;YACrC,MAAM,eAAe,gBAAgB;YAErC,mEAAmE;YACnE,MAAM,WAAW,MAAM,KAAK,CAAC,KAAK,QAAQ;YAE1C,aACE,wFAAwF;YACxF;yBAAE;0BAAS;gBAAU,QAAQ;YAAM;YAGrC,+DAA+D;YAC/D,OAAO;QACT;IACF;AACF","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":"../../../../../"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;ACUO,MAAM,4CAAyB,CAAmC,UACvE,MAAM,YACN,QAAQ,YACR,QAAQ,EAC4B;IACpC,MAAM,mBAAE,eAAe,qBAAE,iBAAiB,mBAAE,eAAe,0BAAE,sBAAsB,EAAE,GAAG,CAAA,GAAA,8CAAgB,EACtG,QACA;IAGF,kDAAkD;IAClD,OAAO,cAAc;QACnB,MAAM,KAAK,MAAc,EAAE,MAAiB,EAAE;YAC5C,MAAM,UAAU,IAAI,CAAC,SAAS;YAC9B,MAAM,MAAM,IAAI,CAAC,WAAW;YAE5B,MAAM,WAAW,CAAA,GAAA,6CAAe,EAAE;YAClC,gBAAgB,OAAO;yBAAE;0BAAS;YAAS,GAAG;YAC9C,kBAAkB,OAAO;wBAAE;YAAO,GAAG;YACrC,MAAM,eAAe,gBAAgB;YAErC,IAAI,SAAS;YACb,IAAI,SAAgC;YACpC,IAAI;gBACF,mEAAmE;gBACnE,MAAM,WAAW,MAAM,KAAK,CAAC,KAAK,QAAQ;gBAC1C,SAAS;gBACT,SAAS;gBACT,+DAA+D;gBAC/D,OAAO;YACT,SAAU;gBACR,aAAa;6BAAE;8BAAS;4BAAU;gBAAO;gBACzC,uBAAuB,OAAO;6BAAE;8BAAS;4BAAU;gBAAO,GAAG;YAC/D;QACF;IACF;AACF","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, rpcResponseResultCount } = rpcMetricsFactory(\n prefix,\n registry,\n )\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 let status = 'xxx'\n let result: 'success' | 'failure' = 'failure'\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const response = await super.send(method, params)\n status = '2xx'\n result = 'success'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return response\n } finally {\n responseTime({ chainId, provider, status })\n rpcResponseResultCount.labels({ chainId, provider, result }).inc()\n }\n }\n }\n}\n"],"names":[],"version":3,"file":"index.cjs.map","sourceRoot":"../../../../../"}
@@ -1 +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":"../../../../../"}
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,qIAoCZ,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 CHANGED
@@ -8,7 +8,7 @@ var $61abdbc1f5acaa33$exports = {};
8
8
  $parcel$export($61abdbc1f5acaa33$exports, "trackedJsonRpcProvider", () => $61abdbc1f5acaa33$export$1edad9289b994780);
9
9
 
10
10
  const $61abdbc1f5acaa33$export$1edad9289b994780 = ({ prefix: prefix, registry: registry, Provider: Provider })=>{
11
- const { rpcRequestCount: rpcRequestCount, rpcRequestMethods: rpcRequestMethods, rpcResponseTime: rpcResponseTime } = (0, $6lHim$rpcMetricsFactory)(prefix, registry);
11
+ const { rpcRequestCount: rpcRequestCount, rpcRequestMethods: rpcRequestMethods, rpcResponseTime: rpcResponseTime, rpcResponseResultCount: rpcResponseResultCount } = (0, $6lHim$rpcMetricsFactory)(prefix, registry);
12
12
  // @ts-expect-error need to investigate how to fix
13
13
  return class extends Provider {
14
14
  async send(method, params) {
@@ -23,16 +23,27 @@ const $61abdbc1f5acaa33$export$1edad9289b994780 = ({ prefix: prefix, registry: r
23
23
  method: method
24
24
  }).inc();
25
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;
26
+ let status = "xxx";
27
+ let result = "failure";
28
+ try {
29
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
30
+ const response = await super.send(method, params);
31
+ status = "2xx";
32
+ result = "success";
33
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
34
+ return response;
35
+ } finally{
36
+ responseTime({
37
+ chainId: chainId,
38
+ provider: provider,
39
+ status: status
40
+ });
41
+ rpcResponseResultCount.labels({
42
+ chainId: chainId,
43
+ provider: provider,
44
+ result: result
45
+ }).inc();
46
+ }
36
47
  }
37
48
  };
38
49
  };
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;ACUO,MAAM,4CAAyB,CAAmC,UACvE,MAAM,YACN,QAAQ,YACR,QAAQ,EAC4B;IACpC,MAAM,mBAAE,eAAe,qBAAE,iBAAiB,mBAAE,eAAe,EAAE,GAAG,CAAA,GAAA,wBAAgB,EAAE,QAAQ;IAE1F,kDAAkD;IAClD,OAAO,cAAc;QACnB,MAAM,KAAK,MAAc,EAAE,MAAiB,EAAE;YAC5C,MAAM,UAAU,IAAI,CAAC,SAAS;YAC9B,MAAM,MAAM,IAAI,CAAC,WAAW;YAE5B,MAAM,WAAW,CAAA,GAAA,uBAAe,EAAE;YAClC,gBAAgB,OAAO;yBAAE;0BAAS;YAAS,GAAG;YAC9C,kBAAkB,OAAO;wBAAE;YAAO,GAAG;YACrC,MAAM,eAAe,gBAAgB;YAErC,mEAAmE;YACnE,MAAM,WAAW,MAAM,KAAK,CAAC,KAAK,QAAQ;YAE1C,aACE,wFAAwF;YACxF;yBAAE;0BAAS;gBAAU,QAAQ;YAAM;YAGrC,+DAA+D;YAC/D,OAAO;QACT;IACF;AACF","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":"../../../../../"}
1
+ {"mappings":";;;;;;;;;ACUO,MAAM,4CAAyB,CAAmC,UACvE,MAAM,YACN,QAAQ,YACR,QAAQ,EAC4B;IACpC,MAAM,mBAAE,eAAe,qBAAE,iBAAiB,mBAAE,eAAe,0BAAE,sBAAsB,EAAE,GAAG,CAAA,GAAA,wBAAgB,EACtG,QACA;IAGF,kDAAkD;IAClD,OAAO,cAAc;QACnB,MAAM,KAAK,MAAc,EAAE,MAAiB,EAAE;YAC5C,MAAM,UAAU,IAAI,CAAC,SAAS;YAC9B,MAAM,MAAM,IAAI,CAAC,WAAW;YAE5B,MAAM,WAAW,CAAA,GAAA,uBAAe,EAAE;YAClC,gBAAgB,OAAO;yBAAE;0BAAS;YAAS,GAAG;YAC9C,kBAAkB,OAAO;wBAAE;YAAO,GAAG;YACrC,MAAM,eAAe,gBAAgB;YAErC,IAAI,SAAS;YACb,IAAI,SAAgC;YACpC,IAAI;gBACF,mEAAmE;gBACnE,MAAM,WAAW,MAAM,KAAK,CAAC,KAAK,QAAQ;gBAC1C,SAAS;gBACT,SAAS;gBACT,+DAA+D;gBAC/D,OAAO;YACT,SAAU;gBACR,aAAa;6BAAE;8BAAS;4BAAU;gBAAO;gBACzC,uBAAuB,OAAO;6BAAE;8BAAS;4BAAU;gBAAO,GAAG;YAC/D;QACF;IACF;AACF","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, rpcResponseResultCount } = rpcMetricsFactory(\n prefix,\n registry,\n )\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 let status = 'xxx'\n let result: 'success' | 'failure' = 'failure'\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const response = await super.send(method, params)\n status = '2xx'\n result = 'success'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return response\n } finally {\n responseTime({ chainId, provider, status })\n rpcResponseResultCount.labels({ chainId, provider, result }).inc()\n }\n }\n }\n}\n"],"names":[],"version":3,"file":"index.mjs.map","sourceRoot":"../../../../../"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "url": "https://github.com/lidofinance/warehouse/issues"
8
8
  },
9
9
  "license": "MIT",
10
- "version": "0.58.0",
10
+ "version": "0.60.0",
11
11
  "files": [
12
12
  "dist"
13
13
  ],
@@ -35,7 +35,7 @@
35
35
  "@ethersproject/networks": "^5.5.0",
36
36
  "@ethersproject/properties": "^5.5.0",
37
37
  "@ethersproject/providers": "^5.5.0",
38
- "@lidofinance/api-metrics": "~0.58.0",
38
+ "@lidofinance/api-metrics": "~0.60.0",
39
39
  "prom-client": "^14.0.0"
40
40
  },
41
41
  "devDependencies": {
@@ -43,8 +43,8 @@
43
43
  "@ethersproject/networks": "^5.7.1",
44
44
  "@ethersproject/properties": "^5.7.0",
45
45
  "@ethersproject/providers": "^5.7.2",
46
- "@lidofinance/api-metrics": "~0.58.0",
47
- "@lidofinance/config-prettier": "~0.58.0",
46
+ "@lidofinance/api-metrics": "~0.60.0",
47
+ "@lidofinance/config-prettier": "~0.60.0",
48
48
  "prom-client": "^14.1.0"
49
49
  },
50
50
  "publishConfig": {