envio 3.9.0 → 3.10.0-subgraph

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 (143) hide show
  1. package/evm.schema.json +26 -0
  2. package/fuel.schema.json +26 -0
  3. package/index.d.ts +41 -8
  4. package/package.json +6 -7
  5. package/src/Batch.res +9 -0
  6. package/src/ChainState.res +35 -39
  7. package/src/ChainState.res.mjs +14 -11
  8. package/src/ChainState.resi +15 -7
  9. package/src/Config.res +61 -44
  10. package/src/Config.res.mjs +56 -19
  11. package/src/Core.res +19 -0
  12. package/src/Core.res.mjs +11 -0
  13. package/src/CrossChainState.res +15 -23
  14. package/src/CrossChainState.res.mjs +10 -18
  15. package/src/CrossChainState.resi +4 -1
  16. package/src/Ecosystem.res +7 -2
  17. package/src/Envio.res +6 -4
  18. package/src/EventConfigBuilder.res +169 -26
  19. package/src/EventConfigBuilder.res.mjs +124 -15
  20. package/src/EventProcessing.res +6 -6
  21. package/src/EventProcessing.res.mjs +8 -6
  22. package/src/HandlerLoader.res +20 -8
  23. package/src/HandlerLoader.res.mjs +11 -2
  24. package/src/HandlerRegister.res +21 -4
  25. package/src/HandlerRegister.res.mjs +24 -5
  26. package/src/InMemoryStore.res +9 -7
  27. package/src/InMemoryStore.res.mjs +3 -3
  28. package/src/IndexerState.res +43 -6
  29. package/src/IndexerState.res.mjs +36 -7
  30. package/src/IndexerState.resi +4 -4
  31. package/src/Internal.res +16 -17
  32. package/src/Metrics.res +72 -6
  33. package/src/Metrics.res.mjs +30 -2
  34. package/src/Persistence.res +36 -30
  35. package/src/Persistence.res.mjs +1 -20
  36. package/src/PgStorage.res +104 -56
  37. package/src/PgStorage.res.mjs +57 -35
  38. package/src/PruneStaleHistory.res +85 -52
  39. package/src/PruneStaleHistory.res.mjs +63 -37
  40. package/src/Rollback.res +68 -45
  41. package/src/Rollback.res.mjs +38 -19
  42. package/src/RollbackCommit.res +7 -9
  43. package/src/RollbackCommit.res.mjs +5 -6
  44. package/src/SafeCheckpointTracking.res +11 -11
  45. package/src/SafeCheckpointTracking.res.mjs +7 -6
  46. package/src/SimulateItems.res +33 -18
  47. package/src/SimulateItems.res.mjs +26 -22
  48. package/src/Sink.res +38 -26
  49. package/src/Sink.res.mjs +21 -16
  50. package/src/TestIndexer.res +5 -5
  51. package/src/TestIndexer.res.mjs +1 -1
  52. package/src/UserContext.res +358 -51
  53. package/src/UserContext.res.mjs +271 -35
  54. package/src/Utils.res +170 -0
  55. package/src/Utils.res.mjs +153 -0
  56. package/src/Writing.res +2 -2
  57. package/src/Writing.res.mjs +1 -1
  58. package/src/bindings/ClickHouse.res +366 -698
  59. package/src/bindings/ClickHouse.res.mjs +371 -421
  60. package/src/bindings/ClickHouseSink.res +337 -0
  61. package/src/bindings/ClickHouseSink.res.mjs +246 -0
  62. package/src/bindings/EventSource.res +8 -2
  63. package/src/bindings/NodeJs.res +6 -0
  64. package/src/bindings/Vitest.res +23 -0
  65. package/src/bindings/Vitest.res.mjs +3 -0
  66. package/src/bindings/WebSocket.res +9 -10
  67. package/src/db/CheckpointBounds.res +53 -0
  68. package/src/db/CheckpointBounds.res.mjs +44 -0
  69. package/src/db/EntityFilter.res +36 -17
  70. package/src/db/EntityFilter.res.mjs +25 -14
  71. package/src/db/EntityHistory.res +47 -22
  72. package/src/db/EntityHistory.res.mjs +19 -12
  73. package/src/db/InternalTable.res +84 -35
  74. package/src/db/InternalTable.res.mjs +56 -23
  75. package/src/db/RollbackFloors.res +55 -0
  76. package/src/db/RollbackFloors.res.mjs +92 -0
  77. package/src/db/Table.res +22 -4
  78. package/src/db/Table.res.mjs +30 -9
  79. package/src/sources/Evm.res +2 -0
  80. package/src/sources/Evm.res.mjs +2 -0
  81. package/src/sources/EvmHyperSyncSource.res +3 -3
  82. package/src/sources/EvmHyperSyncSource.res.mjs +3 -3
  83. package/src/sources/EvmRpcWs.res +124 -0
  84. package/src/sources/EvmRpcWs.res.mjs +117 -0
  85. package/src/sources/Fuel.res +2 -0
  86. package/src/sources/Fuel.res.mjs +2 -0
  87. package/src/sources/FuelHyperSyncSource.res +1 -1
  88. package/src/sources/FuelHyperSyncSource.res.mjs +2 -1
  89. package/src/sources/HeightFeed.res +568 -0
  90. package/src/sources/HeightFeed.res.mjs +452 -0
  91. package/src/sources/HeightStream.res +257 -0
  92. package/src/sources/HeightStream.res.mjs +194 -0
  93. package/src/sources/HyperSync.res +5 -0
  94. package/src/sources/HyperSync.res.mjs +3 -0
  95. package/src/sources/HyperSync.resi +4 -0
  96. package/src/sources/HyperSyncSSE.res +49 -0
  97. package/src/sources/HyperSyncSSE.res.mjs +79 -0
  98. package/src/sources/RpcSource.res +1 -1
  99. package/src/sources/RpcSource.res.mjs +2 -2
  100. package/src/sources/Source.res +54 -1
  101. package/src/sources/Source.res.mjs +25 -0
  102. package/src/sources/SourceManager.res +220 -227
  103. package/src/sources/SourceManager.res.mjs +139 -164
  104. package/src/sources/SourceManager.resi +8 -0
  105. package/src/sources/Svm.res +2 -0
  106. package/src/sources/Svm.res.mjs +2 -0
  107. package/src/sources/SvmHyperSyncClient.res +70 -127
  108. package/src/sources/SvmHyperSyncClient.res.mjs +51 -25
  109. package/src/sources/SvmHyperSyncSource.res +18 -15
  110. package/src/sources/SvmHyperSyncSource.res.mjs +5 -4
  111. package/src/subgraph/blocks.ts +176 -0
  112. package/src/subgraph/calls.ts +217 -0
  113. package/src/subgraph/conformance.ts +102 -0
  114. package/src/subgraph/division.ts +133 -0
  115. package/src/subgraph/errors.ts +90 -0
  116. package/src/subgraph/graph-ts-types/VERSION +2 -0
  117. package/src/subgraph/graph-ts-types/chain/arweave.d.ts +70 -0
  118. package/src/subgraph/graph-ts-types/chain/cosmos.d.ts +327 -0
  119. package/src/subgraph/graph-ts-types/chain/ethereum.d.ts +233 -0
  120. package/src/subgraph/graph-ts-types/chain/near.d.ts +253 -0
  121. package/src/subgraph/graph-ts-types/chain/starknet.d.ts +32 -0
  122. package/src/subgraph/graph-ts-types/common/collections.d.ts +136 -0
  123. package/src/subgraph/graph-ts-types/common/conversion.d.ts +11 -0
  124. package/src/subgraph/graph-ts-types/common/datasource.d.ts +30 -0
  125. package/src/subgraph/graph-ts-types/common/eager-offset.d.ts +0 -0
  126. package/src/subgraph/graph-ts-types/common/json.d.ts +17 -0
  127. package/src/subgraph/graph-ts-types/common/numbers.d.ts +120 -0
  128. package/src/subgraph/graph-ts-types/common/value.d.ts +120 -0
  129. package/src/subgraph/graph-ts-types/common/yaml.d.ts +90 -0
  130. package/src/subgraph/graph-ts-types/global/global.d.ts +194 -0
  131. package/src/subgraph/graph-ts-types/helper-functions.d.ts +22 -0
  132. package/src/subgraph/graph-ts-types/index.d.ts +102 -0
  133. package/src/subgraph/graph-ts.ts +1948 -0
  134. package/src/subgraph/hosts.ts +148 -0
  135. package/src/subgraph/runtime.ts +863 -0
  136. package/src/subgraph/scope.ts +66 -0
  137. package/svm.schema.json +6 -81
  138. package/src/MemoryStorage.res +0 -729
  139. package/src/MemoryStorage.res.mjs +0 -586
  140. package/src/sources/HyperSyncHeightStream.res +0 -129
  141. package/src/sources/HyperSyncHeightStream.res.mjs +0 -110
  142. package/src/sources/RpcWebSocketHeightStream.res +0 -175
  143. package/src/sources/RpcWebSocketHeightStream.res.mjs +0 -180
