@lidofinance/api-rpc 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 +14 -5
- package/dist/index.cjs +20 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +20 -9
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -12,12 +12,21 @@ It's only a factory, which extends `fetchRpc`, where you need to pass prom-clien
|
|
|
12
12
|
tracked metrics.
|
|
13
13
|
|
|
14
14
|
```ts
|
|
15
|
-
import { trackedFetchRpcFactory } from '@lidofinance/api-rpc'
|
|
16
|
-
import { registry } from './metrics'
|
|
17
|
-
import { METRICS_PREFIX } from '../config'
|
|
15
|
+
import { trackedFetchRpcFactory } from '@lidofinance/api-rpc'
|
|
16
|
+
import { registry } from './metrics'
|
|
17
|
+
import { METRICS_PREFIX } from '../config'
|
|
18
18
|
|
|
19
19
|
export const fetchRPC = trackedFetchRpcFactory({
|
|
20
20
|
registry,
|
|
21
21
|
prefix: METRICS_PREFIX,
|
|
22
|
-
})
|
|
23
|
-
```
|
|
22
|
+
})
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Metrics
|
|
26
|
+
|
|
27
|
+
Each call records:
|
|
28
|
+
|
|
29
|
+
- `rpc_service_request` — Counter incremented on every attempt (before the fetch).
|
|
30
|
+
- `rpc_service_request_methods` — Counter per JSON-RPC method in the batch.
|
|
31
|
+
- `rpc_service_response` — Histogram of response latency with `status` bucket. Thrown requests (e.g. connect timeouts) are observed under `status='xxx'` so failures don't go missing.
|
|
32
|
+
- `rpc_service_response_result` — Counter with `result='success' | 'failure'`. Use it for explicit success/failure rate queries (e.g. `rate(rpc_service_response_result_total{result="failure"}[5m])`).
|
package/dist/index.cjs
CHANGED
|
@@ -26,7 +26,7 @@ $parcel$export($47b14a281d9aea1d$exports, "trackedFetchRpcFactory", () => $47b14
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
const $47b14a281d9aea1d$export$78b2eac677e7bce5 = ({ prefix: prefix, registry: registry })=>{
|
|
29
|
-
const { rpcRequestCount: rpcRequestCount, rpcRequestMethods: rpcRequestMethods, rpcResponseTime: rpcResponseTime } = (0, $3WQie$lidofinanceapimetrics.rpcMetricsFactory)(prefix, registry);
|
|
29
|
+
const { rpcRequestCount: rpcRequestCount, rpcRequestMethods: rpcRequestMethods, rpcResponseTime: rpcResponseTime, rpcResponseResultCount: rpcResponseResultCount } = (0, $3WQie$lidofinanceapimetrics.rpcMetricsFactory)(prefix, registry);
|
|
30
30
|
return async (url, init, { chainId: chainId })=>{
|
|
31
31
|
const provider = (0, $3WQie$lidofinanceapimetrics.getProviderLabel)(url);
|
|
32
32
|
rpcRequestCount.labels({
|
|
@@ -39,14 +39,25 @@ const $47b14a281d9aea1d$export$78b2eac677e7bce5 = ({ 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
|
-
|
|
42
|
+
let status = "xxx";
|
|
43
|
+
let result = "failure";
|
|
44
|
+
try {
|
|
45
|
+
const response = await (0, $3WQie$lidofinancerpc.fetchRpc)(url, init);
|
|
46
|
+
status = (0, $3WQie$lidofinanceapimetrics.getStatusLabel)(response.status);
|
|
47
|
+
result = response.ok ? "success" : "failure";
|
|
48
|
+
return response;
|
|
49
|
+
} finally{
|
|
50
|
+
responseTime({
|
|
51
|
+
chainId: chainId,
|
|
52
|
+
provider: provider,
|
|
53
|
+
status: status
|
|
54
|
+
});
|
|
55
|
+
rpcResponseResultCount.labels({
|
|
56
|
+
chainId: chainId,
|
|
57
|
+
provider: provider,
|
|
58
|
+
result: result
|
|
59
|
+
}).inc();
|
|
60
|
+
}
|
|
50
61
|
};
|
|
51
62
|
};
|
|
52
63
|
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;ACWO,MAAM,4CAAyB,CAAC,UAAE,MAAM,YAAE,QAAQ,EAAoC;IAC3F,MAAM,mBAAE,eAAe,qBAAE,iBAAiB,mBAAE,eAAe,EAAE,GAAG,CAAA,GAAA,8CAAgB,
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;ACWO,MAAM,4CAAyB,CAAC,UAAE,MAAM,YAAE,QAAQ,EAAoC;IAC3F,MAAM,mBAAE,eAAe,qBAAE,iBAAiB,mBAAE,eAAe,0BAAE,sBAAsB,EAAE,GAAG,CAAA,GAAA,8CAAgB,EACtG,QACA;IAGF,OAAO,OAAO,KAAK,MAAM,WAAE,OAAO,EAAE;QAClC,MAAM,WAAW,CAAA,GAAA,6CAAe,EAAE;QAElC,gBAAgB,OAAO;qBAAE;sBAAS;QAAS,GAAG;QAC9C,KAAK,MAAM,UAAE,MAAM,EAAE,IAAI,MAAM,QAAQ,KAAK,QAAQ,KAAK,OAAO;YAAC,KAAK;SAAK,CACzE,kBAAkB,OAAO;oBAAE;QAAO,GAAG;QAEvC,MAAM,eAAe,gBAAgB;QAErC,IAAI,SAAS;QACb,IAAI,SAAgC;QACpC,IAAI;YACF,MAAM,WAAW,MAAM,CAAA,GAAA,8BAAO,EAAE,KAAK;YACrC,SAAS,CAAA,GAAA,2CAAa,EAAE,SAAS;YACjC,SAAS,SAAS,KAAK,YAAY;YACnC,OAAO;QACT,SAAU;YACR,aAAa;yBAAE;0BAAS;wBAAU;YAAO;YACzC,uBAAuB,OAAO;yBAAE;0BAAS;wBAAU;YAAO,GAAG;QAC/D;IACF;AACF","sources":["packages/api/rpc/src/index.ts","packages/api/rpc/src/trackedFetchRpcFactory.ts"],"sourcesContent":["export * from './trackedFetchRpcFactory'\n","import { Registry } from 'prom-client'\nimport { FetchRpc, fetchRpc } from '@lidofinance/rpc'\nimport { rpcMetricsFactory, getProviderLabel, getStatusLabel } from '@lidofinance/api-metrics'\n\nexport type TrackedFetchRpcFactoryParameters = {\n prefix: string\n registry: Registry\n}\n\nexport type TrackedFetchRPC = FetchRpc<{ chainId: string | number }>\n\nexport const trackedFetchRpcFactory = ({ prefix, registry }: TrackedFetchRpcFactoryParameters): TrackedFetchRPC => {\n const { rpcRequestCount, rpcRequestMethods, rpcResponseTime, rpcResponseResultCount } = rpcMetricsFactory(\n prefix,\n registry,\n )\n\n return async (url, init, { chainId }) => {\n const provider = getProviderLabel(url)\n\n rpcRequestCount.labels({ chainId, provider }).inc()\n for (const { method } of Array.isArray(init.body) ? init.body : [init.body]) {\n rpcRequestMethods.labels({ method }).inc()\n }\n const responseTime = rpcResponseTime.startTimer()\n\n let status = 'xxx'\n let result: 'success' | 'failure' = 'failure'\n try {\n const response = await fetchRpc(url, init)\n status = getStatusLabel(response.status)\n result = response.ok ? 'success' : 'failure'\n return response\n } finally {\n responseTime({ chainId, provider, status })\n rpcResponseResultCount.labels({ chainId, provider, result }).inc()\n }\n }\n}\n"],"names":[],"version":3,"file":"index.cjs.map","sourceRoot":"../../../../"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;AAIA,+CAA+C;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,QAAQ,CAAA;CACnB,CAAA;AAED,8BAA8B,SAAS;IAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAAA;AAEpE,OAAO,MAAM,+CAAgD,gCAAgC,KAAG,
|
|
1
|
+
{"mappings":";;AAIA,+CAA+C;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,QAAQ,CAAA;CACnB,CAAA;AAED,8BAA8B,SAAS;IAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAAA;AAEpE,OAAO,MAAM,+CAAgD,gCAAgC,KAAG,eA2B/F,CAAA","sources":["packages/api/rpc/src/src/trackedFetchRpcFactory.ts","packages/api/rpc/src/src/index.ts","packages/api/rpc/src/index.ts"],"sourcesContent":[null,null,"export * from './trackedFetchRpcFactory'\n"],"names":[],"version":3,"file":"index.d.ts.map","sourceRoot":"../../../../"}
|
package/dist/index.mjs
CHANGED
|
@@ -10,7 +10,7 @@ $parcel$export($a3758ff406a352af$exports, "trackedFetchRpcFactory", () => $a3758
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
const $a3758ff406a352af$export$78b2eac677e7bce5 = ({ prefix: prefix, registry: registry })=>{
|
|
13
|
-
const { rpcRequestCount: rpcRequestCount, rpcRequestMethods: rpcRequestMethods, rpcResponseTime: rpcResponseTime } = (0, $1xKrC$rpcMetricsFactory)(prefix, registry);
|
|
13
|
+
const { rpcRequestCount: rpcRequestCount, rpcRequestMethods: rpcRequestMethods, rpcResponseTime: rpcResponseTime, rpcResponseResultCount: rpcResponseResultCount } = (0, $1xKrC$rpcMetricsFactory)(prefix, registry);
|
|
14
14
|
return async (url, init, { chainId: chainId })=>{
|
|
15
15
|
const provider = (0, $1xKrC$getProviderLabel)(url);
|
|
16
16
|
rpcRequestCount.labels({
|
|
@@ -23,14 +23,25 @@ const $a3758ff406a352af$export$78b2eac677e7bce5 = ({ 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
|
-
|
|
26
|
+
let status = "xxx";
|
|
27
|
+
let result = "failure";
|
|
28
|
+
try {
|
|
29
|
+
const response = await (0, $1xKrC$fetchRpc)(url, init);
|
|
30
|
+
status = (0, $1xKrC$getStatusLabel)(response.status);
|
|
31
|
+
result = response.ok ? "success" : "failure";
|
|
32
|
+
return response;
|
|
33
|
+
} finally{
|
|
34
|
+
responseTime({
|
|
35
|
+
chainId: chainId,
|
|
36
|
+
provider: provider,
|
|
37
|
+
status: status
|
|
38
|
+
});
|
|
39
|
+
rpcResponseResultCount.labels({
|
|
40
|
+
chainId: chainId,
|
|
41
|
+
provider: provider,
|
|
42
|
+
result: result
|
|
43
|
+
}).inc();
|
|
44
|
+
}
|
|
34
45
|
};
|
|
35
46
|
};
|
|
36
47
|
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;;ACWO,MAAM,4CAAyB,CAAC,UAAE,MAAM,YAAE,QAAQ,EAAoC;IAC3F,MAAM,mBAAE,eAAe,qBAAE,iBAAiB,mBAAE,eAAe,EAAE,GAAG,CAAA,GAAA,wBAAgB,
|
|
1
|
+
{"mappings":";;;;;;;;;;;ACWO,MAAM,4CAAyB,CAAC,UAAE,MAAM,YAAE,QAAQ,EAAoC;IAC3F,MAAM,mBAAE,eAAe,qBAAE,iBAAiB,mBAAE,eAAe,0BAAE,sBAAsB,EAAE,GAAG,CAAA,GAAA,wBAAgB,EACtG,QACA;IAGF,OAAO,OAAO,KAAK,MAAM,WAAE,OAAO,EAAE;QAClC,MAAM,WAAW,CAAA,GAAA,uBAAe,EAAE;QAElC,gBAAgB,OAAO;qBAAE;sBAAS;QAAS,GAAG;QAC9C,KAAK,MAAM,UAAE,MAAM,EAAE,IAAI,MAAM,QAAQ,KAAK,QAAQ,KAAK,OAAO;YAAC,KAAK;SAAK,CACzE,kBAAkB,OAAO;oBAAE;QAAO,GAAG;QAEvC,MAAM,eAAe,gBAAgB;QAErC,IAAI,SAAS;QACb,IAAI,SAAgC;QACpC,IAAI;YACF,MAAM,WAAW,MAAM,CAAA,GAAA,eAAO,EAAE,KAAK;YACrC,SAAS,CAAA,GAAA,qBAAa,EAAE,SAAS;YACjC,SAAS,SAAS,KAAK,YAAY;YACnC,OAAO;QACT,SAAU;YACR,aAAa;yBAAE;0BAAS;wBAAU;YAAO;YACzC,uBAAuB,OAAO;yBAAE;0BAAS;wBAAU;YAAO,GAAG;QAC/D;IACF;AACF","sources":["packages/api/rpc/src/index.ts","packages/api/rpc/src/trackedFetchRpcFactory.ts"],"sourcesContent":["export * from './trackedFetchRpcFactory'\n","import { Registry } from 'prom-client'\nimport { FetchRpc, fetchRpc } from '@lidofinance/rpc'\nimport { rpcMetricsFactory, getProviderLabel, getStatusLabel } from '@lidofinance/api-metrics'\n\nexport type TrackedFetchRpcFactoryParameters = {\n prefix: string\n registry: Registry\n}\n\nexport type TrackedFetchRPC = FetchRpc<{ chainId: string | number }>\n\nexport const trackedFetchRpcFactory = ({ prefix, registry }: TrackedFetchRpcFactoryParameters): TrackedFetchRPC => {\n const { rpcRequestCount, rpcRequestMethods, rpcResponseTime, rpcResponseResultCount } = rpcMetricsFactory(\n prefix,\n registry,\n )\n\n return async (url, init, { chainId }) => {\n const provider = getProviderLabel(url)\n\n rpcRequestCount.labels({ chainId, provider }).inc()\n for (const { method } of Array.isArray(init.body) ? init.body : [init.body]) {\n rpcRequestMethods.labels({ method }).inc()\n }\n const responseTime = rpcResponseTime.startTimer()\n\n let status = 'xxx'\n let result: 'success' | 'failure' = 'failure'\n try {\n const response = await fetchRpc(url, init)\n status = getStatusLabel(response.status)\n result = response.ok ? 'success' : 'failure'\n return response\n } finally {\n responseTime({ chainId, provider, status })\n rpcResponseResultCount.labels({ chainId, provider, result }).inc()\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
|
],
|
|
@@ -31,14 +31,14 @@
|
|
|
31
31
|
"types": "tsc --noEmit"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
|
-
"@lidofinance/api-metrics": "~0.
|
|
35
|
-
"@lidofinance/rpc": "~0.
|
|
34
|
+
"@lidofinance/api-metrics": "~0.59.0",
|
|
35
|
+
"@lidofinance/rpc": "~0.59.0",
|
|
36
36
|
"prom-client": "^14.0.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@lidofinance/api-metrics": "~0.
|
|
40
|
-
"@lidofinance/config-prettier": "~0.
|
|
41
|
-
"@lidofinance/rpc": "~0.
|
|
39
|
+
"@lidofinance/api-metrics": "~0.59.0",
|
|
40
|
+
"@lidofinance/config-prettier": "~0.59.0",
|
|
41
|
+
"@lidofinance/rpc": "~0.59.0",
|
|
42
42
|
"prom-client": "^14.1.0"
|
|
43
43
|
},
|
|
44
44
|
"publishConfig": {
|