envio 3.3.0-alpha.1 → 3.3.0-alpha.10
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/evm.schema.json +10 -0
- package/index.d.ts +45 -25
- package/package.json +7 -7
- package/src/Address.res +5 -2
- package/src/Address.res.mjs +3 -1
- package/src/Api.res +1 -1
- package/src/Api.res.mjs +1 -1
- package/src/Batch.res +0 -6
- package/src/Batch.res.mjs +1 -12
- package/src/BatchProcessing.res +7 -12
- package/src/BatchProcessing.res.mjs +8 -7
- package/src/Bin.res +3 -0
- package/src/Bin.res.mjs +4 -0
- package/src/ChainFetching.res +43 -9
- package/src/ChainFetching.res.mjs +34 -15
- package/src/ChainMetadata.res +1 -11
- package/src/ChainMetadata.res.mjs +1 -10
- package/src/ChainState.res +605 -151
- package/src/ChainState.res.mjs +427 -104
- package/src/ChainState.resi +72 -4
- package/src/Config.res +61 -33
- package/src/Config.res.mjs +50 -10
- package/src/ContractRegisterContext.res +2 -12
- package/src/ContractRegisterContext.res.mjs +3 -5
- package/src/Core.res +14 -3
- package/src/CrossChainState.res +113 -89
- package/src/CrossChainState.res.mjs +64 -60
- package/src/CrossChainState.resi +1 -1
- package/src/Ecosystem.res +5 -6
- package/src/Ecosystem.res.mjs +3 -3
- package/src/Envio.res +17 -11
- package/src/EnvioGlobal.res +53 -0
- package/src/EnvioGlobal.res.mjs +31 -0
- package/src/EventConfigBuilder.res +177 -88
- package/src/EventConfigBuilder.res.mjs +99 -42
- package/src/EventProcessing.res +74 -28
- package/src/EventProcessing.res.mjs +55 -29
- package/src/ExitOnCaughtUp.res +10 -2
- package/src/ExitOnCaughtUp.res.mjs +10 -1
- package/src/FetchState.res +544 -356
- package/src/FetchState.res.mjs +412 -471
- package/src/HandlerLoader.res +8 -104
- package/src/HandlerLoader.res.mjs +2 -81
- package/src/HandlerRegister.res +518 -144
- package/src/HandlerRegister.res.mjs +285 -133
- package/src/HandlerRegister.resi +24 -8
- package/src/IndexerState.res +10 -3
- package/src/IndexerState.res.mjs +11 -4
- package/src/IndexerState.resi +2 -1
- package/src/IndexingAddresses.res +108 -0
- package/src/IndexingAddresses.res.mjs +101 -0
- package/src/IndexingAddresses.resi +34 -0
- package/src/Internal.res +155 -46
- package/src/Internal.res.mjs +30 -2
- package/src/LoadLayer.res +5 -5
- package/src/LoadLayer.res.mjs +6 -6
- package/src/LogSelection.res +102 -165
- package/src/LogSelection.res.mjs +101 -116
- package/src/Main.res +71 -236
- package/src/Main.res.mjs +60 -145
- package/src/Metrics.res +74 -0
- package/src/Metrics.res.mjs +75 -0
- package/src/PgStorage.res +4 -4
- package/src/PgStorage.res.mjs +5 -5
- package/src/Prometheus.res +10 -63
- package/src/Prometheus.res.mjs +124 -171
- package/src/PruneStaleHistory.res +2 -2
- package/src/PruneStaleHistory.res.mjs +3 -3
- package/src/RawEvent.res +7 -2
- package/src/RawEvent.res.mjs +4 -4
- package/src/Rollback.res +3 -3
- package/src/Rollback.res.mjs +4 -4
- package/src/RollbackCommit.res +4 -1
- package/src/RollbackCommit.res.mjs +3 -2
- package/src/SimulateDeadInputTracker.res +85 -0
- package/src/SimulateDeadInputTracker.res.mjs +73 -0
- package/src/SimulateDeadInputTracker.resi +12 -0
- package/src/SimulateItems.res +91 -23
- package/src/SimulateItems.res.mjs +55 -32
- package/src/TestIndexer.res +54 -40
- package/src/TestIndexer.res.mjs +37 -30
- package/src/bindings/Performance.res +7 -0
- package/src/bindings/Performance.res.mjs +21 -0
- package/src/bindings/Performance.resi +7 -0
- package/src/bindings/Viem.res +0 -41
- package/src/bindings/Viem.res.mjs +1 -43
- package/src/sources/BlockStore.res +46 -0
- package/src/sources/BlockStore.res.mjs +24 -0
- package/src/sources/EventRouter.res +36 -33
- package/src/sources/EventRouter.res.mjs +13 -14
- package/src/sources/Evm.res +83 -72
- package/src/sources/Evm.res.mjs +53 -69
- package/src/sources/EvmChain.res +18 -20
- package/src/sources/EvmChain.res.mjs +15 -15
- package/src/sources/EvmRpcClient.res +74 -5
- package/src/sources/EvmRpcClient.res.mjs +13 -4
- package/src/sources/FieldMask.res +39 -0
- package/src/sources/FieldMask.res.mjs +42 -0
- package/src/sources/Fuel.res +9 -6
- package/src/sources/Fuel.res.mjs +5 -10
- package/src/sources/HyperFuelSource.res +46 -50
- package/src/sources/HyperFuelSource.res.mjs +64 -54
- package/src/sources/HyperSync.res +39 -7
- package/src/sources/HyperSync.res.mjs +57 -37
- package/src/sources/HyperSync.resi +12 -2
- package/src/sources/HyperSyncClient.res +22 -111
- package/src/sources/HyperSyncClient.res.mjs +2 -30
- package/src/sources/HyperSyncHeightStream.res +1 -8
- package/src/sources/HyperSyncHeightStream.res.mjs +0 -2
- package/src/sources/HyperSyncSource.res +94 -107
- package/src/sources/HyperSyncSource.res.mjs +82 -86
- package/src/sources/Rpc.res +15 -47
- package/src/sources/Rpc.res.mjs +25 -56
- package/src/sources/RpcSource.res +320 -467
- package/src/sources/RpcSource.res.mjs +268 -385
- package/src/sources/RpcWebSocketHeightStream.res +0 -5
- package/src/sources/RpcWebSocketHeightStream.res.mjs +0 -2
- package/src/sources/SimulateSource.res +10 -4
- package/src/sources/SimulateSource.res.mjs +16 -6
- package/src/sources/Source.res +34 -6
- package/src/sources/SourceManager.res +77 -19
- package/src/sources/SourceManager.res.mjs +63 -21
- package/src/sources/SourceManager.resi +10 -0
- package/src/sources/Svm.res +31 -16
- package/src/sources/Svm.res.mjs +36 -13
- package/src/sources/SvmHyperSyncClient.res +5 -32
- package/src/sources/SvmHyperSyncSource.res +159 -134
- package/src/sources/SvmHyperSyncSource.res.mjs +164 -129
- package/src/sources/TransactionStore.res +49 -0
- package/src/sources/TransactionStore.res.mjs +30 -0
- package/src/tui/Tui.res +13 -16
- package/src/tui/Tui.res.mjs +12 -14
- package/svm.schema.json +49 -37
- package/src/bindings/Hrtime.res +0 -58
- package/src/bindings/Hrtime.res.mjs +0 -90
- package/src/bindings/Hrtime.resi +0 -30
package/src/HandlerLoader.res
CHANGED
|
@@ -72,108 +72,13 @@ let autoLoadFromSrcHandlers = async (~handlers: string) => {
|
|
|
72
72
|
->Promise.all
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
//
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
// `
|
|
79
|
-
//
|
|
80
|
-
let
|
|
81
|
-
|
|
82
|
-
let newContracts = chain.contracts->Array.map(contract => {
|
|
83
|
-
let newEvents = contract.events->Array.map(
|
|
84
|
-
ev => {
|
|
85
|
-
let isWildcard = HandlerRegister.isWildcard(
|
|
86
|
-
~contractName=ev.contractName,
|
|
87
|
-
~eventName=ev.name,
|
|
88
|
-
)
|
|
89
|
-
let handler = HandlerRegister.getHandler(
|
|
90
|
-
~contractName=ev.contractName,
|
|
91
|
-
~eventName=ev.name,
|
|
92
|
-
)
|
|
93
|
-
let contractRegister = HandlerRegister.getContractRegister(
|
|
94
|
-
~contractName=ev.contractName,
|
|
95
|
-
~eventName=ev.name,
|
|
96
|
-
)
|
|
97
|
-
switch config.ecosystem.name {
|
|
98
|
-
| Fuel =>
|
|
99
|
-
let fuelEv = ev->(Utils.magic: Internal.eventConfig => Internal.fuelEventConfig)
|
|
100
|
-
|
|
101
|
-
({
|
|
102
|
-
...fuelEv,
|
|
103
|
-
isWildcard,
|
|
104
|
-
handler,
|
|
105
|
-
contractRegister,
|
|
106
|
-
dependsOnAddresses: Internal.dependsOnAddresses(
|
|
107
|
-
~isWildcard,
|
|
108
|
-
~filterByAddresses=false,
|
|
109
|
-
),
|
|
110
|
-
} :> Internal.eventConfig)
|
|
111
|
-
| Evm =>
|
|
112
|
-
let evmEv = ev->(Utils.magic: Internal.eventConfig => Internal.evmEventConfig)
|
|
113
|
-
let eventFilters = HandlerRegister.getOnEventWhere(
|
|
114
|
-
~contractName=ev.contractName,
|
|
115
|
-
~eventName=ev.name,
|
|
116
|
-
)
|
|
117
|
-
let indexedParams = evmEv.paramsMetadata->Array.filter(p => p.indexed)
|
|
118
|
-
let {
|
|
119
|
-
getEventFiltersOrThrow,
|
|
120
|
-
filterByAddresses,
|
|
121
|
-
addressFilterParamGroups,
|
|
122
|
-
} = LogSelection.parseEventFiltersOrThrow(
|
|
123
|
-
~eventFilters,
|
|
124
|
-
~sighash=evmEv.sighash,
|
|
125
|
-
~params=indexedParams->Array.map(p => p.name),
|
|
126
|
-
~contractName=ev.contractName,
|
|
127
|
-
~probeChainId=chain.id,
|
|
128
|
-
~onEventBlockFilterSchema=config.ecosystem.onEventBlockFilterSchema,
|
|
129
|
-
~topic1=?indexedParams
|
|
130
|
-
->Array.get(0)
|
|
131
|
-
->Option.map(EventConfigBuilder.buildTopicGetter),
|
|
132
|
-
~topic2=?indexedParams
|
|
133
|
-
->Array.get(1)
|
|
134
|
-
->Option.map(EventConfigBuilder.buildTopicGetter),
|
|
135
|
-
~topic3=?indexedParams
|
|
136
|
-
->Array.get(2)
|
|
137
|
-
->Option.map(EventConfigBuilder.buildTopicGetter),
|
|
138
|
-
)
|
|
139
|
-
|
|
140
|
-
({
|
|
141
|
-
...evmEv,
|
|
142
|
-
isWildcard,
|
|
143
|
-
handler,
|
|
144
|
-
contractRegister,
|
|
145
|
-
getEventFiltersOrThrow,
|
|
146
|
-
filterByAddresses,
|
|
147
|
-
clientAddressFilter: ?EventConfigBuilder.buildAddressFilter(addressFilterParamGroups),
|
|
148
|
-
dependsOnAddresses: Internal.dependsOnAddresses(~isWildcard, ~filterByAddresses),
|
|
149
|
-
} :> Internal.eventConfig)
|
|
150
|
-
| Svm =>
|
|
151
|
-
let svmEv =
|
|
152
|
-
ev->(Utils.magic: Internal.eventConfig => Internal.svmInstructionEventConfig)
|
|
153
|
-
({
|
|
154
|
-
...svmEv,
|
|
155
|
-
isWildcard,
|
|
156
|
-
handler,
|
|
157
|
-
contractRegister,
|
|
158
|
-
dependsOnAddresses: Internal.dependsOnAddresses(
|
|
159
|
-
~isWildcard,
|
|
160
|
-
~filterByAddresses=false,
|
|
161
|
-
),
|
|
162
|
-
} :> Internal.eventConfig)
|
|
163
|
-
}
|
|
164
|
-
},
|
|
165
|
-
)
|
|
166
|
-
{...contract, events: newEvents}
|
|
167
|
-
})
|
|
168
|
-
{...chain, contracts: newContracts}
|
|
169
|
-
})
|
|
170
|
-
{...config, chainMap: newChainMap}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// `Config` never reads `HandlerRegister`. The only way to get a config that
|
|
174
|
-
// reflects registration state is through the returned value here.
|
|
175
|
-
let registerAllHandlers = async (~config: Config.t) => {
|
|
176
|
-
HandlerRegister.startRegistration(~ecosystem=config.ecosystem)
|
|
75
|
+
// `Config` holds only event definitions; handler + per-chain `where`
|
|
76
|
+
// registration state is layered on separately as `onEventRegistration`s by
|
|
77
|
+
// `HandlerRegister.finishRegistration`. This loads the user handler files
|
|
78
|
+
// (populating the global `HandlerRegister` registry as a side effect) and
|
|
79
|
+
// returns the resulting per-chain registrations.
|
|
80
|
+
let registerAllHandlers = async (~config: Config.t): HandlerRegister.registrationsByChainId => {
|
|
81
|
+
HandlerRegister.startRegistration(~config)
|
|
177
82
|
|
|
178
83
|
// Auto-load all .js files from src/handlers directory
|
|
179
84
|
await autoLoadFromSrcHandlers(~handlers=config.handlers)
|
|
@@ -185,6 +90,5 @@ let registerAllHandlers = async (~config: Config.t) => {
|
|
|
185
90
|
})
|
|
186
91
|
->Promise.all
|
|
187
92
|
|
|
188
|
-
|
|
189
|
-
(applyRegistrations(~config), registrations)
|
|
93
|
+
HandlerRegister.finishRegistration(~config)
|
|
190
94
|
}
|
|
@@ -5,16 +5,11 @@ import * as Path from "path";
|
|
|
5
5
|
import * as Utils from "./Utils.res.mjs";
|
|
6
6
|
import * as Logging from "./Logging.res.mjs";
|
|
7
7
|
import * as Process from "process";
|
|
8
|
-
import * as ChainMap from "./ChainMap.res.mjs";
|
|
9
|
-
import * as Internal from "./Internal.res.mjs";
|
|
10
8
|
import * as Nodemodule from "node:module";
|
|
11
|
-
import * as LogSelection from "./LogSelection.res.mjs";
|
|
12
|
-
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
13
9
|
import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
|
|
14
10
|
import * as Stdlib_Promise from "@rescript/runtime/lib/es6/Stdlib_Promise.js";
|
|
15
11
|
import * as HandlerRegister from "./HandlerRegister.res.mjs";
|
|
16
12
|
import * as Promises from "node:fs/promises";
|
|
17
|
-
import * as EventConfigBuilder from "./EventConfigBuilder.res.mjs";
|
|
18
13
|
import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
|
|
19
14
|
|
|
20
15
|
try {
|
|
@@ -61,91 +56,17 @@ async function autoLoadFromSrcHandlers(handlers) {
|
|
|
61
56
|
})));
|
|
62
57
|
}
|
|
63
58
|
|
|
64
|
-
function applyRegistrations(config) {
|
|
65
|
-
let newChainMap = ChainMap.map(config.chainMap, chain => {
|
|
66
|
-
let newContracts = chain.contracts.map(contract => {
|
|
67
|
-
let newEvents = contract.events.map(ev => {
|
|
68
|
-
let isWildcard = HandlerRegister.isWildcard(ev.contractName, ev.name);
|
|
69
|
-
let handler = HandlerRegister.getHandler(ev.contractName, ev.name);
|
|
70
|
-
let contractRegister = HandlerRegister.getContractRegister(ev.contractName, ev.name);
|
|
71
|
-
let match = config.ecosystem.name;
|
|
72
|
-
switch (match) {
|
|
73
|
-
case "evm" :
|
|
74
|
-
let eventFilters = HandlerRegister.getOnEventWhere(ev.contractName, ev.name);
|
|
75
|
-
let indexedParams = ev.paramsMetadata.filter(p => p.indexed);
|
|
76
|
-
let match$1 = LogSelection.parseEventFiltersOrThrow(eventFilters, ev.sighash, indexedParams.map(p => p.name), ev.contractName, chain.id, config.ecosystem.onEventBlockFilterSchema, Stdlib_Option.map(indexedParams[0], EventConfigBuilder.buildTopicGetter), Stdlib_Option.map(indexedParams[1], EventConfigBuilder.buildTopicGetter), Stdlib_Option.map(indexedParams[2], EventConfigBuilder.buildTopicGetter));
|
|
77
|
-
let filterByAddresses = match$1.filterByAddresses;
|
|
78
|
-
let newrecord = {...ev};
|
|
79
|
-
newrecord.getEventFiltersOrThrow = match$1.getEventFiltersOrThrow;
|
|
80
|
-
newrecord.contractRegister = contractRegister;
|
|
81
|
-
newrecord.handler = handler;
|
|
82
|
-
newrecord.clientAddressFilter = EventConfigBuilder.buildAddressFilter(match$1.addressFilterParamGroups);
|
|
83
|
-
newrecord.dependsOnAddresses = Internal.dependsOnAddresses(isWildcard, filterByAddresses);
|
|
84
|
-
newrecord.filterByAddresses = filterByAddresses;
|
|
85
|
-
newrecord.isWildcard = isWildcard;
|
|
86
|
-
return newrecord;
|
|
87
|
-
case "fuel" :
|
|
88
|
-
case "svm" :
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
let newrecord$1 = {...ev};
|
|
92
|
-
newrecord$1.contractRegister = contractRegister;
|
|
93
|
-
newrecord$1.handler = handler;
|
|
94
|
-
newrecord$1.dependsOnAddresses = Internal.dependsOnAddresses(isWildcard, false);
|
|
95
|
-
newrecord$1.isWildcard = isWildcard;
|
|
96
|
-
return newrecord$1;
|
|
97
|
-
});
|
|
98
|
-
return {
|
|
99
|
-
name: contract.name,
|
|
100
|
-
abi: contract.abi,
|
|
101
|
-
addresses: contract.addresses,
|
|
102
|
-
events: newEvents,
|
|
103
|
-
startBlock: contract.startBlock
|
|
104
|
-
};
|
|
105
|
-
});
|
|
106
|
-
let newrecord = {...chain};
|
|
107
|
-
newrecord.contracts = newContracts;
|
|
108
|
-
return newrecord;
|
|
109
|
-
});
|
|
110
|
-
return {
|
|
111
|
-
name: config.name,
|
|
112
|
-
description: config.description,
|
|
113
|
-
handlers: config.handlers,
|
|
114
|
-
contractHandlers: config.contractHandlers,
|
|
115
|
-
shouldRollbackOnReorg: config.shouldRollbackOnReorg,
|
|
116
|
-
shouldSaveFullHistory: config.shouldSaveFullHistory,
|
|
117
|
-
storage: config.storage,
|
|
118
|
-
chainMap: newChainMap,
|
|
119
|
-
defaultChain: config.defaultChain,
|
|
120
|
-
ecosystem: config.ecosystem,
|
|
121
|
-
enableRawEvents: config.enableRawEvents,
|
|
122
|
-
maxAddrInPartition: config.maxAddrInPartition,
|
|
123
|
-
batchSize: config.batchSize,
|
|
124
|
-
lowercaseAddresses: config.lowercaseAddresses,
|
|
125
|
-
isDev: config.isDev,
|
|
126
|
-
userEntitiesByName: config.userEntitiesByName,
|
|
127
|
-
userEntities: config.userEntities,
|
|
128
|
-
allEntities: config.allEntities,
|
|
129
|
-
allEnums: config.allEnums
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
|
|
133
59
|
async function registerAllHandlers(config) {
|
|
134
|
-
HandlerRegister.startRegistration(config
|
|
60
|
+
HandlerRegister.startRegistration(config);
|
|
135
61
|
await autoLoadFromSrcHandlers(config.handlers);
|
|
136
62
|
await Promise.all(config.contractHandlers.map(param => registerContractHandlers(param.name, param.handler)));
|
|
137
|
-
|
|
138
|
-
return [
|
|
139
|
-
applyRegistrations(config),
|
|
140
|
-
registrations
|
|
141
|
-
];
|
|
63
|
+
return HandlerRegister.finishRegistration(config);
|
|
142
64
|
}
|
|
143
65
|
|
|
144
66
|
export {
|
|
145
67
|
toImportUrl,
|
|
146
68
|
registerContractHandlers,
|
|
147
69
|
autoLoadFromSrcHandlers,
|
|
148
|
-
applyRegistrations,
|
|
149
70
|
registerAllHandlers,
|
|
150
71
|
}
|
|
151
72
|
/* Not a pure module */
|