@@ -0,0 +1,117 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Rpc from "./Rpc.res.mjs";
4
+ import * as Utils from "../Utils.res.mjs";
5
+ import * as HeightStream from "./HeightStream.res.mjs";
6
+ import * as Stdlib_JsExn from "@rescript/runtime/lib/es6/Stdlib_JsExn.js";
7
+ import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
8
+
9
+ let subscribeRequestIdText = (1).toString();
10
+
11
+ let subscribeRequestJson = JSON.stringify({
12
+ jsonrpc: "2.0",
13
+ id: 1,
14
+ method: "eth_subscribe",
15
+ params: ["newHeads"]
16
+ });
17
+
18
+ let responseIdSchema = S$RescriptSchema.nullable(S$RescriptSchema.union([
19
+ S$RescriptSchema.string,
20
+ S$RescriptSchema.transform(S$RescriptSchema.int, param => ({
21
+ p: id => id.toString()
22
+ }))
23
+ ]));
24
+
25
+ function refusesSubscribe(id, subscribed) {
26
+ if (id !== undefined) {
27
+ return id === subscribeRequestIdText;
28
+ } else {
29
+ return !subscribed;
30
+ }
31
+ }
32
+
33
+ let wsMessageSchema = S$RescriptSchema.union([
34
+ S$RescriptSchema.object(s => {
35
+ s.f("method", S$RescriptSchema.literal("eth_subscription"));
36
+ return {
37
+ TAG: "NewHead",
38
+ _0: s.f("params", S$RescriptSchema.object(s => s.f("result", S$RescriptSchema.object(s => s.f("number", Rpc.hexIntSchema)))))
39
+ };
40
+ }),
41
+ S$RescriptSchema.object(s => {
42
+ let id = s.f("id", responseIdSchema);
43
+ s.f("result", S$RescriptSchema.string);
44
+ return {
45
+ TAG: "Response",
46
+ id: id,
47
+ isError: false
48
+ };
49
+ }),
50
+ S$RescriptSchema.object(s => {
51
+ let id = s.f("id", responseIdSchema);
52
+ s.f("error", S$RescriptSchema.object(s => s.f("code", S$RescriptSchema.int)));
53
+ return {
54
+ TAG: "Response",
55
+ id: id,
56
+ isError: true
57
+ };
58
+ })
59
+ ]);
60
+
61
+ function subscribe(wsUrl, onHeight, onStatus) {
62
+ return HeightStream.subscribe(60000, onHeight, onStatus, driver => {
63
+ let ws = new WebSocket(wsUrl);
64
+ let subscribed = {
65
+ contents: false
66
+ };
67
+ ws.onopen = () => {
68
+ ws.send(subscribeRequestJson);
69
+ };
70
+ ws.onmessage = event => {
71
+ if (typeof event.data !== "string") {
72
+ return driver.onUnreadable("binary frame");
73
+ }
74
+ let text = event.data;
75
+ let message = Utils.Option.catchToNone(() => S$RescriptSchema.parseOrThrow(JSON.parse(text), wsMessageSchema));
76
+ if (message === undefined) {
77
+ return driver.onUnreadable(text);
78
+ }
79
+ if (message.TAG === "NewHead") {
80
+ return driver.onHeight(message._0);
81
+ }
82
+ let id = message.id;
83
+ if (id !== undefined && !message.isError) {
84
+ if (id === subscribeRequestIdText) {
85
+ subscribed.contents = true;
86
+ return driver.onConnected();
87
+ } else {
88
+ return;
89
+ }
90
+ }
91
+ if (message.isError && refusesSubscribe(id, subscribed.contents)) {
92
+ return driver.onFailure("SubscribeRejected", text);
93
+ }
94
+ };
95
+ ws.onerror = error => driver.onFailure("TransportError", Stdlib_JsExn.message(error));
96
+ ws.onclose = () => driver.onFailure("Closed", undefined);
97
+ return () => {
98
+ ws.close();
99
+ };
100
+ });
101
+ }
102
+
103
+ let staleTimeout = 60000;
104
+
105
+ let subscribeRequestId = 1;
106
+
107
+ export {
108
+ staleTimeout,
109
+ subscribeRequestId,
110
+ subscribeRequestIdText,
111
+ subscribeRequestJson,
112
+ responseIdSchema,
113
+ refusesSubscribe,
114
+ wsMessageSchema,
115
+ subscribe,
116
+ }
117
+ /* subscribeRequestIdText Not a pure module */
@@ -40,6 +40,8 @@ let make = (~logger: Pino.t): Ecosystem.t => {
40
40
  blockTimestampName: "time",
41
41
  blockHashName: "id",
42
42
  onBlockMethodName: "onBlock",
43
+ contractNoun: "contract",
44
+ eventNoun: "event",
43
45
  // Fuel filter shape: `{block: {height: {_gte?, _lte?, _every?}}}`.
44
46
  // Inner range chunk parsed by `blockRangeSchema` in `Main.res`.
45
47
  onBlockFilterSchema: S.object(s =>
@@ -33,6 +33,8 @@ function make(logger) {
33
33
  blockTimestampName: "time",
34
34
  blockHashName: "id",
35
35
  onBlockMethodName: "onBlock",
36
+ contractNoun: "contract",
37
+ eventNoun: "event",
36
38
  onBlockFilterSchema: S$RescriptSchema.object(s => s.f("block", S$RescriptSchema.option(S$RescriptSchema.object(s2 => s2.f("height", S$RescriptSchema.unknown))))),
37
39
  onEventBlockFilterSchema: S$RescriptSchema.object(s => s.f("block", S$RescriptSchema.option(S$RescriptSchema.strict(S$RescriptSchema.object(s2 => s2.f("height", S$RescriptSchema.unknown)))))),
38
40
  logger: logger,
@@ -208,7 +208,7 @@ Learn more or get a free Envio API token at: https://envio.dev/app/api-tokens`)
208
208
  sourceFor: Sync,
209
209
  chainId,
210
210
  getBlockHashes,
211
- pollingInterval: 100,
211
+ pollingInterval: HyperSync.pollingInterval,
212
212
  poweredByHyperSync: true,
213
213
  getHeightOrThrow: async () => {
214
214
  let timerRef = Performance.now()
@@ -2,6 +2,7 @@
2
2
 
3
3
  import * as Source from "./Source.res.mjs";
4
4
  import * as Logging from "../Logging.res.mjs";
5
+ import * as HyperSync from "./HyperSync.res.mjs";
5
6
  import * as Performance from "../bindings/Performance.res.mjs";
6
7
  import * as Stdlib_JsExn from "@rescript/runtime/lib/es6/Stdlib_JsExn.js";
7
8
  import * as ErrorHandling from "../ErrorHandling.res.mjs";
@@ -180,7 +181,7 @@ Learn more or get a free Envio API token at: https://envio.dev/app/api-tokens`);
180
181
  sourceFor: "Sync",
181
182
  chainId: chainId,
182
183
  poweredByHyperSync: true,
183
- pollingInterval: 100,
184
+ pollingInterval: HyperSync.pollingInterval,
184
185
  getBlockHashes: getBlockHashes,
185
186
  getHeightOrThrow: async () => {
186
187
  let timerRef = Performance.now();