envio 3.0.0 → 3.0.2-svm-alpha.0

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.
Files changed (41) hide show
  1. package/evm.schema.json +8 -8
  2. package/fuel.schema.json +12 -12
  3. package/index.d.ts +155 -1
  4. package/package.json +6 -7
  5. package/src/ChainFetcher.res +25 -1
  6. package/src/ChainFetcher.res.mjs +19 -1
  7. package/src/Config.res +145 -10
  8. package/src/Config.res.mjs +56 -16
  9. package/src/Core.res +32 -0
  10. package/src/Env.res.mjs +1 -2
  11. package/src/Envio.res +94 -0
  12. package/src/EventConfigBuilder.res +50 -0
  13. package/src/EventConfigBuilder.res.mjs +31 -0
  14. package/src/HandlerLoader.res +12 -1
  15. package/src/HandlerLoader.res.mjs +6 -1
  16. package/src/InMemoryTable.res +20 -24
  17. package/src/InMemoryTable.res.mjs +3 -19
  18. package/src/Internal.res +38 -0
  19. package/src/Main.res +53 -1
  20. package/src/Main.res.mjs +32 -0
  21. package/src/SimulateItems.res +23 -10
  22. package/src/SimulateItems.res.mjs +21 -6
  23. package/src/SvmTypes.res +9 -0
  24. package/src/SvmTypes.res.mjs +14 -0
  25. package/src/sources/EventRouter.res +65 -0
  26. package/src/sources/EventRouter.res.mjs +43 -0
  27. package/src/sources/HyperSyncClient.res +30 -157
  28. package/src/sources/HyperSyncClient.res.mjs +20 -6
  29. package/src/sources/HyperSyncSolanaClient.res +227 -0
  30. package/src/sources/HyperSyncSolanaClient.res.mjs +25 -0
  31. package/src/sources/HyperSyncSolanaSource.res +515 -0
  32. package/src/sources/HyperSyncSolanaSource.res.mjs +441 -0
  33. package/src/sources/HyperSyncSource.res +5 -8
  34. package/src/sources/HyperSyncSource.res.mjs +1 -8
  35. package/src/sources/RpcSource.res.mjs +1 -1
  36. package/src/sources/Svm.res +2 -2
  37. package/src/sources/Svm.res.mjs +3 -2
  38. package/src/tui/Tui.res +9 -2
  39. package/src/tui/Tui.res.mjs +19 -4
  40. package/src/tui/components/TuiData.res +3 -0
  41. package/svm.schema.json +345 -4
@@ -1,10 +1,11 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
2
 
3
+ import * as Core from "../Core.res.mjs";
3
4
  import * as Utils from "../Utils.res.mjs";
4
5
  import * as Address from "../Address.res.mjs";
5
6
  import * as Belt_Array from "@rescript/runtime/lib/es6/Belt_Array.js";
7
+ import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
6
8
  import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
7
- import * as HypersyncClient from "@envio-dev/hypersync-client";
8
9
 
