@sentio/sdk 2.58.2-rc.1 → 2.58.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/utils/block.d.ts +3 -2
- package/lib/utils/block.d.ts.map +1 -1
- package/lib/utils/block.js +24 -0
- package/lib/utils/block.js.map +1 -1
- package/package.json +3 -3
- package/src/utils/block.ts +36 -3
package/lib/utils/block.d.ts
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
-
import {
|
2
|
-
export declare function estimateBlockNumberAtDate(provider:
|
1
|
+
import { JsonRpcProvider } from 'ethers';
|
2
|
+
export declare function estimateBlockNumberAtDate(provider: JsonRpcProvider, targetDate: Date, startBlock?: number): Promise<number>;
|
3
|
+
export declare function estimateBlockNumberAtDateSlow(provider: JsonRpcProvider, targetDate: Date, startBlock?: number): Promise<number>;
|
3
4
|
//# sourceMappingURL=block.d.ts.map
|
package/lib/utils/block.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/utils/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,
|
1
|
+
{"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/utils/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,eAAe,EAAe,MAAM,QAAQ,CAAA;AAU5D,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,IAAI,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CA2BjB;AAED,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,IAAI,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
|
package/lib/utils/block.js
CHANGED
@@ -6,6 +6,30 @@ async function getBlockSafely(provider, blockNumber) {
|
|
6
6
|
return block;
|
7
7
|
}
|
8
8
|
export async function estimateBlockNumberAtDate(provider, targetDate, startBlock) {
|
9
|
+
// Convert JS Date to Unix timestamp in hex
|
10
|
+
const timestampHex = '0x' + Math.floor(targetDate.getTime()).toString(16);
|
11
|
+
// You can customize these based on how your RPC expects it
|
12
|
+
// Ensure rangeStart is hex if defined, else default to "earliest"
|
13
|
+
const rangeStart = startBlock !== undefined ? '0x' + startBlock.toString(16) : 'earliest';
|
14
|
+
const rangeEnd = 'latest';
|
15
|
+
const strategy = 'LE'; // or "GE", depending on your use case
|
16
|
+
let result;
|
17
|
+
try {
|
18
|
+
result = await provider.send('sentio_estimateBlockNumberAtDate', [timestampHex, rangeStart, rangeEnd, strategy]);
|
19
|
+
}
|
20
|
+
catch (e) {
|
21
|
+
const serverError = e;
|
22
|
+
if (serverError.code === 'SERVER_ERROR') {
|
23
|
+
return await estimateBlockNumberAtDateSlow(provider, targetDate, startBlock);
|
24
|
+
}
|
25
|
+
throw e;
|
26
|
+
}
|
27
|
+
if (result === null) {
|
28
|
+
throw Error("Block can't be located.");
|
29
|
+
}
|
30
|
+
return parseInt(result, 16);
|
31
|
+
}
|
32
|
+
export async function estimateBlockNumberAtDateSlow(provider, targetDate, startBlock) {
|
9
33
|
// Convert the Date object to a Unix timestamp (in seconds)
|
10
34
|
const targetTimestamp = Math.floor(targetDate.getTime() / 1000);
|
11
35
|
// Step 1: Get the current block number and its timestamp
|
package/lib/utils/block.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/utils/block.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,cAAc,CAAC,
|
1
|
+
{"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/utils/block.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.58.2
|
3
|
+
"version": "2.58.2",
|
4
4
|
"license": "Apache-2.0",
|
5
5
|
"type": "module",
|
6
6
|
"exports": {
|
@@ -88,8 +88,8 @@
|
|
88
88
|
"typechain": "^8.3.2",
|
89
89
|
"utility-types": "^3.11.0",
|
90
90
|
"yaml": "^2.3.4",
|
91
|
-
"@sentio/protos": "2.58.2
|
92
|
-
"@sentio/runtime": "^2.58.2
|
91
|
+
"@sentio/protos": "2.58.2",
|
92
|
+
"@sentio/runtime": "^2.58.2"
|
93
93
|
},
|
94
94
|
"peerDependencies": {
|
95
95
|
"@sentio/tsup": "^8.3.5-rc.1"
|
package/src/utils/block.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
import { Block,
|
1
|
+
import { Block, JsonRpcProvider, EthersError } from 'ethers'
|
2
2
|
|
3
|
-
async function getBlockSafely(provider:
|
3
|
+
async function getBlockSafely(provider: JsonRpcProvider, blockNumber: number | string): Promise<Block> {
|
4
4
|
const block = await provider.getBlock(blockNumber)
|
5
5
|
if (!block) {
|
6
6
|
throw new Error(`Block ${blockNumber} not found.`)
|
@@ -9,7 +9,40 @@ async function getBlockSafely(provider: Provider, blockNumber: number | string):
|
|
9
9
|
}
|
10
10
|
|
11
11
|
export async function estimateBlockNumberAtDate(
|
12
|
-
provider:
|
12
|
+
provider: JsonRpcProvider,
|
13
|
+
targetDate: Date,
|
14
|
+
startBlock?: number
|
15
|
+
): Promise<number> {
|
16
|
+
// Convert JS Date to Unix timestamp in hex
|
17
|
+
const timestampHex = '0x' + Math.floor(targetDate.getTime()).toString(16)
|
18
|
+
|
19
|
+
// You can customize these based on how your RPC expects it
|
20
|
+
// Ensure rangeStart is hex if defined, else default to "earliest"
|
21
|
+
const rangeStart = startBlock !== undefined ? '0x' + startBlock.toString(16) : 'earliest'
|
22
|
+
|
23
|
+
const rangeEnd = 'latest'
|
24
|
+
const strategy = 'LE' // or "GE", depending on your use case
|
25
|
+
|
26
|
+
let result
|
27
|
+
try {
|
28
|
+
result = await provider.send('sentio_estimateBlockNumberAtDate', [timestampHex, rangeStart, rangeEnd, strategy])
|
29
|
+
} catch (e) {
|
30
|
+
const serverError = e as EthersError
|
31
|
+
if (serverError.code === 'SERVER_ERROR') {
|
32
|
+
return await estimateBlockNumberAtDateSlow(provider, targetDate, startBlock)
|
33
|
+
}
|
34
|
+
throw e
|
35
|
+
}
|
36
|
+
|
37
|
+
if (result === null) {
|
38
|
+
throw Error("Block can't be located.")
|
39
|
+
}
|
40
|
+
|
41
|
+
return parseInt(result, 16)
|
42
|
+
}
|
43
|
+
|
44
|
+
export async function estimateBlockNumberAtDateSlow(
|
45
|
+
provider: JsonRpcProvider,
|
13
46
|
targetDate: Date,
|
14
47
|
startBlock?: number
|
15
48
|
): Promise<number> {
|