envio 2.21.5 → 2.22.1
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/index.js +2 -2
- package/package.json +11 -8
- package/rescript.json +1 -1
- package/src/Address.res.js +30 -0
- package/src/ChainMap.res.js +77 -0
- package/src/Envio.res +2 -0
- package/src/Envio.res.js +16 -0
- package/src/ErrorHandling.res +0 -26
- package/src/ErrorHandling.res.js +56 -0
- package/src/EventUtils.res.js +75 -0
- package/src/EvmTypes.res.js +16 -0
- package/src/FetchState.res.js +969 -0
- package/src/Hasura.res +297 -0
- package/src/Hasura.res.js +245 -0
- package/src/Internal.res +26 -0
- package/src/Internal.res.js +50 -0
- package/src/LazyLoader.res.js +117 -0
- package/src/LoadManager.res.js +124 -0
- package/src/LogSelection.res.js +203 -0
- package/src/Logging.res +31 -31
- package/src/Logging.res.js +247 -0
- package/src/Persistence.res +111 -0
- package/src/Persistence.res.js +90 -0
- package/src/PgStorage.res +165 -0
- package/src/PgStorage.res.js +125 -0
- package/src/Prometheus.res +75 -40
- package/src/Prometheus.res.js +750 -0
- package/src/ReorgDetection.res.js +223 -0
- package/src/Throttler.res.js +60 -0
- package/src/Time.res.js +41 -0
- package/src/TopicFilter.res.js +86 -0
- package/src/Utils.res.js +527 -0
- package/src/bindings/BigDecimal.gen.ts +1 -1
- package/src/bindings/BigDecimal.res.js +41 -0
- package/src/bindings/BigInt.res.js +138 -0
- package/src/bindings/Ethers.gen.ts +1 -1
- package/src/bindings/Ethers.res.js +109 -0
- package/src/bindings/Express.res.js +2 -0
- package/src/bindings/Hrtime.res.js +66 -0
- package/src/bindings/NodeJs.res.js +29 -0
- package/src/bindings/Pino.res.js +95 -0
- package/src/bindings/Postgres.res.js +16 -0
- package/src/bindings/PromClient.res.js +17 -0
- package/src/bindings/Promise.res +5 -0
- package/src/bindings/Promise.res.js +25 -0
- package/src/bindings/SDSL.res.js +8 -0
- package/src/bindings/Viem.res.js +45 -0
- package/src/db/EntityHistory.res +3 -3
- package/src/db/EntityHistory.res.js +307 -0
- package/src/db/Schema.res.js +54 -0
- package/src/db/Table.res.js +365 -0
- package/src/sources/Fuel.res.js +28 -0
- package/src/sources/HyperFuel.res.js +193 -0
- package/src/sources/HyperFuelClient.res.js +19 -0
- package/src/sources/HyperSync.res.js +301 -0
- package/src/sources/HyperSyncClient.res.js +99 -0
- package/src/sources/HyperSyncJsonApi.res.js +259 -0
- package/src/sources/Rpc.res.js +198 -0
- package/src/sources/Source.res.js +9 -0
- package/src/sources/SourceManager.res.js +366 -0
- package/src/vendored/Rest.res.js +574 -0
- package/src/Enum.res +0 -22
package/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Some parts like Sury reexport are impossible to implement
|
|
3
3
|
// on the JS side, so we need to do it here
|
|
4
4
|
|
|
5
|
-
const envioGen = require("./src/Envio.
|
|
5
|
+
const envioGen = require("./src/Envio.res.js");
|
|
6
6
|
Object.assign(exports, envioGen);
|
|
7
7
|
|
|
8
8
|
const Sury = require("rescript-schema");
|
|
@@ -30,7 +30,7 @@ exports.S = {
|
|
|
30
30
|
merge: Sury.merge,
|
|
31
31
|
optional: Sury.optional,
|
|
32
32
|
nullable: Sury.nullable,
|
|
33
|
-
bigDecimal: require("./src/bindings/BigDecimal.
|
|
33
|
+
bigDecimal: require("./src/bindings/BigDecimal.res.js").schema,
|
|
34
34
|
// Nullish type will change in "sury@10"
|
|
35
35
|
// nullish: Sury.nullish,
|
|
36
36
|
assertOrThrow: Sury.assertOrThrow,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "envio",
|
|
3
|
-
"version": "v2.
|
|
3
|
+
"version": "v2.22.1",
|
|
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,16 +25,20 @@
|
|
|
25
25
|
},
|
|
26
26
|
"homepage": "https://envio.dev",
|
|
27
27
|
"optionalDependencies": {
|
|
28
|
-
"envio-linux-x64": "v2.
|
|
29
|
-
"envio-linux-arm64": "v2.
|
|
30
|
-
"envio-darwin-x64": "v2.
|
|
31
|
-
"envio-darwin-arm64": "v2.
|
|
28
|
+
"envio-linux-x64": "v2.22.1",
|
|
29
|
+
"envio-linux-arm64": "v2.22.1",
|
|
30
|
+
"envio-darwin-x64": "v2.22.1",
|
|
31
|
+
"envio-darwin-arm64": "v2.22.1"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@envio-dev/hypersync-client": "0.6.5",
|
|
35
35
|
"rescript": "11.1.3",
|
|
36
36
|
"rescript-schema": "9.3.0",
|
|
37
|
-
"viem": "2.21.0"
|
|
37
|
+
"viem": "2.21.0",
|
|
38
|
+
"bignumber.js": "9.1.2",
|
|
39
|
+
"pino": "8.16.1",
|
|
40
|
+
"pino-pretty": "10.2.3",
|
|
41
|
+
"prom-client": "15.0.0"
|
|
38
42
|
},
|
|
39
43
|
"files": [
|
|
40
44
|
"bin.js",
|
|
@@ -43,7 +47,6 @@
|
|
|
43
47
|
"rescript.json",
|
|
44
48
|
"index.d.ts",
|
|
45
49
|
"index.js",
|
|
46
|
-
"src"
|
|
47
|
-
"!src/**/*.bs.js"
|
|
50
|
+
"src"
|
|
48
51
|
]
|
|
49
52
|
}
|
package/rescript.json
CHANGED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var Viem = require("viem");
|
|
5
|
+
var Js_exn = require("rescript/lib/js/js_exn.js");
|
|
6
|
+
var S$RescriptSchema = require("rescript-schema/src/S.res.js");
|
|
7
|
+
|
|
8
|
+
var schema = S$RescriptSchema.setName(S$RescriptSchema.string, "Address");
|
|
9
|
+
|
|
10
|
+
function fromStringOrThrow(string) {
|
|
11
|
+
try {
|
|
12
|
+
return Viem.getAddress(string);
|
|
13
|
+
}
|
|
14
|
+
catch (exn){
|
|
15
|
+
return Js_exn.raiseError("Address \"" + string + "\" is invalid. Expected a 20-byte hex string starting with 0x.");
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function fromAddressOrThrow(address) {
|
|
20
|
+
return fromStringOrThrow(address);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
var Evm = {
|
|
24
|
+
fromStringOrThrow: fromStringOrThrow,
|
|
25
|
+
fromAddressOrThrow: fromAddressOrThrow
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
exports.schema = schema;
|
|
29
|
+
exports.Evm = Evm;
|
|
30
|
+
/* schema Not a pure module */
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var Caml = require("rescript/lib/js/caml.js");
|
|
5
|
+
var Js_exn = require("rescript/lib/js/js_exn.js");
|
|
6
|
+
var Belt_Id = require("rescript/lib/js/belt_Id.js");
|
|
7
|
+
var Belt_Map = require("rescript/lib/js/belt_Map.js");
|
|
8
|
+
var Belt_Option = require("rescript/lib/js/belt_Option.js");
|
|
9
|
+
var Caml_option = require("rescript/lib/js/caml_option.js");
|
|
10
|
+
|
|
11
|
+
function toString(chainId) {
|
|
12
|
+
return String(chainId);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function makeUnsafe(chainId) {
|
|
16
|
+
return chainId;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
var Chain = {
|
|
20
|
+
toString: toString,
|
|
21
|
+
makeUnsafe: makeUnsafe
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
var cmp = Caml.int_compare;
|
|
25
|
+
|
|
26
|
+
var ChainIdCmp = Belt_Id.MakeComparableU({
|
|
27
|
+
cmp: cmp
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
function fromArrayUnsafe(arr) {
|
|
31
|
+
return Belt_Map.fromArray(arr, ChainIdCmp);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function get(self, chain) {
|
|
35
|
+
var v = Belt_Map.get(self, chain);
|
|
36
|
+
if (v !== undefined) {
|
|
37
|
+
return Caml_option.valFromOption(v);
|
|
38
|
+
} else {
|
|
39
|
+
return Js_exn.raiseError("No chain with id " + String(chain) + " found in chain map");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
var set = Belt_Map.set;
|
|
44
|
+
|
|
45
|
+
var values = Belt_Map.valuesToArray;
|
|
46
|
+
|
|
47
|
+
var keys = Belt_Map.keysToArray;
|
|
48
|
+
|
|
49
|
+
var entries = Belt_Map.toArray;
|
|
50
|
+
|
|
51
|
+
var has = Belt_Map.has;
|
|
52
|
+
|
|
53
|
+
var map = Belt_Map.map;
|
|
54
|
+
|
|
55
|
+
var mapWithKey = Belt_Map.mapWithKey;
|
|
56
|
+
|
|
57
|
+
var size = Belt_Map.size;
|
|
58
|
+
|
|
59
|
+
function update(map, chain, updateFn) {
|
|
60
|
+
return Belt_Map.update(map, chain, (function (opt) {
|
|
61
|
+
return Belt_Option.map(opt, updateFn);
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
exports.Chain = Chain;
|
|
66
|
+
exports.fromArrayUnsafe = fromArrayUnsafe;
|
|
67
|
+
exports.get = get;
|
|
68
|
+
exports.set = set;
|
|
69
|
+
exports.values = values;
|
|
70
|
+
exports.keys = keys;
|
|
71
|
+
exports.entries = entries;
|
|
72
|
+
exports.has = has;
|
|
73
|
+
exports.map = map;
|
|
74
|
+
exports.mapWithKey = mapWithKey;
|
|
75
|
+
exports.size = size;
|
|
76
|
+
exports.update = update;
|
|
77
|
+
/* ChainIdCmp Not a pure module */
|
package/src/Envio.res
CHANGED
|
@@ -39,6 +39,7 @@ let experimental_createEffect = (
|
|
|
39
39
|
options: effectOptions<'input, 'output>,
|
|
40
40
|
handler: effectArgs<'input> => promise<'output>,
|
|
41
41
|
) => {
|
|
42
|
+
Prometheus.EffectCallsCount.set(~callsCount=0, ~effectName=options.name)
|
|
42
43
|
{
|
|
43
44
|
name: options.name,
|
|
44
45
|
handler: handler->(
|
|
@@ -46,5 +47,6 @@ let experimental_createEffect = (
|
|
|
46
47
|
Internal.effectOutput,
|
|
47
48
|
>
|
|
48
49
|
),
|
|
50
|
+
callsCount: 0,
|
|
49
51
|
}->(Utils.magic: Internal.effect => effect<'input, 'output>)
|
|
50
52
|
}
|
package/src/Envio.res.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var Prometheus = require("./Prometheus.res.js");
|
|
5
|
+
|
|
6
|
+
function experimental_createEffect(options, handler) {
|
|
7
|
+
Prometheus.EffectCallsCount.set(0, options.name);
|
|
8
|
+
return {
|
|
9
|
+
name: options.name,
|
|
10
|
+
handler: handler,
|
|
11
|
+
callsCount: 0
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
exports.experimental_createEffect = experimental_createEffect;
|
|
16
|
+
/* Prometheus Not a pure module */
|
package/src/ErrorHandling.res
CHANGED
|
@@ -33,29 +33,3 @@ let logAndRaise = self => {
|
|
|
33
33
|
self->log
|
|
34
34
|
self->raiseExn
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
An environment to manage control flow propogating results
|
|
39
|
-
with Error that contain ErrorHandling.t in async
|
|
40
|
-
contexts and avoid nested switch statements on awaited promises
|
|
41
|
-
Similar to rust result propogation
|
|
42
|
-
*/
|
|
43
|
-
module ResultPropogateEnv = {
|
|
44
|
-
exception ErrorHandlingEarlyReturn(t)
|
|
45
|
-
|
|
46
|
-
type resultWithErrorHandle<'a> = result<'a, t>
|
|
47
|
-
type asyncBody<'a> = unit => promise<resultWithErrorHandle<'a>>
|
|
48
|
-
|
|
49
|
-
let runAsyncEnv = async (body: asyncBody<'a>) => {
|
|
50
|
-
switch await body() {
|
|
51
|
-
| exception ErrorHandlingEarlyReturn(e) => Error(e)
|
|
52
|
-
| endReturn => endReturn
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
let propogate = (res: resultWithErrorHandle<'a>) =>
|
|
57
|
-
switch res {
|
|
58
|
-
| Ok(v) => v
|
|
59
|
-
| Error(e) => raise(ErrorHandlingEarlyReturn(e))
|
|
60
|
-
}
|
|
61
|
-
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var Logging = require("./Logging.res.js");
|
|
5
|
+
var Internal = require("./Internal.res.js");
|
|
6
|
+
|
|
7
|
+
function make(exn, loggerOpt, msg) {
|
|
8
|
+
var logger = loggerOpt !== undefined ? loggerOpt : Logging.getLogger();
|
|
9
|
+
return {
|
|
10
|
+
logger: logger,
|
|
11
|
+
exn: exn,
|
|
12
|
+
msg: msg
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function log(self) {
|
|
17
|
+
var msg = self.msg;
|
|
18
|
+
var exn = self.exn;
|
|
19
|
+
var logger = self.logger;
|
|
20
|
+
if (msg !== undefined) {
|
|
21
|
+
return Logging.childErrorWithExn(logger, Internal.prettifyExn(exn), msg);
|
|
22
|
+
} else {
|
|
23
|
+
return Logging.childError(logger, Internal.prettifyExn(exn));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function raiseExn(self) {
|
|
28
|
+
throw Internal.prettifyExn(self.exn);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function mkLogAndRaise(logger, msg, exn) {
|
|
32
|
+
var exn$1 = Internal.prettifyExn(exn);
|
|
33
|
+
log(make(exn$1, logger, msg));
|
|
34
|
+
throw exn$1;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function unwrapLogAndRaise(logger, msg, result) {
|
|
38
|
+
if (result.TAG === "Ok") {
|
|
39
|
+
return result._0;
|
|
40
|
+
} else {
|
|
41
|
+
return mkLogAndRaise(logger, msg, result._0);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function logAndRaise(self) {
|
|
46
|
+
log(self);
|
|
47
|
+
throw Internal.prettifyExn(self.exn);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
exports.make = make;
|
|
51
|
+
exports.log = log;
|
|
52
|
+
exports.raiseExn = raiseExn;
|
|
53
|
+
exports.mkLogAndRaise = mkLogAndRaise;
|
|
54
|
+
exports.unwrapLogAndRaise = unwrapLogAndRaise;
|
|
55
|
+
exports.logAndRaise = logAndRaise;
|
|
56
|
+
/* Logging Not a pure module */
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var $$BigInt = require("./bindings/BigInt.res.js");
|
|
5
|
+
var Belt_Int = require("rescript/lib/js/belt_Int.js");
|
|
6
|
+
var Caml_obj = require("rescript/lib/js/caml_obj.js");
|
|
7
|
+
|
|
8
|
+
function getEventComparator(multiChainEventIndex) {
|
|
9
|
+
return [
|
|
10
|
+
multiChainEventIndex.timestamp,
|
|
11
|
+
multiChainEventIndex.chainId,
|
|
12
|
+
multiChainEventIndex.blockNumber,
|
|
13
|
+
multiChainEventIndex.logIndex
|
|
14
|
+
];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function getEventComparatorFromQueueItem(param) {
|
|
18
|
+
return [
|
|
19
|
+
param.timestamp,
|
|
20
|
+
param.chain,
|
|
21
|
+
param.blockNumber,
|
|
22
|
+
param.logIndex
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function isEarlierEvent(event1, event2) {
|
|
27
|
+
return Caml_obj.lessthan(getEventComparator(event1), getEventComparator(event2));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function packEventIndex(blockNumber, logIndex) {
|
|
31
|
+
var blockNumber$1 = BigInt(blockNumber);
|
|
32
|
+
var logIndex$1 = BigInt(logIndex);
|
|
33
|
+
var blockNumber$2 = $$BigInt.Bitwise.shift_left(blockNumber$1, BigInt(16));
|
|
34
|
+
return $$BigInt.Bitwise.logor(blockNumber$2, logIndex$1);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function packMultiChainEventIndex(timestamp, chainId, blockNumber, logIndex) {
|
|
38
|
+
var timestamp$1 = BigInt(timestamp);
|
|
39
|
+
var chainId$1 = BigInt(chainId);
|
|
40
|
+
var blockNumber$1 = BigInt(blockNumber);
|
|
41
|
+
var logIndex$1 = BigInt(logIndex);
|
|
42
|
+
var timestamp$2 = $$BigInt.Bitwise.shift_left(timestamp$1, BigInt(48));
|
|
43
|
+
var chainId$2 = $$BigInt.Bitwise.shift_left(chainId$1, BigInt(16));
|
|
44
|
+
var blockNumber$2 = $$BigInt.Bitwise.shift_left(blockNumber$1, BigInt(16));
|
|
45
|
+
return $$BigInt.Bitwise.logor($$BigInt.Bitwise.logor($$BigInt.Bitwise.logor(timestamp$2, chainId$2), blockNumber$2), logIndex$1);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function unpackEventIndex(packedEventIndex) {
|
|
49
|
+
var blockNumber = $$BigInt.Bitwise.shift_right(packedEventIndex, BigInt(16));
|
|
50
|
+
var logIndexMask = BigInt(65535);
|
|
51
|
+
var logIndex = $$BigInt.Bitwise.logand(packedEventIndex, logIndexMask);
|
|
52
|
+
return {
|
|
53
|
+
blockNumber: Belt_Int.fromString(blockNumber.toString()),
|
|
54
|
+
logIndex: Belt_Int.fromString(logIndex.toString())
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function packEventIndexFromRecord(eventIndex) {
|
|
59
|
+
return packEventIndex(eventIndex.blockNumber, eventIndex.logIndex);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function getEventIdKeyString(chainId, eventId) {
|
|
63
|
+
var chainIdStr = String(chainId);
|
|
64
|
+
return chainIdStr + "_" + eventId;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
exports.getEventComparator = getEventComparator;
|
|
68
|
+
exports.getEventComparatorFromQueueItem = getEventComparatorFromQueueItem;
|
|
69
|
+
exports.isEarlierEvent = isEarlierEvent;
|
|
70
|
+
exports.packEventIndex = packEventIndex;
|
|
71
|
+
exports.packMultiChainEventIndex = packMultiChainEventIndex;
|
|
72
|
+
exports.unpackEventIndex = unpackEventIndex;
|
|
73
|
+
exports.packEventIndexFromRecord = packEventIndexFromRecord;
|
|
74
|
+
exports.getEventIdKeyString = getEventIdKeyString;
|
|
75
|
+
/* BigInt Not a pure module */
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var S$RescriptSchema = require("rescript-schema/src/S.res.js");
|
|
5
|
+
|
|
6
|
+
var schema = S$RescriptSchema.setName(S$RescriptSchema.string, "EVM.Hex");
|
|
7
|
+
|
|
8
|
+
var Hex = {
|
|
9
|
+
schema: schema
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
var Abi = {};
|
|
13
|
+
|
|
14
|
+
exports.Hex = Hex;
|
|
15
|
+
exports.Abi = Abi;
|
|
16
|
+
/* schema Not a pure module */
|