envio 2.32.8 → 2.32.11
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/package.json +5 -5
- package/src/sources/HyperSync.res +44 -61
- package/src/sources/HyperSync.res.js +57 -70
- package/src/sources/HyperSync.resi +2 -4
- package/src/sources/HyperSyncClient.res +30 -1
- package/src/sources/HyperSyncClient.res.js +9 -0
- package/src/sources/HyperSyncSource.res +2 -4
- package/src/sources/HyperSyncSource.res.js +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "envio",
|
|
3
|
-
"version": "v2.32.
|
|
3
|
+
"version": "v2.32.11",
|
|
4
4
|
"description": "A latency and sync speed optimized, developer friendly blockchain data indexer.",
|
|
5
5
|
"bin": "./bin.js",
|
|
6
6
|
"main": "./index.js",
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
},
|
|
26
26
|
"homepage": "https://envio.dev",
|
|
27
27
|
"optionalDependencies": {
|
|
28
|
-
"envio-linux-x64": "v2.32.
|
|
29
|
-
"envio-linux-arm64": "v2.32.
|
|
30
|
-
"envio-darwin-x64": "v2.32.
|
|
31
|
-
"envio-darwin-arm64": "v2.32.
|
|
28
|
+
"envio-linux-x64": "v2.32.11",
|
|
29
|
+
"envio-linux-arm64": "v2.32.11",
|
|
30
|
+
"envio-darwin-x64": "v2.32.11",
|
|
31
|
+
"envio-darwin-arm64": "v2.32.11"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@elastic/ecs-pino-format": "1.4.0",
|
|
@@ -104,9 +104,11 @@ module GetLogs = {
|
|
|
104
104
|
// Remap "type" -> "kind" on the transaction object at runtime before validation.
|
|
105
105
|
// The latest hypersync client renamed "kind" to "type" but v2 consumers expect "kind".
|
|
106
106
|
let transaction: Js.Dict.t<unknown> = event.transaction->Utils.magic
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
107
|
+
if transaction->Utils.magic {
|
|
108
|
+
switch transaction->Js.Dict.get("type") {
|
|
109
|
+
| Some(v) => transaction->Js.Dict.set("kind", v)
|
|
110
|
+
| None => ()
|
|
111
|
+
}
|
|
110
112
|
}
|
|
111
113
|
|
|
112
114
|
let missingParams = []
|
|
@@ -197,7 +199,7 @@ module GetLogs = {
|
|
|
197
199
|
}
|
|
198
200
|
|
|
199
201
|
module BlockData = {
|
|
200
|
-
let makeRequestBody = (~fromBlock, ~toBlock):
|
|
202
|
+
let makeRequestBody = (~fromBlock, ~toBlock): HyperSyncClient.QueryTypes.query => {
|
|
201
203
|
fromBlock,
|
|
202
204
|
toBlockExclusive: toBlock + 1,
|
|
203
205
|
fieldSelection: {
|
|
@@ -206,51 +208,44 @@ module BlockData = {
|
|
|
206
208
|
includeAllBlocks: true,
|
|
207
209
|
}
|
|
208
210
|
|
|
209
|
-
let convertResponse = (res:
|
|
211
|
+
let convertResponse = (res: HyperSyncClient.queryResponse): queryResponse<
|
|
210
212
|
array<ReorgDetection.blockDataWithTimestamp>,
|
|
211
213
|
> => {
|
|
212
|
-
res.data
|
|
213
|
-
->
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
blockHash,
|
|
226
|
-
}: ReorgDetection.blockDataWithTimestamp
|
|
227
|
-
),
|
|
228
|
-
)
|
|
229
|
-
| _ =>
|
|
230
|
-
let missingParams =
|
|
231
|
-
[
|
|
232
|
-
block.number->Utils.Option.mapNone("block.number"),
|
|
233
|
-
block.timestamp->Utils.Option.mapNone("block.timestamp"),
|
|
234
|
-
block.hash->Utils.Option.mapNone("block.hash"),
|
|
235
|
-
]->Array.keepMap(p => p)
|
|
236
|
-
|
|
237
|
-
Error(
|
|
238
|
-
UnexpectedMissingParams({
|
|
239
|
-
queryName: "query block data HyperSync",
|
|
240
|
-
missingParams,
|
|
241
|
-
}),
|
|
242
|
-
)
|
|
243
|
-
}
|
|
244
|
-
},
|
|
214
|
+
res.data.blocks
|
|
215
|
+
->Option.getWithDefault([])
|
|
216
|
+
->Array.map(block => {
|
|
217
|
+
switch block {
|
|
218
|
+
| {number: blockNumber, timestamp: blockTimestamp, hash: blockHash} =>
|
|
219
|
+
Ok(
|
|
220
|
+
(
|
|
221
|
+
{
|
|
222
|
+
blockTimestamp,
|
|
223
|
+
blockNumber,
|
|
224
|
+
blockHash,
|
|
225
|
+
}: ReorgDetection.blockDataWithTimestamp
|
|
226
|
+
),
|
|
245
227
|
)
|
|
246
|
-
|
|
228
|
+
| _ =>
|
|
229
|
+
let missingParams =
|
|
230
|
+
[
|
|
231
|
+
block.number->Utils.Option.mapNone("block.number"),
|
|
232
|
+
block.timestamp->Utils.Option.mapNone("block.timestamp"),
|
|
233
|
+
block.hash->Utils.Option.mapNone("block.hash"),
|
|
234
|
+
]->Array.keepMap(p => p)
|
|
235
|
+
|
|
236
|
+
Error(
|
|
237
|
+
UnexpectedMissingParams({
|
|
238
|
+
queryName: "query block data HyperSync",
|
|
239
|
+
missingParams,
|
|
240
|
+
}),
|
|
241
|
+
)
|
|
242
|
+
}
|
|
247
243
|
})
|
|
248
244
|
->Utils.Array.transposeResults
|
|
249
245
|
}
|
|
250
246
|
|
|
251
247
|
let rec queryBlockData = async (
|
|
252
|
-
~
|
|
253
|
-
~apiToken,
|
|
248
|
+
~client: HyperSyncClient.t,
|
|
254
249
|
~fromBlock,
|
|
255
250
|
~toBlock,
|
|
256
251
|
~logger,
|
|
@@ -266,38 +261,28 @@ module BlockData = {
|
|
|
266
261
|
},
|
|
267
262
|
)
|
|
268
263
|
|
|
269
|
-
let maybeSuccessfulRes = switch await
|
|
270
|
-
HyperSyncJsonApi.queryRoute->Rest.fetch(
|
|
271
|
-
{
|
|
272
|
-
"query": body,
|
|
273
|
-
"token": apiToken,
|
|
274
|
-
},
|
|
275
|
-
~client=Rest.client(serverUrl),
|
|
276
|
-
)
|
|
277
|
-
, ~logger) {
|
|
264
|
+
let maybeSuccessfulRes = switch await client.get(~query=body) {
|
|
278
265
|
| exception _ => None
|
|
279
266
|
| res if res.nextBlock <= fromBlock => None
|
|
280
267
|
| res => Some(res)
|
|
281
268
|
}
|
|
282
269
|
|
|
283
|
-
// If the block is not found, retry the query. This can occur since replicas of hypersync might not
|
|
270
|
+
// If the block is not found, retry the query. This can occur since replicas of hypersync might not have caught up yet
|
|
284
271
|
switch maybeSuccessfulRes {
|
|
285
272
|
| None => {
|
|
286
|
-
let logger = Logging.createChild(~params={"url": serverUrl})
|
|
287
273
|
let delayMilliseconds = 100
|
|
288
274
|
logger->Logging.childInfo(
|
|
289
275
|
`Block #${fromBlock->Int.toString} not found in HyperSync. HyperSync has multiple instances and it's possible that they drift independently slightly from the head. Indexing should continue correctly after retrying the query in ${delayMilliseconds->Int.toString}ms.`,
|
|
290
276
|
)
|
|
291
277
|
await Time.resolvePromiseAfterDelay(~delayMilliseconds)
|
|
292
|
-
await queryBlockData(~
|
|
278
|
+
await queryBlockData(~client, ~fromBlock, ~toBlock, ~logger)
|
|
293
279
|
}
|
|
294
280
|
| Some(res) =>
|
|
295
281
|
switch res->convertResponse {
|
|
296
282
|
| Error(_) as err => err
|
|
297
283
|
| Ok(datas) if res.nextBlock <= toBlock => {
|
|
298
284
|
let restRes = await queryBlockData(
|
|
299
|
-
~
|
|
300
|
-
~apiToken,
|
|
285
|
+
~client,
|
|
301
286
|
~fromBlock=res.nextBlock,
|
|
302
287
|
~toBlock,
|
|
303
288
|
~logger,
|
|
@@ -309,7 +294,7 @@ module BlockData = {
|
|
|
309
294
|
}
|
|
310
295
|
}
|
|
311
296
|
|
|
312
|
-
let queryBlockDataMulti = async (~
|
|
297
|
+
let queryBlockDataMulti = async (~client, ~blockNumbers, ~logger) => {
|
|
313
298
|
switch blockNumbers->Array.get(0) {
|
|
314
299
|
| None => Ok([])
|
|
315
300
|
| Some(firstBlock) => {
|
|
@@ -334,8 +319,7 @@ module BlockData = {
|
|
|
334
319
|
let res = await queryBlockData(
|
|
335
320
|
~fromBlock=fromBlock.contents,
|
|
336
321
|
~toBlock=toBlock.contents,
|
|
337
|
-
~
|
|
338
|
-
~apiToken,
|
|
322
|
+
~client,
|
|
339
323
|
~logger,
|
|
340
324
|
)
|
|
341
325
|
let filtered = res->Result.map(datas => {
|
|
@@ -354,10 +338,9 @@ module BlockData = {
|
|
|
354
338
|
}
|
|
355
339
|
}
|
|
356
340
|
|
|
357
|
-
let queryBlockData = (~
|
|
341
|
+
let queryBlockData = (~client, ~blockNumber, ~logger) =>
|
|
358
342
|
BlockData.queryBlockData(
|
|
359
|
-
~
|
|
360
|
-
~apiToken,
|
|
343
|
+
~client,
|
|
361
344
|
~fromBlock=blockNumber,
|
|
362
345
|
~toBlock=blockNumber,
|
|
363
346
|
~logger,
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var Rest = require("../vendored/Rest.res.js");
|
|
5
4
|
var Time = require("../Time.res.js");
|
|
6
5
|
var Utils = require("../Utils.res.js");
|
|
7
|
-
var $$BigInt = require("../bindings/BigInt.res.js");
|
|
8
6
|
var Js_exn = require("rescript/lib/js/js_exn.js");
|
|
9
7
|
var Js_dict = require("rescript/lib/js/js_dict.js");
|
|
10
8
|
var Logging = require("../Logging.res.js");
|
|
@@ -14,7 +12,6 @@ var Belt_Result = require("rescript/lib/js/belt_Result.js");
|
|
|
14
12
|
var Caml_option = require("rescript/lib/js/caml_option.js");
|
|
15
13
|
var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js");
|
|
16
14
|
var HyperSyncClient = require("./HyperSyncClient.res.js");
|
|
17
|
-
var HyperSyncJsonApi = require("./HyperSyncJsonApi.res.js");
|
|
18
15
|
|
|
19
16
|
var fieldNames = [
|
|
20
17
|
"address",
|
|
@@ -77,9 +74,12 @@ async function query(client, fromBlock, toBlock, logSelections, fieldSelection,
|
|
|
77
74
|
}
|
|
78
75
|
var items = Belt_Array.map(res.data, (function (item) {
|
|
79
76
|
var transaction = item.transaction;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
if (transaction) {
|
|
78
|
+
var v = Js_dict.get(transaction, "type");
|
|
79
|
+
if (v !== undefined) {
|
|
80
|
+
transaction["kind"] = Caml_option.valFromOption(v);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
83
|
}
|
|
84
84
|
var missingParams = [];
|
|
85
85
|
var returnedObj = item.log;
|
|
@@ -174,12 +174,12 @@ async function query(client, fromBlock, toBlock, logSelections, fieldSelection,
|
|
|
174
174
|
function makeRequestBody$1(fromBlock, toBlock) {
|
|
175
175
|
return {
|
|
176
176
|
fromBlock: fromBlock,
|
|
177
|
-
|
|
177
|
+
toBlock: toBlock + 1 | 0,
|
|
178
178
|
fieldSelection: {
|
|
179
179
|
block: [
|
|
180
|
-
"
|
|
181
|
-
"
|
|
182
|
-
"
|
|
180
|
+
"Number",
|
|
181
|
+
"Hash",
|
|
182
|
+
"Timestamp"
|
|
183
183
|
]
|
|
184
184
|
},
|
|
185
185
|
includeAllBlocks: true
|
|
@@ -187,52 +187,47 @@ function makeRequestBody$1(fromBlock, toBlock) {
|
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
function convertResponse(res) {
|
|
190
|
-
return Utils.$$Array.transposeResults(Belt_Array.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
};
|
|
230
|
-
}));
|
|
231
|
-
}));
|
|
190
|
+
return Utils.$$Array.transposeResults(Belt_Array.map(Belt_Option.getWithDefault(res.data.blocks, []), (function (block) {
|
|
191
|
+
var blockNumber = block.number;
|
|
192
|
+
if (blockNumber !== undefined) {
|
|
193
|
+
var blockHash = block.hash;
|
|
194
|
+
if (blockHash !== undefined) {
|
|
195
|
+
var blockTimestamp = block.timestamp;
|
|
196
|
+
if (blockTimestamp !== undefined) {
|
|
197
|
+
return {
|
|
198
|
+
TAG: "Ok",
|
|
199
|
+
_0: {
|
|
200
|
+
blockHash: blockHash,
|
|
201
|
+
blockNumber: blockNumber,
|
|
202
|
+
blockTimestamp: blockTimestamp
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
}
|
|
210
|
+
var missingParams = Belt_Array.keepMap([
|
|
211
|
+
Utils.$$Option.mapNone(block.number, "block.number"),
|
|
212
|
+
Utils.$$Option.mapNone(block.timestamp, "block.timestamp"),
|
|
213
|
+
Utils.$$Option.mapNone(block.hash, "block.hash")
|
|
214
|
+
], (function (p) {
|
|
215
|
+
return p;
|
|
216
|
+
}));
|
|
217
|
+
return {
|
|
218
|
+
TAG: "Error",
|
|
219
|
+
_0: {
|
|
220
|
+
TAG: "UnexpectedMissingParams",
|
|
221
|
+
_0: {
|
|
222
|
+
queryName: "query block data HyperSync",
|
|
223
|
+
missingParams: missingParams
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
};
|
|
232
227
|
})));
|
|
233
228
|
}
|
|
234
229
|
|
|
235
|
-
async function queryBlockData(
|
|
230
|
+
async function queryBlockData(client, fromBlock, toBlock, logger) {
|
|
236
231
|
var body = makeRequestBody$1(fromBlock, toBlock);
|
|
237
232
|
var logger$1 = Logging.createChildFrom(logger, {
|
|
238
233
|
logType: "HyperSync get block hash query",
|
|
@@ -243,12 +238,7 @@ async function queryBlockData(serverUrl, apiToken, fromBlock, toBlock, logger) {
|
|
|
243
238
|
var exit = 0;
|
|
244
239
|
var res;
|
|
245
240
|
try {
|
|
246
|
-
res = await
|
|
247
|
-
return Rest.$$fetch(HyperSyncJsonApi.queryRoute, {
|
|
248
|
-
query: body,
|
|
249
|
-
token: apiToken
|
|
250
|
-
}, Rest.client(serverUrl, undefined));
|
|
251
|
-
}));
|
|
241
|
+
res = await client.get(body);
|
|
252
242
|
exit = 1;
|
|
253
243
|
}
|
|
254
244
|
catch (exn){
|
|
@@ -266,20 +256,17 @@ async function queryBlockData(serverUrl, apiToken, fromBlock, toBlock, logger) {
|
|
|
266
256
|
return err;
|
|
267
257
|
}
|
|
268
258
|
var datas = err._0;
|
|
269
|
-
var restRes = await queryBlockData(
|
|
259
|
+
var restRes = await queryBlockData(client, maybeSuccessfulRes.nextBlock, toBlock, logger$1);
|
|
270
260
|
return Belt_Result.map(restRes, (function (rest) {
|
|
271
261
|
return Belt_Array.concat(datas, rest);
|
|
272
262
|
}));
|
|
273
263
|
}
|
|
274
|
-
|
|
275
|
-
url: serverUrl
|
|
276
|
-
});
|
|
277
|
-
Logging.childInfo(logger$2, "Block #" + String(fromBlock) + " not found in HyperSync. HyperSync has multiple instances and it's possible that they drift independently slightly from the head. Indexing should continue correctly after retrying the query in " + String(100) + "ms.");
|
|
264
|
+
Logging.childInfo(logger$1, "Block #" + String(fromBlock) + " not found in HyperSync. HyperSync has multiple instances and it's possible that they drift independently slightly from the head. Indexing should continue correctly after retrying the query in " + String(100) + "ms.");
|
|
278
265
|
await Time.resolvePromiseAfterDelay(100);
|
|
279
|
-
return await queryBlockData(
|
|
266
|
+
return await queryBlockData(client, fromBlock, toBlock, logger$1);
|
|
280
267
|
}
|
|
281
268
|
|
|
282
|
-
async function queryBlockDataMulti(
|
|
269
|
+
async function queryBlockDataMulti(client, blockNumbers, logger) {
|
|
283
270
|
var firstBlock = Belt_Array.get(blockNumbers, 0);
|
|
284
271
|
if (firstBlock === undefined) {
|
|
285
272
|
return {
|
|
@@ -303,7 +290,7 @@ async function queryBlockDataMulti(serverUrl, apiToken, blockNumbers, logger) {
|
|
|
303
290
|
if ((toBlock - fromBlock | 0) > 1000) {
|
|
304
291
|
Js_exn.raiseError("Invalid block data request. Range of block numbers is too large. Max range is 1000. Requested range: " + String(fromBlock) + "-" + String(toBlock));
|
|
305
292
|
}
|
|
306
|
-
var res = await queryBlockData(
|
|
293
|
+
var res = await queryBlockData(client, fromBlock, toBlock, logger);
|
|
307
294
|
var filtered = Belt_Result.map(res, (function (datas) {
|
|
308
295
|
return Belt_Array.keep(datas, (function (data) {
|
|
309
296
|
return set.delete(data.blockNumber);
|
|
@@ -315,8 +302,8 @@ async function queryBlockDataMulti(serverUrl, apiToken, blockNumbers, logger) {
|
|
|
315
302
|
return filtered;
|
|
316
303
|
}
|
|
317
304
|
|
|
318
|
-
function queryBlockData$1(
|
|
319
|
-
return queryBlockData(
|
|
305
|
+
function queryBlockData$1(client, blockNumber, logger) {
|
|
306
|
+
return queryBlockData(client, blockNumber, blockNumber, logger).then(function (res) {
|
|
320
307
|
return Belt_Result.map(res, (function (res) {
|
|
321
308
|
return Belt_Array.get(res, 0);
|
|
322
309
|
}));
|
|
@@ -336,4 +323,4 @@ exports.GetLogs = GetLogs;
|
|
|
336
323
|
exports.queryBlockData = queryBlockData$1;
|
|
337
324
|
exports.queryBlockDataMulti = queryBlockDataMulti;
|
|
338
325
|
exports.mapExn = mapExn;
|
|
339
|
-
/*
|
|
326
|
+
/* Time Not a pure module */
|
|
@@ -53,15 +53,13 @@ module GetLogs: {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
let queryBlockData: (
|
|
56
|
-
~
|
|
57
|
-
~apiToken: string,
|
|
56
|
+
~client: HyperSyncClient.t,
|
|
58
57
|
~blockNumber: int,
|
|
59
58
|
~logger: Pino.t,
|
|
60
59
|
) => promise<queryResponse<option<ReorgDetection.blockDataWithTimestamp>>>
|
|
61
60
|
|
|
62
61
|
let queryBlockDataMulti: (
|
|
63
|
-
~
|
|
64
|
-
~apiToken: string,
|
|
62
|
+
~client: HyperSyncClient.t,
|
|
65
63
|
~blockNumbers: array<int>,
|
|
66
64
|
~logger: Pino.t,
|
|
67
65
|
) => promise<queryResponse<array<ReorgDetection.blockDataWithTimestamp>>>
|
|
@@ -284,6 +284,12 @@ module QueryTypes = {
|
|
|
284
284
|
* JoinNothing: join nothing.
|
|
285
285
|
*/
|
|
286
286
|
joinMode?: joinMode,
|
|
287
|
+
/**
|
|
288
|
+
* Whether to include all blocks regardless of if they are related to a returned transaction or log. Normally
|
|
289
|
+
* the server will return only the blocks that are related to the transaction or logs in the response. But if this
|
|
290
|
+
* is set to true, the server will return data for all blocks in the requested range [from_block, to_block).
|
|
291
|
+
*/
|
|
292
|
+
includeAllBlocks?: bool,
|
|
287
293
|
}
|
|
288
294
|
}
|
|
289
295
|
|
|
@@ -456,10 +462,23 @@ type eventResponse = ResponseTypes.eventResponse
|
|
|
456
462
|
|
|
457
463
|
//Todo, add bindings for these types
|
|
458
464
|
type streamConfig
|
|
459
|
-
type queryResponse
|
|
460
465
|
type queryResponseStream
|
|
461
466
|
type eventStream
|
|
462
467
|
|
|
468
|
+
type queryResponseData = {
|
|
469
|
+
blocks: option<array<ResponseTypes.block>>,
|
|
470
|
+
transactions: option<array<ResponseTypes.transaction>>,
|
|
471
|
+
logs: option<array<ResponseTypes.log>>,
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
type queryResponse = {
|
|
475
|
+
archiveHeight: option<int>,
|
|
476
|
+
nextBlock: int,
|
|
477
|
+
totalExecutionTime: int,
|
|
478
|
+
data: queryResponseData,
|
|
479
|
+
rollbackGuard: option<ResponseTypes.rollbackGuard>,
|
|
480
|
+
}
|
|
481
|
+
|
|
463
482
|
@tag("type")
|
|
464
483
|
type heightStreamEvent =
|
|
465
484
|
| Height({height: int})
|
|
@@ -520,6 +539,16 @@ let make = (
|
|
|
520
539
|
)
|
|
521
540
|
}
|
|
522
541
|
|
|
542
|
+
type logLevel = [#trace | #debug | #info | #warn | #error]
|
|
543
|
+
let logLevelSchema: S.t<logLevel> = S.enum([#trace, #debug, #info, #warn, #error])
|
|
544
|
+
|
|
545
|
+
/**
|
|
546
|
+
* Set the log level for the underlying Rust logger in hypersync-client.
|
|
547
|
+
* Must be called before creating any HypersyncClient.
|
|
548
|
+
*/
|
|
549
|
+
@module("@envio-dev/hypersync-client")
|
|
550
|
+
external setLogLevel: logLevel => unit = "setLogLevel"
|
|
551
|
+
|
|
523
552
|
module Decoder = {
|
|
524
553
|
type rec decodedSolType<'a> = {val: 'a}
|
|
525
554
|
|
|
@@ -82,6 +82,14 @@ function make(url, apiToken, httpReqTimeoutMillis, maxNumRetries, enableChecksum
|
|
|
82
82
|
}, "hyperindex/" + envioVersion);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
var logLevelSchema = S$RescriptSchema.$$enum([
|
|
86
|
+
"trace",
|
|
87
|
+
"debug",
|
|
88
|
+
"info",
|
|
89
|
+
"warn",
|
|
90
|
+
"error"
|
|
91
|
+
]);
|
|
92
|
+
|
|
85
93
|
function toUnderlying(_d) {
|
|
86
94
|
while(true) {
|
|
87
95
|
var d = _d;
|
|
@@ -117,5 +125,6 @@ exports.QueryTypes = QueryTypes;
|
|
|
117
125
|
exports.ResponseTypes = ResponseTypes;
|
|
118
126
|
exports.HeightStream = HeightStream;
|
|
119
127
|
exports.make = make;
|
|
128
|
+
exports.logLevelSchema = logLevelSchema;
|
|
120
129
|
exports.Decoder = Decoder;
|
|
121
130
|
/* serializationFormatSchema Not a pure module */
|
|
@@ -369,8 +369,7 @@ let make = (
|
|
|
369
369
|
//If there were no logs at all in the current page query then fetch the
|
|
370
370
|
//timestamp of the heighest block accounted for
|
|
371
371
|
HyperSync.queryBlockData(
|
|
372
|
-
~
|
|
373
|
-
~apiToken,
|
|
372
|
+
~client,
|
|
374
373
|
~blockNumber=heighestBlockQueried,
|
|
375
374
|
~logger,
|
|
376
375
|
)->Promise.thenResolve(res =>
|
|
@@ -548,8 +547,7 @@ let make = (
|
|
|
548
547
|
|
|
549
548
|
let getBlockHashes = (~blockNumbers, ~logger) =>
|
|
550
549
|
HyperSync.queryBlockDataMulti(
|
|
551
|
-
~
|
|
552
|
-
~apiToken,
|
|
550
|
+
~client,
|
|
553
551
|
~blockNumbers,
|
|
554
552
|
~logger,
|
|
555
553
|
)->Promise.thenResolve(HyperSync.mapExn)
|
|
@@ -280,7 +280,7 @@ function make(param) {
|
|
|
280
280
|
exit = 1;
|
|
281
281
|
}
|
|
282
282
|
if (exit === 1) {
|
|
283
|
-
lastBlockQueriedPromise = HyperSync.queryBlockData(
|
|
283
|
+
lastBlockQueriedPromise = HyperSync.queryBlockData(client, heighestBlockQueried, logger).then(function (res) {
|
|
284
284
|
if (res.TAG !== "Ok") {
|
|
285
285
|
return mkLogAndRaise("Failed to query blockData for block " + String(heighestBlockQueried), HyperSync.queryErrorToMsq(res._0));
|
|
286
286
|
}
|
|
@@ -390,7 +390,7 @@ function make(param) {
|
|
|
390
390
|
};
|
|
391
391
|
};
|
|
392
392
|
var getBlockHashes = function (blockNumbers, logger) {
|
|
393
|
-
return HyperSync.queryBlockDataMulti(
|
|
393
|
+
return HyperSync.queryBlockDataMulti(client, blockNumbers, logger).then(HyperSync.mapExn);
|
|
394
394
|
};
|
|
395
395
|
var jsonApiClient = Rest.client(endpointUrl, undefined);
|
|
396
396
|
return {
|