@lidofinance/eth-api-providers 0.58.0 → 0.59.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 +13 -8
- package/dist/index.cjs +22 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +22 -11
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
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
|
-
|
|
16
|
-
|
|
17
|
-
} from '
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
};
|
package/dist/index.cjs.map
CHANGED
|
@@ -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,
|
|
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":"../../../../../"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -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,
|
|
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.
|
|
10
|
+
"version": "0.59.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.
|
|
38
|
+
"@lidofinance/api-metrics": "~0.59.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.
|
|
47
|
-
"@lidofinance/config-prettier": "~0.
|
|
46
|
+
"@lidofinance/api-metrics": "~0.59.0",
|
|
47
|
+
"@lidofinance/config-prettier": "~0.59.0",
|
|
48
48
|
"prom-client": "^14.1.0"
|
|
49
49
|
},
|
|
50
50
|
"publishConfig": {
|