@sentio/sdk 2.25.0-rc.1 → 2.25.0-rc.2
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/lib/eth/provider.d.ts.map +1 -1
- package/lib/eth/provider.js +4 -1
- package/lib/eth/provider.js.map +1 -1
- package/lib/utils/price.d.ts.map +1 -1
- package/lib/utils/price.js +8 -5
- package/lib/utils/price.js.map +1 -1
- package/package.json +4 -3
- package/src/eth/provider.ts +6 -3
- package/src/utils/price.ts +13 -10
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAW,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAI3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAW,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAI3D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,eAAO,MAAM,aAAa,iBAA2C,CAAA;AAcrE,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,CA2B1D"}
|
package/lib/eth/provider.js
CHANGED
@@ -2,6 +2,7 @@ import { JsonRpcProvider, Network } from 'ethers';
|
|
2
2
|
import PQueue from 'p-queue';
|
3
3
|
import { Endpoints } from '@sentio/runtime';
|
4
4
|
import { EthChainId } from '@sentio/chain';
|
5
|
+
import { LRUCache } from 'lru-cache';
|
5
6
|
export const DummyProvider = new JsonRpcProvider('', Network.from(1));
|
6
7
|
const providers = new Map();
|
7
8
|
// export function getEthChainId(networkish?: EthContext | EthChainId): EthChainId {
|
@@ -63,7 +64,9 @@ function getTag(prefix, value) {
|
|
63
64
|
}
|
64
65
|
class QueuedStaticJsonRpcProvider extends JsonRpcProvider {
|
65
66
|
executor;
|
66
|
-
#performCache = new
|
67
|
+
#performCache = new LRUCache({
|
68
|
+
max: 10000
|
69
|
+
});
|
67
70
|
constructor(url, network, concurrency) {
|
68
71
|
// TODO re-enable match when possible
|
69
72
|
super(url, network, { staticNetwork: network, batchMaxCount: 1 });
|
package/lib/eth/provider.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAY,MAAM,QAAQ,CAAA;AAE3D,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/price.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../src/utils/price.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAA0B,MAAM,sBAAsB,CAAA;AAGzF,OAAO,EAAmB,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAEjF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;
|
1
|
+
{"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../src/utils/price.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAA0B,MAAM,sBAAsB,CAAA;AAGzF,OAAO,EAAmB,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAEjF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAGvC,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAU9C;AAOD,UAAU,YAAY;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAQD,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAC7C,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA2D7B;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAE7B"}
|
package/lib/utils/price.js
CHANGED
@@ -3,6 +3,7 @@ import { createChannel, createClientFactory, Status } from 'nice-grpc';
|
|
3
3
|
import { prometheusClientMiddleware } from 'nice-grpc-prometheus';
|
4
4
|
import { retryMiddleware } from 'nice-grpc-client-middleware-retry';
|
5
5
|
import { Endpoints } from '@sentio/runtime';
|
6
|
+
import { LRUCache } from 'lru-cache';
|
6
7
|
export function getPriceClient(address) {
|
7
8
|
if (!address) {
|
8
9
|
address = Endpoints.INSTANCE.priceFeedAPI;
|
@@ -13,7 +14,9 @@ export function getPriceClient(address) {
|
|
13
14
|
.use(retryMiddleware)
|
14
15
|
.create(PriceServiceDefinition, channel);
|
15
16
|
}
|
16
|
-
const priceMap = new
|
17
|
+
const priceMap = new LRUCache({
|
18
|
+
max: 100000
|
19
|
+
});
|
17
20
|
let priceClient;
|
18
21
|
async function getPriceByTypeOrSymbol(date, coinId, options) {
|
19
22
|
if (!priceClient) {
|
@@ -37,10 +40,10 @@ export async function getPriceByTypeOrSymbolInternal(priceClient, date, coinId,
|
|
37
40
|
}
|
38
41
|
const response = priceClient.getPrice({
|
39
42
|
timestamp: date,
|
40
|
-
coinId
|
43
|
+
coinId
|
41
44
|
}, {
|
42
45
|
retry: true,
|
43
|
-
retryMaxAttempts: 5
|
46
|
+
retryMaxAttempts: 5
|
44
47
|
});
|
45
48
|
price = response
|
46
49
|
.then((res) => {
|
@@ -90,8 +93,8 @@ export async function getPriceByType(chainId, coinType, date, options) {
|
|
90
93
|
return getPriceByTypeOrSymbol(date, {
|
91
94
|
address: {
|
92
95
|
chain: chainId,
|
93
|
-
address: coinType
|
94
|
-
}
|
96
|
+
address: coinType
|
97
|
+
}
|
95
98
|
}, options);
|
96
99
|
}
|
97
100
|
/**
|
package/lib/utils/price.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"price.js","sourceRoot":"","sources":["../../src/utils/price.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AACzF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,eAAe,EAAgB,MAAM,mCAAmC,CAAA;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;
|
1
|
+
{"version":3,"file":"price.js","sourceRoot":"","sources":["../../src/utils/price.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sentio/sdk",
|
3
|
-
"version": "2.25.0-rc.
|
3
|
+
"version": "2.25.0-rc.2",
|
4
4
|
"license": "Apache-2.0",
|
5
5
|
"type": "module",
|
6
6
|
"exports": {
|
@@ -58,6 +58,7 @@
|
|
58
58
|
"csv-parse": "^5.3.0",
|
59
59
|
"ethers": "npm:@sentio/ethers@^6.6.0",
|
60
60
|
"js-sha3": "^0.8.0",
|
61
|
+
"lru-cache": "^10.0.1",
|
61
62
|
"mkdirp": "^1.0.4",
|
62
63
|
"nice-grpc": "^2.1.4",
|
63
64
|
"nice-grpc-client-middleware-retry": "^3.1.3",
|
@@ -73,8 +74,8 @@
|
|
73
74
|
"typedoc": "^0.24.8",
|
74
75
|
"utility-types": "^3.10.0",
|
75
76
|
"yaml": "^2.2.1",
|
76
|
-
"@sentio/protos": "2.25.0-rc.
|
77
|
-
"@sentio/runtime": "^2.25.0-rc.
|
77
|
+
"@sentio/protos": "2.25.0-rc.2",
|
78
|
+
"@sentio/runtime": "^2.25.0-rc.2"
|
78
79
|
},
|
79
80
|
"peerDependencies": {
|
80
81
|
"tsup": "npm:@sentio/tsup@^6.7.0"
|
package/src/eth/provider.ts
CHANGED
@@ -3,6 +3,7 @@ import { JsonRpcProvider, Network, Provider } from 'ethers'
|
|
3
3
|
import PQueue from 'p-queue'
|
4
4
|
import { Endpoints } from '@sentio/runtime'
|
5
5
|
import { EthChainId } from '@sentio/chain'
|
6
|
+
import { LRUCache } from 'lru-cache'
|
6
7
|
|
7
8
|
export const DummyProvider = new JsonRpcProvider('', Network.from(1))
|
8
9
|
|
@@ -39,7 +40,7 @@ export function getProvider(chainId?: EthChainId): Provider {
|
|
39
40
|
'Provider not found for chain ' +
|
40
41
|
network.chainId +
|
41
42
|
', configured chains: ' +
|
42
|
-
[...Endpoints.INSTANCE.chainServer.keys()].join(' ')
|
43
|
+
[...Endpoints.INSTANCE.chainServer.keys()].join(' ')
|
43
44
|
)
|
44
45
|
}
|
45
46
|
provider = new QueuedStaticJsonRpcProvider(address, network, Endpoints.INSTANCE.concurrency)
|
@@ -71,7 +72,7 @@ function getTag(prefix: string, value: any): string {
|
|
71
72
|
accum[key] = v[key]
|
72
73
|
return accum
|
73
74
|
},
|
74
|
-
<any>{}
|
75
|
+
<any>{}
|
75
76
|
)
|
76
77
|
}
|
77
78
|
|
@@ -82,7 +83,9 @@ function getTag(prefix: string, value: any): string {
|
|
82
83
|
|
83
84
|
class QueuedStaticJsonRpcProvider extends JsonRpcProvider {
|
84
85
|
executor: PQueue
|
85
|
-
#performCache = new
|
86
|
+
#performCache = new LRUCache<string, Promise<any>>({
|
87
|
+
max: 10000
|
88
|
+
})
|
86
89
|
|
87
90
|
constructor(url: string, network: Network, concurrency: number) {
|
88
91
|
// TODO re-enable match when possible
|
package/src/utils/price.ts
CHANGED
@@ -4,6 +4,7 @@ import { prometheusClientMiddleware } from 'nice-grpc-prometheus'
|
|
4
4
|
import { retryMiddleware, RetryOptions } from 'nice-grpc-client-middleware-retry'
|
5
5
|
import { Endpoints } from '@sentio/runtime'
|
6
6
|
import { ChainId } from '@sentio/chain'
|
7
|
+
import { LRUCache } from 'lru-cache'
|
7
8
|
|
8
9
|
export function getPriceClient(address?: string) {
|
9
10
|
if (!address) {
|
@@ -17,7 +18,9 @@ export function getPriceClient(address?: string) {
|
|
17
18
|
.create(PriceServiceDefinition, channel)
|
18
19
|
}
|
19
20
|
|
20
|
-
const priceMap = new
|
21
|
+
const priceMap = new LRUCache<string, Promise<number | undefined>>({
|
22
|
+
max: 100000
|
23
|
+
})
|
21
24
|
let priceClient: PriceServiceClient<RetryOptions>
|
22
25
|
|
23
26
|
interface PriceOptions {
|
@@ -34,7 +37,7 @@ export async function getPriceByTypeOrSymbolInternal(
|
|
34
37
|
priceClient: PriceServiceClient<RetryOptions>,
|
35
38
|
date: Date,
|
36
39
|
coinId: CoinID,
|
37
|
-
options?: PriceOptions
|
40
|
+
options?: PriceOptions
|
38
41
|
): Promise<number | undefined> {
|
39
42
|
const dateStr = dateString(date)
|
40
43
|
const todayDateString = dateString(new Date())
|
@@ -53,12 +56,12 @@ export async function getPriceByTypeOrSymbolInternal(
|
|
53
56
|
const response = priceClient.getPrice(
|
54
57
|
{
|
55
58
|
timestamp: date,
|
56
|
-
coinId
|
59
|
+
coinId
|
57
60
|
},
|
58
61
|
{
|
59
62
|
retry: true,
|
60
|
-
retryMaxAttempts: 5
|
61
|
-
}
|
63
|
+
retryMaxAttempts: 5
|
64
|
+
}
|
62
65
|
)
|
63
66
|
price = response
|
64
67
|
.then((res) => {
|
@@ -107,17 +110,17 @@ export async function getPriceByType(
|
|
107
110
|
chainId: ChainId,
|
108
111
|
coinType: string,
|
109
112
|
date: Date,
|
110
|
-
options?: PriceOptions
|
113
|
+
options?: PriceOptions
|
111
114
|
): Promise<number | undefined> {
|
112
115
|
return getPriceByTypeOrSymbol(
|
113
116
|
date,
|
114
117
|
{
|
115
118
|
address: {
|
116
119
|
chain: chainId,
|
117
|
-
address: coinType
|
118
|
-
}
|
120
|
+
address: coinType
|
121
|
+
}
|
119
122
|
},
|
120
|
-
options
|
123
|
+
options
|
121
124
|
)
|
122
125
|
}
|
123
126
|
|
@@ -129,7 +132,7 @@ export async function getPriceByType(
|
|
129
132
|
export async function getPriceBySymbol(
|
130
133
|
symbol: string,
|
131
134
|
date: Date,
|
132
|
-
options?: PriceOptions
|
135
|
+
options?: PriceOptions
|
133
136
|
): Promise<number | undefined> {
|
134
137
|
return getPriceByTypeOrSymbol(date, { symbol }, options)
|
135
138
|
}
|