envio 3.0.0-alpha.21 → 3.0.0-alpha.23
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/README.md +3 -3
- package/bin.mjs +2 -48
- package/evm.schema.json +67 -0
- package/fuel.schema.json +67 -0
- package/index.d.ts +822 -38
- package/index.js +5 -3
- package/package.json +10 -8
- package/rescript.json +5 -9
- package/src/Address.res +4 -5
- package/src/Address.res.mjs +9 -12
- package/src/Api.res +15 -0
- package/src/Api.res.mjs +20 -0
- package/src/Batch.res +32 -34
- package/src/Batch.res.mjs +172 -187
- package/src/Bin.res +89 -0
- package/src/Bin.res.mjs +97 -0
- package/src/ChainFetcher.res +33 -57
- package/src/ChainFetcher.res.mjs +197 -227
- package/src/ChainManager.res +6 -14
- package/src/ChainManager.res.mjs +74 -85
- package/src/ChainMap.res +14 -16
- package/src/ChainMap.res.mjs +38 -38
- package/src/Config.res +193 -135
- package/src/Config.res.mjs +566 -592
- package/src/Core.res +182 -0
- package/src/Core.res.mjs +207 -0
- package/src/Ecosystem.res +25 -4
- package/src/Ecosystem.res.mjs +12 -13
- package/src/Env.res +20 -13
- package/src/Env.res.mjs +124 -113
- package/src/EnvSafe.res +269 -0
- package/src/EnvSafe.res.mjs +296 -0
- package/src/EnvSafe.resi +18 -0
- package/src/Envio.res +37 -26
- package/src/Envio.res.mjs +59 -60
- package/src/ErrorHandling.res +2 -2
- package/src/ErrorHandling.res.mjs +15 -15
- package/src/EventConfigBuilder.res +219 -81
- package/src/EventConfigBuilder.res.mjs +259 -202
- package/src/EventProcessing.res +27 -38
- package/src/EventProcessing.res.mjs +165 -183
- package/src/EventUtils.res +11 -11
- package/src/EventUtils.res.mjs +21 -22
- package/src/EvmTypes.res +0 -1
- package/src/EvmTypes.res.mjs +5 -5
- package/src/FetchState.res +360 -256
- package/src/FetchState.res.mjs +958 -914
- package/src/GlobalState.res +365 -351
- package/src/GlobalState.res.mjs +958 -992
- package/src/GlobalStateManager.res +1 -2
- package/src/GlobalStateManager.res.mjs +36 -44
- package/src/HandlerLoader.res +107 -23
- package/src/HandlerLoader.res.mjs +128 -38
- package/src/HandlerRegister.res +127 -103
- package/src/HandlerRegister.res.mjs +164 -164
- package/src/HandlerRegister.resi +12 -4
- package/src/Hasura.res +35 -22
- package/src/Hasura.res.mjs +158 -167
- package/src/InMemoryStore.res +20 -27
- package/src/InMemoryStore.res.mjs +64 -80
- package/src/InMemoryTable.res +34 -39
- package/src/InMemoryTable.res.mjs +165 -170
- package/src/Internal.res +52 -33
- package/src/Internal.res.mjs +84 -81
- package/src/LazyLoader.res.mjs +55 -61
- package/src/LoadLayer.res +77 -78
- package/src/LoadLayer.res.mjs +160 -189
- package/src/LoadManager.res +16 -21
- package/src/LoadManager.res.mjs +79 -84
- package/src/LogSelection.res +236 -68
- package/src/LogSelection.res.mjs +211 -141
- package/src/Logging.res +13 -9
- package/src/Logging.res.mjs +130 -143
- package/src/Main.res +430 -51
- package/src/Main.res.mjs +530 -271
- package/src/Persistence.res +80 -84
- package/src/Persistence.res.mjs +131 -132
- package/src/PgStorage.res +294 -167
- package/src/PgStorage.res.mjs +799 -817
- package/src/Prometheus.res +50 -58
- package/src/Prometheus.res.mjs +345 -373
- package/src/ReorgDetection.res +22 -24
- package/src/ReorgDetection.res.mjs +100 -106
- package/src/SafeCheckpointTracking.res +7 -7
- package/src/SafeCheckpointTracking.res.mjs +40 -43
- package/src/SimulateItems.res +41 -49
- package/src/SimulateItems.res.mjs +257 -272
- package/src/Sink.res +2 -2
- package/src/Sink.res.mjs +22 -26
- package/src/TableIndices.res +1 -2
- package/src/TableIndices.res.mjs +42 -48
- package/src/TestIndexer.res +196 -189
- package/src/TestIndexer.res.mjs +536 -536
- package/src/TestIndexerProxyStorage.res +16 -16
- package/src/TestIndexerProxyStorage.res.mjs +99 -122
- package/src/TestIndexerWorker.res +4 -0
- package/src/TestIndexerWorker.res.mjs +7 -0
- package/src/Throttler.res +3 -3
- package/src/Throttler.res.mjs +23 -24
- package/src/Time.res +1 -1
- package/src/Time.res.mjs +18 -21
- package/src/TopicFilter.res +3 -3
- package/src/TopicFilter.res.mjs +29 -30
- package/src/UserContext.res +93 -54
- package/src/UserContext.res.mjs +197 -182
- package/src/Utils.res +141 -86
- package/src/Utils.res.mjs +334 -295
- package/src/bindings/BigDecimal.res +0 -2
- package/src/bindings/BigDecimal.res.mjs +19 -23
- package/src/bindings/ClickHouse.res +28 -27
- package/src/bindings/ClickHouse.res.mjs +243 -240
- package/src/bindings/DateFns.res +11 -11
- package/src/bindings/DateFns.res.mjs +7 -7
- package/src/bindings/EventSource.res.mjs +2 -2
- package/src/bindings/Express.res +2 -5
- package/src/bindings/Hrtime.res +2 -2
- package/src/bindings/Hrtime.res.mjs +30 -32
- package/src/bindings/Lodash.res.mjs +1 -1
- package/src/bindings/NodeJs.res +14 -9
- package/src/bindings/NodeJs.res.mjs +20 -20
- package/src/bindings/Pino.res +8 -10
- package/src/bindings/Pino.res.mjs +40 -43
- package/src/bindings/Postgres.res +7 -5
- package/src/bindings/Postgres.res.mjs +9 -9
- package/src/bindings/PromClient.res +17 -2
- package/src/bindings/PromClient.res.mjs +30 -7
- package/src/bindings/SDSL.res.mjs +2 -2
- package/src/bindings/Viem.res +4 -4
- package/src/bindings/Viem.res.mjs +20 -22
- package/src/bindings/Vitest.res +1 -1
- package/src/bindings/Vitest.res.mjs +2 -2
- package/src/bindings/WebSocket.res +1 -1
- package/src/db/EntityHistory.res +9 -3
- package/src/db/EntityHistory.res.mjs +84 -59
- package/src/db/InternalTable.res +62 -60
- package/src/db/InternalTable.res.mjs +271 -203
- package/src/db/Schema.res +1 -2
- package/src/db/Schema.res.mjs +28 -32
- package/src/db/Table.res +28 -27
- package/src/db/Table.res.mjs +276 -292
- package/src/sources/EventRouter.res +21 -16
- package/src/sources/EventRouter.res.mjs +55 -57
- package/src/sources/Evm.res +17 -1
- package/src/sources/Evm.res.mjs +16 -8
- package/src/sources/EvmChain.res +15 -17
- package/src/sources/EvmChain.res.mjs +40 -42
- package/src/sources/Fuel.res +14 -1
- package/src/sources/Fuel.res.mjs +16 -8
- package/src/sources/FuelSDK.res +1 -1
- package/src/sources/FuelSDK.res.mjs +6 -8
- package/src/sources/HyperFuel.res +8 -10
- package/src/sources/HyperFuel.res.mjs +113 -123
- package/src/sources/HyperFuelClient.res.mjs +6 -7
- package/src/sources/HyperFuelSource.res +19 -20
- package/src/sources/HyperFuelSource.res.mjs +339 -356
- package/src/sources/HyperSync.res +11 -13
- package/src/sources/HyperSync.res.mjs +206 -220
- package/src/sources/HyperSyncClient.res +5 -7
- package/src/sources/HyperSyncClient.res.mjs +70 -75
- package/src/sources/HyperSyncHeightStream.res +8 -9
- package/src/sources/HyperSyncHeightStream.res.mjs +78 -86
- package/src/sources/HyperSyncJsonApi.res +18 -15
- package/src/sources/HyperSyncJsonApi.res.mjs +201 -231
- package/src/sources/HyperSyncSource.res +17 -21
- package/src/sources/HyperSyncSource.res.mjs +268 -290
- package/src/sources/Rpc.res +5 -5
- package/src/sources/Rpc.res.mjs +168 -192
- package/src/sources/RpcSource.res +166 -167
- package/src/sources/RpcSource.res.mjs +972 -1046
- package/src/sources/RpcWebSocketHeightStream.res +10 -11
- package/src/sources/RpcWebSocketHeightStream.res.mjs +131 -145
- package/src/sources/SimulateSource.res +1 -1
- package/src/sources/SimulateSource.res.mjs +35 -38
- package/src/sources/Source.res +1 -1
- package/src/sources/Source.res.mjs +3 -3
- package/src/sources/SourceManager.res +39 -20
- package/src/sources/SourceManager.res.mjs +340 -371
- package/src/sources/SourceManager.resi +2 -1
- package/src/sources/Svm.res +12 -5
- package/src/sources/Svm.res.mjs +44 -41
- package/src/tui/Tui.res +23 -12
- package/src/tui/Tui.res.mjs +292 -290
- package/src/tui/bindings/Ink.res +2 -4
- package/src/tui/bindings/Ink.res.mjs +35 -41
- package/src/tui/components/BufferedProgressBar.res +7 -7
- package/src/tui/components/BufferedProgressBar.res.mjs +46 -46
- package/src/tui/components/CustomHooks.res +1 -2
- package/src/tui/components/CustomHooks.res.mjs +102 -122
- package/src/tui/components/Messages.res +1 -2
- package/src/tui/components/Messages.res.mjs +38 -42
- package/src/tui/components/SyncETA.res +10 -11
- package/src/tui/components/SyncETA.res.mjs +178 -196
- package/src/tui/components/TuiData.res +1 -1
- package/src/tui/components/TuiData.res.mjs +7 -6
- package/src/vendored/Rest.res +52 -66
- package/src/vendored/Rest.res.mjs +324 -364
- package/svm.schema.json +67 -0
- package/src/Address.gen.ts +0 -8
- package/src/Config.gen.ts +0 -19
- package/src/Envio.gen.ts +0 -55
- package/src/EvmTypes.gen.ts +0 -6
- package/src/InMemoryStore.gen.ts +0 -6
- package/src/Internal.gen.ts +0 -64
- package/src/PgStorage.gen.ts +0 -10
- package/src/PgStorage.res.d.mts +0 -5
- package/src/Types.ts +0 -56
- package/src/bindings/BigDecimal.gen.ts +0 -14
- package/src/bindings/BigDecimal.res.d.mts +0 -5
- package/src/bindings/BigInt.gen.ts +0 -10
- package/src/bindings/BigInt.res +0 -70
- package/src/bindings/BigInt.res.d.mts +0 -5
- package/src/bindings/BigInt.res.mjs +0 -154
- package/src/bindings/Ethers.res.d.mts +0 -5
- package/src/bindings/Pino.gen.ts +0 -17
- package/src/bindings/Postgres.gen.ts +0 -8
- package/src/bindings/Postgres.res.d.mts +0 -5
- package/src/bindings/Promise.res +0 -67
- package/src/bindings/Promise.res.mjs +0 -26
- package/src/db/InternalTable.gen.ts +0 -36
- package/src/sources/HyperSyncClient.gen.ts +0 -19
package/README.md
CHANGED
|
@@ -107,9 +107,9 @@ This scaffolds your entire indexer project, config, schema, and handler function
|
|
|
107
107
|
|
|
108
108
|
From there, three files define your indexer:
|
|
109
109
|
|
|
110
|
-
- `config.yaml
|
|
111
|
-
- `schema.graphql
|
|
112
|
-
- `src/EventHandlers
|
|
110
|
+
- `config.yaml`: networks, contracts, events, and indexing behaviour
|
|
111
|
+
- `schema.graphql`: the shape of your indexed data
|
|
112
|
+
- `src/EventHandlers.*`: your handler logic in TypeScript, JavaScript, or ReScript
|
|
113
113
|
|
|
114
114
|
[Full getting started guide →](https://docs.envio.dev/docs/HyperIndex/getting-started)
|
|
115
115
|
|
package/bin.mjs
CHANGED
|
@@ -1,49 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { spawnSync } from "child_process";
|
|
5
|
-
import { createRequire } from "module";
|
|
6
|
-
|
|
7
|
-
const require = createRequire(import.meta.url);
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Returns the executable path for envio located inside node_modules.
|
|
11
|
-
* The naming convention is envio-${os}-${arch}
|
|
12
|
-
* @see https://nodejs.org/api/os.html#osarch
|
|
13
|
-
* @see https://nodejs.org/api/os.html#osplatform
|
|
14
|
-
* @example "x/xx/node_modules/envio-darwin-arm64"
|
|
15
|
-
*/
|
|
16
|
-
function getExePath() {
|
|
17
|
-
const pkg = `envio-${process.platform}-${process.arch}`;
|
|
18
|
-
const bin = "bin/envio";
|
|
19
|
-
|
|
20
|
-
try {
|
|
21
|
-
return require.resolve(`${pkg}/${bin}`);
|
|
22
|
-
} catch {}
|
|
23
|
-
|
|
24
|
-
throw new Error(
|
|
25
|
-
`Couldn't find envio binary package "${pkg}".\n` +
|
|
26
|
-
`Checked: require.resolve("${pkg}/${bin}")\n` +
|
|
27
|
-
`If you're using pnpm, yarn, or npm with --omit=optional, ensure optional ` +
|
|
28
|
-
`dependencies are installed:\n` +
|
|
29
|
-
` npm install ${pkg}\n`
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Runs `envio` with args using nodejs spawn
|
|
35
|
-
*/
|
|
36
|
-
function runEnvio() {
|
|
37
|
-
const args = process.argv.slice(2);
|
|
38
|
-
const exePath = getExePath();
|
|
39
|
-
|
|
40
|
-
const processResult = spawnSync(exePath, args, { stdio: "inherit" });
|
|
41
|
-
|
|
42
|
-
if (processResult.error) {
|
|
43
|
-
console.error(`Failed to run envio binary at ${exePath}: ${processResult.error.message}`);
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
process.exit(processResult.status ?? 1);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
runEnvio();
|
|
2
|
+
import { run } from "./src/Bin.res.mjs";
|
|
3
|
+
await run(process.argv.slice(2));
|
package/evm.schema.json
CHANGED
|
@@ -45,6 +45,17 @@
|
|
|
45
45
|
"format": "uint64",
|
|
46
46
|
"minimum": 0
|
|
47
47
|
},
|
|
48
|
+
"storage": {
|
|
49
|
+
"description": "Configuration for the storage backends the indexer writes to. Defaults to `postgres: true` when omitted. ClickHouse requires Postgres to be enabled (it is not supported as a single storage yet), and at least one backend must be enabled.",
|
|
50
|
+
"anyOf": [
|
|
51
|
+
{
|
|
52
|
+
"$ref": "#/$defs/StorageConfig"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "null"
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
},
|
|
48
59
|
"ecosystem": {
|
|
49
60
|
"description": "Ecosystem of the project.",
|
|
50
61
|
"anyOf": [
|
|
@@ -123,6 +134,62 @@
|
|
|
123
134
|
"chains"
|
|
124
135
|
],
|
|
125
136
|
"$defs": {
|
|
137
|
+
"StorageConfig": {
|
|
138
|
+
"type": "object",
|
|
139
|
+
"properties": {
|
|
140
|
+
"postgres": {
|
|
141
|
+
"description": "Whether to use Postgres as a storage backend (default: true).",
|
|
142
|
+
"type": [
|
|
143
|
+
"boolean",
|
|
144
|
+
"null"
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"clickhouse": {
|
|
148
|
+
"description": "Whether to additionally sync the indexed data to ClickHouse. Requires Postgres to be enabled (default: false).",
|
|
149
|
+
"type": [
|
|
150
|
+
"boolean",
|
|
151
|
+
"null"
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"additionalProperties": false,
|
|
156
|
+
"allOf": [
|
|
157
|
+
{
|
|
158
|
+
"not": {
|
|
159
|
+
"properties": {
|
|
160
|
+
"postgres": {
|
|
161
|
+
"const": false
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"required": [
|
|
165
|
+
"postgres"
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"if": {
|
|
171
|
+
"properties": {
|
|
172
|
+
"clickhouse": {
|
|
173
|
+
"const": true
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
"required": [
|
|
177
|
+
"clickhouse"
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
"then": {
|
|
181
|
+
"properties": {
|
|
182
|
+
"postgres": {
|
|
183
|
+
"const": true
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
"required": [
|
|
187
|
+
"postgres"
|
|
188
|
+
]
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
},
|
|
126
193
|
"EcosystemTag": {
|
|
127
194
|
"type": "string",
|
|
128
195
|
"enum": [
|
package/fuel.schema.json
CHANGED
|
@@ -45,6 +45,17 @@
|
|
|
45
45
|
"format": "uint64",
|
|
46
46
|
"minimum": 0
|
|
47
47
|
},
|
|
48
|
+
"storage": {
|
|
49
|
+
"description": "Configuration for the storage backends the indexer writes to. Defaults to `postgres: true` when omitted. ClickHouse requires Postgres to be enabled (it is not supported as a single storage yet), and at least one backend must be enabled.",
|
|
50
|
+
"anyOf": [
|
|
51
|
+
{
|
|
52
|
+
"$ref": "#/$defs/StorageConfig"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"type": "null"
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
},
|
|
48
59
|
"ecosystem": {
|
|
49
60
|
"description": "Ecosystem of the project.",
|
|
50
61
|
"$ref": "#/$defs/EcosystemTag"
|
|
@@ -81,6 +92,62 @@
|
|
|
81
92
|
"chains"
|
|
82
93
|
],
|
|
83
94
|
"$defs": {
|
|
95
|
+
"StorageConfig": {
|
|
96
|
+
"type": "object",
|
|
97
|
+
"properties": {
|
|
98
|
+
"postgres": {
|
|
99
|
+
"description": "Whether to use Postgres as a storage backend (default: true).",
|
|
100
|
+
"type": [
|
|
101
|
+
"boolean",
|
|
102
|
+
"null"
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
"clickhouse": {
|
|
106
|
+
"description": "Whether to additionally sync the indexed data to ClickHouse. Requires Postgres to be enabled (default: false).",
|
|
107
|
+
"type": [
|
|
108
|
+
"boolean",
|
|
109
|
+
"null"
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"additionalProperties": false,
|
|
114
|
+
"allOf": [
|
|
115
|
+
{
|
|
116
|
+
"not": {
|
|
117
|
+
"properties": {
|
|
118
|
+
"postgres": {
|
|
119
|
+
"const": false
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"required": [
|
|
123
|
+
"postgres"
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"if": {
|
|
129
|
+
"properties": {
|
|
130
|
+
"clickhouse": {
|
|
131
|
+
"const": true
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"required": [
|
|
135
|
+
"clickhouse"
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
"then": {
|
|
139
|
+
"properties": {
|
|
140
|
+
"postgres": {
|
|
141
|
+
"const": true
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"required": [
|
|
145
|
+
"postgres"
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
},
|
|
84
151
|
"EcosystemTag": {
|
|
85
152
|
"type": "string",
|
|
86
153
|
"enum": [
|