envio 3.3.0-alpha.0 → 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.
Files changed (140) hide show
  1. package/evm.schema.json +10 -0
  2. package/index.d.ts +45 -25
  3. package/package.json +7 -7
  4. package/src/Address.res +5 -2
  5. package/src/Address.res.mjs +3 -1
  6. package/src/Api.res +1 -1
  7. package/src/Api.res.mjs +1 -1
  8. package/src/Batch.res +0 -6
  9. package/src/Batch.res.mjs +1 -12
  10. package/src/BatchProcessing.res +7 -12
  11. package/src/BatchProcessing.res.mjs +8 -7
  12. package/src/Bin.res +3 -0
  13. package/src/Bin.res.mjs +4 -0
  14. package/src/ChainFetching.res +48 -16
  15. package/src/ChainFetching.res.mjs +36 -17
  16. package/src/ChainMetadata.res +1 -11
  17. package/src/ChainMetadata.res.mjs +1 -10
  18. package/src/ChainState.res +628 -149
  19. package/src/ChainState.res.mjs +440 -102
  20. package/src/ChainState.resi +74 -4
  21. package/src/Config.res +61 -33
  22. package/src/Config.res.mjs +50 -10
  23. package/src/ContractRegisterContext.res +2 -12
  24. package/src/ContractRegisterContext.res.mjs +3 -5
  25. package/src/Core.res +14 -3
  26. package/src/CrossChainState.res +142 -93
  27. package/src/CrossChainState.res.mjs +88 -60
  28. package/src/CrossChainState.resi +2 -10
  29. package/src/Ecosystem.res +5 -6
  30. package/src/Ecosystem.res.mjs +3 -3
  31. package/src/Env.res +0 -7
  32. package/src/Env.res.mjs +0 -6
  33. package/src/Envio.res +17 -11
  34. package/src/EnvioGlobal.res +53 -0
  35. package/src/EnvioGlobal.res.mjs +31 -0
  36. package/src/EventConfigBuilder.res +177 -88
  37. package/src/EventConfigBuilder.res.mjs +99 -42
  38. package/src/EventProcessing.res +74 -28
  39. package/src/EventProcessing.res.mjs +55 -29
  40. package/src/ExitOnCaughtUp.res +10 -2
  41. package/src/ExitOnCaughtUp.res.mjs +10 -1
  42. package/src/FetchState.res +558 -300
  43. package/src/FetchState.res.mjs +437 -423
  44. package/src/HandlerLoader.res +8 -104
  45. package/src/HandlerLoader.res.mjs +2 -81
  46. package/src/HandlerRegister.res +518 -144
  47. package/src/HandlerRegister.res.mjs +285 -133
  48. package/src/HandlerRegister.resi +24 -8
  49. package/src/IndexerLoop.res +2 -3
  50. package/src/IndexerLoop.res.mjs +1 -1
  51. package/src/IndexerState.res +10 -11
  52. package/src/IndexerState.res.mjs +14 -11
  53. package/src/IndexerState.resi +2 -5
  54. package/src/IndexingAddresses.res +108 -0
  55. package/src/IndexingAddresses.res.mjs +101 -0
  56. package/src/IndexingAddresses.resi +34 -0
  57. package/src/Internal.res +155 -46
  58. package/src/Internal.res.mjs +30 -2
  59. package/src/LoadLayer.res +5 -5
  60. package/src/LoadLayer.res.mjs +6 -6
  61. package/src/LogSelection.res +102 -165
  62. package/src/LogSelection.res.mjs +101 -116
  63. package/src/Main.res +71 -236
  64. package/src/Main.res.mjs +60 -145
  65. package/src/Metrics.res +74 -0
  66. package/src/Metrics.res.mjs +75 -0
  67. package/src/PgStorage.res +4 -4
  68. package/src/PgStorage.res.mjs +5 -5
  69. package/src/Prometheus.res +10 -74
  70. package/src/Prometheus.res.mjs +124 -186
  71. package/src/PruneStaleHistory.res +2 -2
  72. package/src/PruneStaleHistory.res.mjs +3 -3
  73. package/src/RawEvent.res +7 -2
  74. package/src/RawEvent.res.mjs +4 -4
  75. package/src/Rollback.res +3 -3
  76. package/src/Rollback.res.mjs +4 -4
  77. package/src/RollbackCommit.res +4 -1
  78. package/src/RollbackCommit.res.mjs +3 -2
  79. package/src/SimulateDeadInputTracker.res +85 -0
  80. package/src/SimulateDeadInputTracker.res.mjs +73 -0
  81. package/src/SimulateDeadInputTracker.resi +12 -0
  82. package/src/SimulateItems.res +91 -23
  83. package/src/SimulateItems.res.mjs +55 -32
  84. package/src/TestIndexer.res +54 -40
  85. package/src/TestIndexer.res.mjs +37 -30
  86. package/src/bindings/Performance.res +7 -0
  87. package/src/bindings/Performance.res.mjs +21 -0
  88. package/src/bindings/Performance.resi +7 -0
  89. package/src/bindings/Viem.res +0 -41
  90. package/src/bindings/Viem.res.mjs +1 -43
  91. package/src/sources/BlockStore.res +46 -0
  92. package/src/sources/BlockStore.res.mjs +24 -0
  93. package/src/sources/EventRouter.res +36 -33
  94. package/src/sources/EventRouter.res.mjs +13 -14
  95. package/src/sources/Evm.res +83 -72
  96. package/src/sources/Evm.res.mjs +53 -69
  97. package/src/sources/EvmChain.res +18 -20
  98. package/src/sources/EvmChain.res.mjs +15 -15
  99. package/src/sources/EvmRpcClient.res +74 -5
  100. package/src/sources/EvmRpcClient.res.mjs +13 -4
  101. package/src/sources/FieldMask.res +39 -0
  102. package/src/sources/FieldMask.res.mjs +42 -0
  103. package/src/sources/Fuel.res +9 -6
  104. package/src/sources/Fuel.res.mjs +5 -10
  105. package/src/sources/HyperFuelSource.res +46 -50
  106. package/src/sources/HyperFuelSource.res.mjs +64 -54
  107. package/src/sources/HyperSync.res +39 -7
  108. package/src/sources/HyperSync.res.mjs +57 -37
  109. package/src/sources/HyperSync.resi +12 -2
  110. package/src/sources/HyperSyncClient.res +22 -111
  111. package/src/sources/HyperSyncClient.res.mjs +2 -30
  112. package/src/sources/HyperSyncHeightStream.res +1 -8
  113. package/src/sources/HyperSyncHeightStream.res.mjs +0 -2
  114. package/src/sources/HyperSyncSource.res +94 -107
  115. package/src/sources/HyperSyncSource.res.mjs +82 -86
  116. package/src/sources/Rpc.res +15 -47
  117. package/src/sources/Rpc.res.mjs +25 -56
  118. package/src/sources/RpcSource.res +320 -467
  119. package/src/sources/RpcSource.res.mjs +268 -385
  120. package/src/sources/RpcWebSocketHeightStream.res +0 -5
  121. package/src/sources/RpcWebSocketHeightStream.res.mjs +0 -2
  122. package/src/sources/SimulateSource.res +10 -4
  123. package/src/sources/SimulateSource.res.mjs +16 -6
  124. package/src/sources/Source.res +34 -6
  125. package/src/sources/SourceManager.res +86 -27
  126. package/src/sources/SourceManager.res.mjs +84 -47
  127. package/src/sources/SourceManager.resi +12 -3
  128. package/src/sources/Svm.res +31 -16
  129. package/src/sources/Svm.res.mjs +36 -13
  130. package/src/sources/SvmHyperSyncClient.res +5 -32
  131. package/src/sources/SvmHyperSyncSource.res +159 -134
  132. package/src/sources/SvmHyperSyncSource.res.mjs +164 -129
  133. package/src/sources/TransactionStore.res +49 -0
  134. package/src/sources/TransactionStore.res.mjs +30 -0
  135. package/src/tui/Tui.res +13 -16
  136. package/src/tui/Tui.res.mjs +12 -14
  137. package/svm.schema.json +49 -37
  138. package/src/bindings/Hrtime.res +0 -58
  139. package/src/bindings/Hrtime.res.mjs +0 -90
  140. package/src/bindings/Hrtime.resi +0 -30