9
10
  let serializationFormatSchema = S$RescriptSchema.$$enum([
10
11
  "Json",
@@ -58,12 +59,14 @@ let ResponseTypes = {
58
59
  authorizationListSchema: authorizationListSchema
59
60
  };
60
61
 
61
- let HeightStream = {};
62
+ function makeWithAgent(cfg, userAgent) {
63
+ return Core.getAddon().HypersyncClient.newWithAgent(cfg, userAgent);
64
+ }
62
65
 
63
66
  function make(url, apiToken, httpReqTimeoutMillis, maxNumRetries, enableChecksumAddressesOpt, serializationFormat, enableQueryCaching, retryBaseMs, retryBackoffMs, retryCeilingMs) {
64
67
  let enableChecksumAddresses = enableChecksumAddressesOpt !== undefined ? enableChecksumAddressesOpt : true;
65
68
  let envioVersion = Utils.EnvioPackage.value.version;
66
- return HypersyncClient.HypersyncClient.newWithAgent({
69
+ return makeWithAgent({
67
70
  url: url,
68
71
  apiToken: apiToken,
69
72
  httpReqTimeoutMillis: httpReqTimeoutMillis,
@@ -85,6 +88,16 @@ let logLevelSchema = S$RescriptSchema.$$enum([
85
88
  "error"
86
89
  ]);
87
90
 
91
+ function setLogLevel(level) {
92
+ Core.getAddon().setLogLevel(level === "warn" ? "warn" : (
93
+ level === "debug" ? "debug" : (
94
+ level === "error" ? "error" : (
95
+ level === "trace" ? "trace" : "info"
96
+ )
97
+ )
98
+ ));
99
+ }
100
+
88
101
  function toUnderlying(_d) {
89
102
  while (true) {
90
103
  let d = _d;
@@ -105,8 +118,8 @@ function toUnderlying(_d) {
105
118
  };
106
119
  }
107
120
 
108
- function fromSignatures(prim) {
109
- return HypersyncClient.Decoder.fromSignatures(prim);
121
+ function fromSignatures(signatures, checksumAddresses) {
122
+ return Core.getAddon().Decoder.fromSignatures(signatures, checksumAddresses !== undefined ? Primitive_option.valFromOption(checksumAddresses) : undefined);
110
123
  }
111
124
 
112
125
  let Decoder = {
@@ -118,9 +131,10 @@ export {
118
131
  serializationFormatSchema,
119
132
  QueryTypes,
120
133
  ResponseTypes,
121
- HeightStream,
134
+ makeWithAgent,
122
135
  make,
123
136
  logLevelSchema,
137
+ setLogLevel,
124
138
  Decoder,
125
139
  }
126
140
  /* serializationFormatSchema Not a pure module */
@@ -0,0 +1,227 @@
1
+ type cfg = {
2
+ /** HyperSync server URL. */
3
+ url: string,
4
+ /** Optional bearer token for the HyperSync server. */
5
+ apiToken?: string,
6
+ httpReqTimeoutMillis?: int,
7
+ maxNumRetries?: int,
8
+ retryBaseMs?: int,
9
+ retryCeilingMs?: int,
10
+ }
11
+
12
+ module QueryTypes = {
13
+ type blockField =
14
+ | @as("slot") Slot
15
+ | @as("blockhash") Blockhash
16
+ | @as("parent_slot") ParentSlot
17
+ | @as("parent_blockhash") ParentBlockhash
18
+ | @as("block_time") BlockTime
19
+ | @as("block_height") BlockHeight
20
+
21
+ type transactionField =
22
+ | @as("slot") Slot
23
+ | @as("transaction_index") TransactionIndex
24
+ | @as("signatures") Signatures
25
+ | @as("fee_payer") FeePayer
26
+ | @as("success") Success
27
+ | @as("err") Err
28
+ | @as("fee") Fee
29
+ | @as("compute_units_consumed") ComputeUnitsConsumed
30
+ | @as("account_keys") AccountKeys
31
+ | @as("recent_blockhash") RecentBlockhash
32
+ | @as("version") Version
33
+ | @as("loaded_addresses_writable") LoadedAddressesWritable
34
+ | @as("loaded_addresses_readonly") LoadedAddressesReadonly
35
+
36
+ type instructionField =
37
+ | @as("slot") Slot
38
+ | @as("transaction_index") TransactionIndex
39
+ | @as("instruction_address") InstructionAddress
40
+ | @as("program_id") ProgramId
41
+ | @as("accounts") Accounts
42
+ | @as("data") Data
43
+ | @as("d1") D1
44
+ | @as("d2") D2
45
+ | @as("d4") D4
46
+ | @as("d8") D8
47
+ | @as("a0") A0
48
+ | @as("a1") A1
49
+ | @as("a2") A2
50
+ | @as("a3") A3
51
+ | @as("a4") A4
52
+ | @as("a5") A5
53
+ | @as("a6") A6
54
+ | @as("a7") A7
55
+ | @as("a8") A8
56
+ | @as("a9") A9
57
+ | @as("is_inner") IsInner
58
+ | @as("is_committed") IsCommitted
59
+
60
+ type logField =
61
+ | @as("slot") Slot
62
+ | @as("transaction_index") TransactionIndex
63
+ | @as("instruction_address") InstructionAddress
64
+ | @as("program_id") ProgramId
65
+ | @as("kind") Kind
66
+ | @as("message") Message
67
+
68
+ type fieldSelection = {
69
+ block?: array<blockField>,
70
+ transaction?: array<transactionField>,
71
+ instruction?: array<instructionField>,
72
+ log?: array<logField>,
73
+ }
74
+
75
+ /** Filter for selecting instructions. All non-empty fields are AND-ed: an
76
+ instruction must match at least one value in every non-empty field.
77
+
78
+ Discriminator filters (d1..d8) take hex-encoded byte prefixes ("0x" optional).
79
+ Account filters (a0..a9) take base58 pubkey strings. */
80
+ type instructionSelection = {
81
+ programId?: array<string>,
82
+ d1?: array<string>,
83
+ d2?: array<string>,
84
+ d4?: array<string>,
85
+ d8?: array<string>,
86
+ a0?: array<string>,
87
+ a1?: array<string>,
88
+ a2?: array<string>,
89
+ a3?: array<string>,
90
+ a4?: array<string>,
91
+ a5?: array<string>,
92
+ a6?: array<string>,
93
+ a7?: array<string>,
94
+ a8?: array<string>,
95
+ a9?: array<string>,
96
+ isInner?: bool,
97
+ includeTransaction?: bool,
98
+ includeLogs?: bool,
99
+ }
100
+
101
+ type transactionSelection = {
102
+ feePayer?: array<string>,
103
+ success?: bool,
104
+ includeInstructions?: bool,
105
+ }
106
+
107
+ type logSelection = {
108
+ programId?: array<string>,
109
+ kind?: array<string>,
110
+ includeTransaction?: bool,
111
+ includeInstruction?: bool,
112
+ }
113
+
114
+ type query = {
115
+ fromSlot: int,
116
+ toSlot?: int,
117
+ instructions?: array<instructionSelection>,
118
+ transactions?: array<transactionSelection>,
119
+ logs?: array<logSelection>,
120
+ includeAllBlocks?: bool,
121
+ fields?: fieldSelection,
122
+ maxNumBlocks?: int,
123
+ maxNumTransactions?: int,
124
+ maxNumInstructions?: int,
125
+ maxNumLogs?: int,
126
+ }
127
+ }
128
+
129
+ module ResponseTypes = {
130
+ type block = {
131
+ slot: int,
132
+ blockhash: string,
133
+ parentSlot?: int,
134
+ parentBlockhash?: string,
135
+ blockTime?: int,
136
+ blockHeight?: int,
137
+ }
138
+
139
+ type transaction = {
140
+ slot: int,
141
+ transactionIndex: int,
142
+ signatures: array<string>,
143
+ feePayer?: string,
144
+ success?: bool,
145
+ err?: string,
146
+ fee?: int,
147
+ computeUnitsConsumed?: int,
148
+ accountKeys: array<string>,
149
+ recentBlockhash?: string,
150
+ version?: string,
151
+ loadedAddressesWritable: array<string>,
152
+ loadedAddressesReadonly: array<string>,
153
+ }
154
+
155
+ /** Solana instruction record.
156
+
157
+ `data` is the raw instruction byte buffer, hex-encoded with a `0x` prefix.
158
+ `d1`..`d8` are the same byte prefix as `data` but truncated to N bytes
159
+ (only `Some` when the instruction is at least that long), exposed for
160
+ handler-dispatch convenience.
161
+ `accounts` is the full positional account list in base58. */
162
+ type instruction = {
163
+ slot: int,
164
+ transactionIndex: int,
165
+ instructionAddress: array<int>,
166
+ programId: string,
167
+ accounts: array<string>,
168
+ data: string,
169
+ d1?: string,
170
+ d2?: string,
171
+ d4?: string,
172
+ d8?: string,
173
+ isInner: bool,
174
+ isCommitted: bool,
175
+ }
176
+
177
+ type log = {
178
+ slot: int,
179
+ transactionIndex?: int,
180
+ instructionAddress?: array<int>,
181
+ programId?: string,
182
+ kind?: string,
183
+ message?: string,
184
+ }
185
+
186
+ type queryResponseData = {
187
+ blocks: array<block>,
188
+ transactions: array<transaction>,
189
+ instructions: array<instruction>,
190
+ logs: array<log>,
191
+ }
192
+
193
+ type queryResponse = {
194
+ nextSlot: int,
195
+ responseBytes: int,
196
+ data: queryResponseData,
197
+ }
198
+ }
199
+
200
+ type query = QueryTypes.query
201
+ type queryResponse = ResponseTypes.queryResponse
202
+
203
+ type t = {
204
+ getHeight: unit => promise<int>,
205
+ get: (~query: query) => promise<queryResponse>,
206
+ }
207
+
208
+ @send
209
+ external classFromConfig: (Core.hypersyncSolanaClientCtor, cfg) => t = "fromConfig"
210
+
211
+ let make = (
212
+ ~url,
213
+ ~apiToken=?,
214
+ ~httpReqTimeoutMillis=?,
215
+ ~maxNumRetries=?,
216
+ ~retryBaseMs=?,
217
+ ~retryCeilingMs=?,
218
+ ) => {
219
+ Core.getAddon().hypersyncSolanaClient->classFromConfig({
220
+ url,
221
+ ?apiToken,
222
+ ?httpReqTimeoutMillis,
223
+ ?maxNumRetries,
224
+ ?retryBaseMs,
225
+ ?retryCeilingMs,
226
+ })
227
+ }
@@ -0,0 +1,25 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Core from "../Core.res.mjs";
4
+
5
+ let QueryTypes = {};
6
+
7
+ let ResponseTypes = {};
8
+
9
+ function make(url, apiToken, httpReqTimeoutMillis, maxNumRetries, retryBaseMs, retryCeilingMs) {
10
+ return Core.getAddon().HypersyncSolanaClient.fromConfig({
11
+ url: url,
12
+ apiToken: apiToken,
13
+ httpReqTimeoutMillis: httpReqTimeoutMillis,
14
+ maxNumRetries: maxNumRetries,
15
+ retryBaseMs: retryBaseMs,
16
+ retryCeilingMs: retryCeilingMs
17
+ });
18
+ }
19
+
20
+ export {
21
+ QueryTypes,
22
+ ResponseTypes,
23
+ make,
24
+ }
25
+ /* Core Not a pure module */