@sentio/sdk 2.58.1 → 2.58.2-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.
@@ -1,3 +1,4 @@
1
- import { Provider } from 'ethers';
2
- export declare function estimateBlockNumberAtDate(provider: Provider, targetDate: Date, startBlock?: number): Promise<number>;
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
@@ -1 +1 @@
1
- {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/utils/block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAUxC,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,IAAI,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CA6BjB"}
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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/utils/block.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,cAAc,CAAC,QAAkB,EAAE,WAA4B;IAC5E,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,SAAS,WAAW,aAAa,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,QAAkB,EAClB,UAAgB,EAChB,UAAmB;IAEnB,2DAA2D;IAC3D,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;IAE/D,yDAAyD;IACzD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC5D,MAAM,mBAAmB,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAA;IAEzE,+BAA+B;IAC/B,IAAI,GAAG,GAAG,aAAa,CAAC,MAAM,CAAA;IAC9B,IAAI,IAAI,GAAG,WAAW,CAAC,MAAM,CAAA;IAE7B,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;QAEpD,IAAI,QAAQ,CAAC,SAAS,KAAK,eAAe,EAAE,CAAC;YAC3C,OAAO,QAAQ,CAAC,MAAM,CAAA,CAAC,cAAc;QACvC,CAAC;aAAM,IAAI,QAAQ,CAAC,SAAS,GAAG,eAAe,EAAE,CAAC;YAChD,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA,CAAC,8BAA8B;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,GAAG,GAAG,CAAC,CAAA,CAAC,8BAA8B;QAC/C,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACzD,OAAO,YAAY,CAAC,MAAM,CAAA;AAC5B,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.1",
3
+ "version": "2.58.2-rc.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.1",
92
- "@sentio/runtime": "^2.58.1"
91
+ "@sentio/protos": "2.58.2-rc.2",
92
+ "@sentio/runtime": "^2.58.2-rc.2"
93
93
  },
94
94
  "peerDependencies": {
95
95
  "@sentio/tsup": "^8.3.5-rc.1"
@@ -1,6 +1,6 @@
1
- import { Block, Provider } from 'ethers'
1
+ import { Block, JsonRpcProvider, EthersError } from 'ethers'
2
2
 
3
- async function getBlockSafely(provider: Provider, blockNumber: number | string): Promise<Block> {
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: 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> {