package/svm.schema.json CHANGED
@@ -463,53 +463,65 @@
463
463
  "type": "object",
464
464
  "properties": {
465
465
  "transaction_fields": {
466
- "description": "Include the parent transaction for each matched instruction. Use `true` to include all fields.",
467
- "anyOf": [
468
- {
469
- "$ref": "#/$defs/FieldSelectionValue"
470
- },
471
- {
472
- "type": "null"
473
- }
474
- ]
466
+ "description": "Parent-transaction fields to include on each matched instruction, as a list of field names. Omit (or pass an empty list) to include no transaction.",
467
+ "type": [
468
+ "array",
469
+ "null"
470
+ ],
471
+ "items": {
472
+ "$ref": "#/$defs/SvmTransactionField"
473
+ }
474
+ },
475
+ "block_fields": {
476
+ "description": "Block fields to include on each matched instruction's `block`, as a list of field names. `slot`/`time`/`hash` are always included; this adds `height`/`parentSlot`/`parentHash`.",
477
+ "type": [
478
+ "array",
479
+ "null"
480
+ ],
481
+ "items": {
482
+ "$ref": "#/$defs/SvmBlockField"
483
+ }
475
484
  },
476
485
  "log_fields": {
477
- "description": "Include program logs scoped to each matched instruction. Use `true` to include all fields.",
478
- "anyOf": [
479
- {
480
- "$ref": "#/$defs/FieldSelectionValue"
481
- },
482
- {
483
- "type": "null"
484
- }
486
+ "description": "Set to `true` to include program logs scoped to each matched instruction.",
487
+ "type": [
488
+ "boolean",
489
+ "null"
485
490
  ]
486
491
  },
487
492
  "token_balance_fields": {
488
- "description": "Include SPL Token / Token-2022 balance snapshots for the parent transaction. Implies transaction_fields: true. Use `true` to include all fields.",
489
- "anyOf": [
490
- {
491
- "$ref": "#/$defs/FieldSelectionValue"
492
- },
493
- {
494
- "type": "null"
495
- }
493
+ "description": "Set to `true` to include SPL Token / Token-2022 balance snapshots for the parent transaction, exposed as `transaction.tokenBalances`. Independent of `transaction_fields`.",
494
+ "type": [
495
+ "boolean",
496
+ "null"
496
497
  ]
497
498
  }
498
499
  },
499
500
  "additionalProperties": false
500
501
  },
501
- "FieldSelectionValue": {
502
- "description": "Value for a field-selection entry. `true` includes all fields;\na list of field names enables per-field selection (not yet supported).",
503
- "anyOf": [
504
- {
505
- "type": "boolean"
506
- },
507
- {
508
- "type": "array",
509
- "items": {
510
- "type": "string"
511
- }
512
- }
502
+ "SvmTransactionField": {
503
+ "description": "Selectable parent-transaction field names (camelCase), matching the\npublic `svmTransaction` shape. `tokenBalances` is selected via the\nseparate `token_balance_fields` toggle, so it isn't listed here.",
504
+ "type": "string",
505
+ "enum": [
506
+ "transactionIndex",
507
+ "signatures",
508
+ "feePayer",
509
+ "success",
510
+ "err",
511
+ "fee",
512
+ "computeUnitsConsumed",
513
+ "accountKeys",
514
+ "recentBlockhash",
515
+ "version"
516
+ ]
517
+ },
518
+ "SvmBlockField": {
519
+ "description": "Selectable block field names (camelCase), matching the public\n`instruction.block` shape. `slot`/`time`/`hash` are always included,\nso everything here is opt-in on top of that trio.",
520
+ "type": "string",
521
+ "enum": [
522
+ "height",
523
+ "parentSlot",
524
+ "parentHash"
513
525
  ]
514
526
  },
515
527
  "ArgDef": {
@@ -1,58 +0,0 @@
1
- type seconds = float
2
- type milliseconds = float
3
- type nanoseconds = float
4
-
5
- type timeTuple = (seconds, nanoseconds)
6
-
7
- type timeRef = timeTuple
8
-
9
- type timeElapsed = timeTuple
10
-
11
- @val @scope("process") external makeTimer: unit => timeRef = "hrtime"
12
-
13
- @val @scope("process") external timeSince: timeRef => timeElapsed = "hrtime"
14
-
15
- let nanoToMilli = (nano: nanoseconds): milliseconds => nano /. 1_000_000.
16
- let secToMilli = (sec: seconds): milliseconds => sec *. 1_000.
17
-
18
- let nanoToTimeTuple = (nano: nanoseconds): timeTuple => {
19
- let factor = 1_000_000_000.
20
- let seconds = Math.floor(nano /. factor)
21
- let nanos = Float.mod(nano, factor)
22
- (seconds, nanos)
23
- }
24
-
25
- let timeElapsedToNewRef = (elapsed: timeElapsed, ref: timeRef): timeRef => {
26
- let (elapsedSeconds, elapsedNano) = elapsed
27
- let (refSeconds, refNano) = ref
28
-
29
- let (nanoExtraSeconds, remainderNanos) = nanoToTimeTuple(elapsedNano +. refNano)
30
- (elapsedSeconds +. refSeconds +. nanoExtraSeconds, remainderNanos)
31
- }
32
-
33
- let toMillis = ((sec, nano): timeElapsed): milliseconds => {
34
- sec->secToMilli +. nano->nanoToMilli
35
- }
36
-
37
- let toSeconds = ((sec, nano): timeElapsed): seconds => {
38
- sec +. nano /. 1_000_000_000.
39
- }
40
-
41
- let toSecondsFloat = (elapsed: timeElapsed): float => {
42
- elapsed->toSeconds->(Utils.magic: seconds => float)
43
- }
44
-
45
- let toInt = float => float->Int.fromFloat
46
- let intFromMillis = toInt
47
- let intFromNanos = toInt
48
- let intFromSeconds = toInt
49
- let floatFromMillis: milliseconds => float = v => v->(Utils.magic: milliseconds => float)
50
- let floatFromSeconds: seconds => float = v => v->(Utils.magic: seconds => float)
51
-
52
- let millisBetween = (~from: timeRef, ~to: timeRef): int => {
53
- to->toMillis->intFromMillis - from->toMillis->intFromMillis
54
- }
55
-
56
- let secondsBetween = (~from: timeRef, ~to: timeRef): float => {
57
- to->toSecondsFloat -. from->toSecondsFloat
58
- }
@@ -1,90 +0,0 @@
1
- // Generated by ReScript, PLEASE EDIT WITH CARE
2
-
3
-
4
- function nanoToMilli(nano) {
5
- return nano / 1000000;
6
- }
7
-
8
- function secToMilli(sec) {
9
- return sec * 1000;
10
- }
11
-
12
- function nanoToTimeTuple(nano) {
13
- let seconds = Math.floor(nano / 1000000000);
14
- let nanos = nano % 1000000000;
15
- return [
16
- seconds,
17
- nanos
18
- ];
19
- }
20
-
21
- function timeElapsedToNewRef(elapsed, ref) {
22
- let match = nanoToTimeTuple(elapsed[1] + ref[1]);
23
- return [
24
- elapsed[0] + ref[0] + match[0],
25
- match[1]
26
- ];
27
- }
28
-
29
- function toMillis(param) {
30
- return param[0] * 1000 + param[1] / 1000000;
31
- }
32
-
33
- function toSeconds(param) {
34
- return param[0] + param[1] / 1000000000;
35
- }
36
-
37
- let toSecondsFloat = toSeconds;
38
-
39
- function toInt(float) {
40
- return float | 0;
41
- }
42
-
43
- function floatFromMillis(v) {
44
- return v;
45
- }
46
-
47
- function floatFromSeconds(v) {
48
- return v;
49
- }
50
-
51
- function millisBetween(from, to) {
52
- return (toMillis(to) | 0) - (toMillis(from) | 0) | 0;
53
- }
54
-
55
- function secondsBetween(from, to) {
56
- return toSeconds(to) - toSeconds(from);
57
- }
58
-
59
- function makeTimer(prim) {
60
- return process.hrtime();
61
- }
62
-
63
- function timeSince(prim) {
64
- return process.hrtime(prim);
65
- }
66
-
67
- let intFromMillis = toInt;
68
-
69
- let intFromNanos = toInt;
70
-
71
- let intFromSeconds = toInt;
72
-
73
- export {
74
- makeTimer,
75
- timeSince,
76
- nanoToMilli,
77
- secToMilli,
78
- timeElapsedToNewRef,
79
- toMillis,
80
- toSeconds,
81
- toSecondsFloat,
82
- intFromMillis,
83
- intFromNanos,
84
- intFromSeconds,
85
- floatFromMillis,
86
- floatFromSeconds,
87
- millisBetween,
88
- secondsBetween,
89
- }
90
- /* No side effect */
@@ -1,30 +0,0 @@
1
- type seconds
2
- type milliseconds
3
- type nanoseconds
4
-
5
- type timeTuple = (seconds, nanoseconds)
6
-
7
- type timeRef
8
-
9
- type timeElapsed = timeTuple
10
-
11
- let makeTimer: unit => timeRef
12
-
13
- let timeSince: timeRef => timeElapsed
14
-
15
- let nanoToMilli: nanoseconds => milliseconds
16
- let secToMilli: seconds => milliseconds
17
-
18
- let timeElapsedToNewRef: (timeElapsed, timeRef) => timeRef
19
- let toMillis: timeElapsed => milliseconds
20
- let toSeconds: timeElapsed => seconds
21
- let toSecondsFloat: timeElapsed => float
22
-
23
- let intFromMillis: milliseconds => int
24
- let intFromNanos: nanoseconds => int
25
- let intFromSeconds: seconds => int
26
- let floatFromMillis: milliseconds => float
27
- let floatFromSeconds: seconds => float
28
-
29
- let millisBetween: (~from: timeRef, ~to: timeRef) => int
30
- let secondsBetween: (~from: timeRef, ~to: timeRef) => float