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.
Files changed (220) hide show
  1. package/README.md +3 -3
  2. package/bin.mjs +2 -48
  3. package/evm.schema.json +67 -0
  4. package/fuel.schema.json +67 -0
  5. package/index.d.ts +822 -38
  6. package/index.js +5 -3
  7. package/package.json +10 -8
  8. package/rescript.json +5 -9
  9. package/src/Address.res +4 -5
  10. package/src/Address.res.mjs +9 -12
  11. package/src/Api.res +15 -0
  12. package/src/Api.res.mjs +20 -0
  13. package/src/Batch.res +32 -34
  14. package/src/Batch.res.mjs +172 -187
  15. package/src/Bin.res +89 -0
  16. package/src/Bin.res.mjs +97 -0
  17. package/src/ChainFetcher.res +33 -57
  18. package/src/ChainFetcher.res.mjs +197 -227
  19. package/src/ChainManager.res +6 -14
  20. package/src/ChainManager.res.mjs +74 -85
  21. package/src/ChainMap.res +14 -16
  22. package/src/ChainMap.res.mjs +38 -38
  23. package/src/Config.res +193 -135
  24. package/src/Config.res.mjs +566 -592
  25. package/src/Core.res +182 -0
  26. package/src/Core.res.mjs +207 -0
  27. package/src/Ecosystem.res +25 -4
  28. package/src/Ecosystem.res.mjs +12 -13
  29. package/src/Env.res +20 -13
  30. package/src/Env.res.mjs +124 -113
  31. package/src/EnvSafe.res +269 -0
  32. package/src/EnvSafe.res.mjs +296 -0
  33. package/src/EnvSafe.resi +18 -0
  34. package/src/Envio.res +37 -26
  35. package/src/Envio.res.mjs +59 -60
  36. package/src/ErrorHandling.res +2 -2
  37. package/src/ErrorHandling.res.mjs +15 -15
  38. package/src/EventConfigBuilder.res +219 -81
  39. package/src/EventConfigBuilder.res.mjs +259 -202
  40. package/src/EventProcessing.res +27 -38
  41. package/src/EventProcessing.res.mjs +165 -183
  42. package/src/EventUtils.res +11 -11
  43. package/src/EventUtils.res.mjs +21 -22
  44. package/src/EvmTypes.res +0 -1
  45. package/src/EvmTypes.res.mjs +5 -5
  46. package/src/FetchState.res +360 -256
  47. package/src/FetchState.res.mjs +958 -914
  48. package/src/GlobalState.res +365 -351
  49. package/src/GlobalState.res.mjs +958 -992
  50. package/src/GlobalStateManager.res +1 -2
  51. package/src/GlobalStateManager.res.mjs +36 -44
  52. package/src/HandlerLoader.res +107 -23
  53. package/src/HandlerLoader.res.mjs +128 -38
  54. package/src/HandlerRegister.res +127 -103
  55. package/src/HandlerRegister.res.mjs +164 -164
  56. package/src/HandlerRegister.resi +12 -4
  57. package/src/Hasura.res +35 -22
  58. package/src/Hasura.res.mjs +158 -167
  59. package/src/InMemoryStore.res +20 -27
  60. package/src/InMemoryStore.res.mjs +64 -80
  61. package/src/InMemoryTable.res +34 -39
  62. package/src/InMemoryTable.res.mjs +165 -170
  63. package/src/Internal.res +52 -33
  64. package/src/Internal.res.mjs +84 -81
  65. package/src/LazyLoader.res.mjs +55 -61
  66. package/src/LoadLayer.res +77 -78
  67. package/src/LoadLayer.res.mjs +160 -189
  68. package/src/LoadManager.res +16 -21
  69. package/src/LoadManager.res.mjs +79 -84
  70. package/src/LogSelection.res +236 -68
  71. package/src/LogSelection.res.mjs +211 -141
  72. package/src/Logging.res +13 -9
  73. package/src/Logging.res.mjs +130 -143
  74. package/src/Main.res +430 -51
  75. package/src/Main.res.mjs +530 -271
  76. package/src/Persistence.res +80 -84
  77. package/src/Persistence.res.mjs +131 -132
  78. package/src/PgStorage.res +294 -167
  79. package/src/PgStorage.res.mjs +799 -817
  80. package/src/Prometheus.res +50 -58
  81. package/src/Prometheus.res.mjs +345 -373
  82. package/src/ReorgDetection.res +22 -24
  83. package/src/ReorgDetection.res.mjs +100 -106
  84. package/src/SafeCheckpointTracking.res +7 -7
  85. package/src/SafeCheckpointTracking.res.mjs +40 -43
  86. package/src/SimulateItems.res +41 -49
  87. package/src/SimulateItems.res.mjs +257 -272
  88. package/src/Sink.res +2 -2
  89. package/src/Sink.res.mjs +22 -26
  90. package/src/TableIndices.res +1 -2
  91. package/src/TableIndices.res.mjs +42 -48
  92. package/src/TestIndexer.res +196 -189
  93. package/src/TestIndexer.res.mjs +536 -536
  94. package/src/TestIndexerProxyStorage.res +16 -16
  95. package/src/TestIndexerProxyStorage.res.mjs +99 -122
  96. package/src/TestIndexerWorker.res +4 -0
  97. package/src/TestIndexerWorker.res.mjs +7 -0
  98. package/src/Throttler.res +3 -3
  99. package/src/Throttler.res.mjs +23 -24
  100. package/src/Time.res +1 -1
  101. package/src/Time.res.mjs +18 -21
  102. package/src/TopicFilter.res +3 -3
  103. package/src/TopicFilter.res.mjs +29 -30
  104. package/src/UserContext.res +93 -54
  105. package/src/UserContext.res.mjs +197 -182
  106. package/src/Utils.res +141 -86
  107. package/src/Utils.res.mjs +334 -295
  108. package/src/bindings/BigDecimal.res +0 -2
  109. package/src/bindings/BigDecimal.res.mjs +19 -23
  110. package/src/bindings/ClickHouse.res +28 -27
  111. package/src/bindings/ClickHouse.res.mjs +243 -240
  112. package/src/bindings/DateFns.res +11 -11
  113. package/src/bindings/DateFns.res.mjs +7 -7
  114. package/src/bindings/EventSource.res.mjs +2 -2
  115. package/src/bindings/Express.res +2 -5
  116. package/src/bindings/Hrtime.res +2 -2
  117. package/src/bindings/Hrtime.res.mjs +30 -32
  118. package/src/bindings/Lodash.res.mjs +1 -1
  119. package/src/bindings/NodeJs.res +14 -9
  120. package/src/bindings/NodeJs.res.mjs +20 -20
  121. package/src/bindings/Pino.res +8 -10
  122. package/src/bindings/Pino.res.mjs +40 -43
  123. package/src/bindings/Postgres.res +7 -5
  124. package/src/bindings/Postgres.res.mjs +9 -9
  125. package/src/bindings/PromClient.res +17 -2
  126. package/src/bindings/PromClient.res.mjs +30 -7
  127. package/src/bindings/SDSL.res.mjs +2 -2
  128. package/src/bindings/Viem.res +4 -4
  129. package/src/bindings/Viem.res.mjs +20 -22
  130. package/src/bindings/Vitest.res +1 -1
  131. package/src/bindings/Vitest.res.mjs +2 -2
  132. package/src/bindings/WebSocket.res +1 -1
  133. package/src/db/EntityHistory.res +9 -3
  134. package/src/db/EntityHistory.res.mjs +84 -59
  135. package/src/db/InternalTable.res +62 -60
  136. package/src/db/InternalTable.res.mjs +271 -203
  137. package/src/db/Schema.res +1 -2
  138. package/src/db/Schema.res.mjs +28 -32
  139. package/src/db/Table.res +28 -27
  140. package/src/db/Table.res.mjs +276 -292
  141. package/src/sources/EventRouter.res +21 -16
  142. package/src/sources/EventRouter.res.mjs +55 -57
  143. package/src/sources/Evm.res +17 -1
  144. package/src/sources/Evm.res.mjs +16 -8
  145. package/src/sources/EvmChain.res +15 -17
  146. package/src/sources/EvmChain.res.mjs +40 -42
  147. package/src/sources/Fuel.res +14 -1
  148. package/src/sources/Fuel.res.mjs +16 -8
  149. package/src/sources/FuelSDK.res +1 -1
  150. package/src/sources/FuelSDK.res.mjs +6 -8
  151. package/src/sources/HyperFuel.res +8 -10
  152. package/src/sources/HyperFuel.res.mjs +113 -123
  153. package/src/sources/HyperFuelClient.res.mjs +6 -7
  154. package/src/sources/HyperFuelSource.res +19 -20
  155. package/src/sources/HyperFuelSource.res.mjs +339 -356
  156. package/src/sources/HyperSync.res +11 -13
  157. package/src/sources/HyperSync.res.mjs +206 -220
  158. package/src/sources/HyperSyncClient.res +5 -7
  159. package/src/sources/HyperSyncClient.res.mjs +70 -75
  160. package/src/sources/HyperSyncHeightStream.res +8 -9
  161. package/src/sources/HyperSyncHeightStream.res.mjs +78 -86
  162. package/src/sources/HyperSyncJsonApi.res +18 -15
  163. package/src/sources/HyperSyncJsonApi.res.mjs +201 -231
  164. package/src/sources/HyperSyncSource.res +17 -21
  165. package/src/sources/HyperSyncSource.res.mjs +268 -290
  166. package/src/sources/Rpc.res +5 -5
  167. package/src/sources/Rpc.res.mjs +168 -192
  168. package/src/sources/RpcSource.res +166 -167
  169. package/src/sources/RpcSource.res.mjs +972 -1046
  170. package/src/sources/RpcWebSocketHeightStream.res +10 -11
  171. package/src/sources/RpcWebSocketHeightStream.res.mjs +131 -145
  172. package/src/sources/SimulateSource.res +1 -1
  173. package/src/sources/SimulateSource.res.mjs +35 -38
  174. package/src/sources/Source.res +1 -1
  175. package/src/sources/Source.res.mjs +3 -3
  176. package/src/sources/SourceManager.res +39 -20
  177. package/src/sources/SourceManager.res.mjs +340 -371
  178. package/src/sources/SourceManager.resi +2 -1
  179. package/src/sources/Svm.res +12 -5
  180. package/src/sources/Svm.res.mjs +44 -41
  181. package/src/tui/Tui.res +23 -12
  182. package/src/tui/Tui.res.mjs +292 -290
  183. package/src/tui/bindings/Ink.res +2 -4
  184. package/src/tui/bindings/Ink.res.mjs +35 -41
  185. package/src/tui/components/BufferedProgressBar.res +7 -7
  186. package/src/tui/components/BufferedProgressBar.res.mjs +46 -46
  187. package/src/tui/components/CustomHooks.res +1 -2
  188. package/src/tui/components/CustomHooks.res.mjs +102 -122
  189. package/src/tui/components/Messages.res +1 -2
  190. package/src/tui/components/Messages.res.mjs +38 -42
  191. package/src/tui/components/SyncETA.res +10 -11
  192. package/src/tui/components/SyncETA.res.mjs +178 -196
  193. package/src/tui/components/TuiData.res +1 -1
  194. package/src/tui/components/TuiData.res.mjs +7 -6
  195. package/src/vendored/Rest.res +52 -66
  196. package/src/vendored/Rest.res.mjs +324 -364
  197. package/svm.schema.json +67 -0
  198. package/src/Address.gen.ts +0 -8
  199. package/src/Config.gen.ts +0 -19
  200. package/src/Envio.gen.ts +0 -55
  201. package/src/EvmTypes.gen.ts +0 -6
  202. package/src/InMemoryStore.gen.ts +0 -6
  203. package/src/Internal.gen.ts +0 -64
  204. package/src/PgStorage.gen.ts +0 -10
  205. package/src/PgStorage.res.d.mts +0 -5
  206. package/src/Types.ts +0 -56
  207. package/src/bindings/BigDecimal.gen.ts +0 -14
  208. package/src/bindings/BigDecimal.res.d.mts +0 -5
  209. package/src/bindings/BigInt.gen.ts +0 -10
  210. package/src/bindings/BigInt.res +0 -70
  211. package/src/bindings/BigInt.res.d.mts +0 -5
  212. package/src/bindings/BigInt.res.mjs +0 -154
  213. package/src/bindings/Ethers.res.d.mts +0 -5
  214. package/src/bindings/Pino.gen.ts +0 -17
  215. package/src/bindings/Postgres.gen.ts +0 -8
  216. package/src/bindings/Postgres.res.d.mts +0 -5
  217. package/src/bindings/Promise.res +0 -67
  218. package/src/bindings/Promise.res.mjs +0 -26
  219. package/src/db/InternalTable.gen.ts +0 -36
  220. package/src/sources/HyperSyncClient.gen.ts +0 -19
@@ -6,93 +6,90 @@ import * as Table from "./db/Table.res.mjs";
6
6
  import * as Utils from "./Utils.res.mjs";
7
7
  import * as Schema from "./db/Schema.res.mjs";
8
8
  import * as Logging from "./Logging.res.mjs";
9
- import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
9
+ import * as Belt_Array from "@rescript/runtime/lib/es6/Belt_Array.js";
10
10
  import * as InternalTable from "./db/InternalTable.res.mjs";
11
11
  import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
12
- import * as Caml_js_exceptions from "rescript/lib/es6/caml_js_exceptions.js";
12
+ import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
13
13
 
14
14
  function auth(s) {
15
15
  return {
16
- role: s.header("X-Hasura-Role", S$RescriptSchema.string),
17
- secret: s.header("X-Hasura-Admin-Secret", S$RescriptSchema.string)
18
- };
16
+ role: s.header("X-Hasura-Role", S$RescriptSchema.string),
17
+ secret: s.header("X-Hasura-Admin-Secret", S$RescriptSchema.string)
18
+ };
19
19
  }
20
20
 
21
- var responses = [
22
- (function (s) {
23
- s.status(200);
24
- s.data(S$RescriptSchema.unknown);
25
- return "QuerySucceeded";
26
- }),
27
- (function (s) {
28
- s.field("code", S$RescriptSchema.$$enum([
29
- "already-exists",
30
- "already-tracked"
31
- ]));
32
- return "AlreadyDone";
33
- })
21
+ let responses = [
22
+ s => {
23
+ s.status(200);
24
+ s.data(S$RescriptSchema.unknown);
25
+ return "QuerySucceeded";
26
+ },
27
+ s => {
28
+ s.field("code", S$RescriptSchema.$$enum([
29
+ "already-exists",
30
+ "already-tracked"
31
+ ]));
32
+ return "AlreadyDone";
33
+ }
34
34
  ];
35
35
 
36
36
  function clearMetadataRoute() {
37
37
  return {
38
- method: "POST",
39
- path: "",
40
- input: (function (s) {
41
- s.field("type", S$RescriptSchema.literal("clear_metadata"));
42
- s.field("args", S$RescriptSchema.literal({}));
43
- return auth(s);
44
- }),
45
- responses: responses
46
- };
38
+ method: "POST",
39
+ path: "",
40
+ input: s => {
41
+ s.field("type", S$RescriptSchema.literal("clear_metadata"));
42
+ s.field("args", S$RescriptSchema.literal({}));
43
+ return auth(s);
44
+ },
45
+ responses: responses
46
+ };
47
47
  }
48
48
 
49
49
  function trackTablesRoute() {
50
50
  return {
51
- method: "POST",
52
- path: "",
53
- input: (function (s) {
54
- s.field("type", S$RescriptSchema.literal("pg_track_tables"));
55
- return {
56
- args: s.field("args", S$RescriptSchema.json(false)),
57
- auth: auth(s)
58
- };
59
- }),
60
- responses: responses
61
- };
51
+ method: "POST",
52
+ path: "",
53
+ input: s => {
54
+ s.field("type", S$RescriptSchema.literal("pg_track_tables"));
55
+ return {
56
+ args: s.field("args", S$RescriptSchema.json(false)),
57
+ auth: auth(s)
58
+ };
59
+ },
60
+ responses: responses
61
+ };
62
62
  }
63
63
 
64
64
  function rawBodyRoute() {
65
65
  return {
66
- method: "POST",
67
- path: "",
68
- input: (function (s) {
69
- return {
70
- bodyString: s.rawBody(S$RescriptSchema.string),
71
- auth: auth(s)
72
- };
73
- }),
74
- responses: responses
75
- };
66
+ method: "POST",
67
+ path: "",
68
+ input: s => ({
69
+ bodyString: s.rawBody(S$RescriptSchema.string),
70
+ auth: auth(s)
71
+ }),
72
+ responses: responses
73
+ };
76
74
  }
77
75
 
78
76
  async function sendOperation(endpoint, auth, operation) {
79
- var retry = async function (attempt) {
77
+ let retry = async attempt => {
80
78
  try {
81
- await Rest.$$fetch(rawBodyRoute, {
82
- bodyString: JSON.stringify(operation),
83
- auth: auth
84
- }, Rest.client(endpoint, undefined));
85
- return ;
86
- }
87
- catch (raw_exn){
88
- var exn = Caml_js_exceptions.internalToOCamlException(raw_exn);
79
+ await Rest.fetch(rawBodyRoute, {
80
+ bodyString: JSON.stringify(operation),
81
+ auth: auth
82
+ }, Rest.client(endpoint, undefined));
83
+ return;
84
+ } catch (raw_exn) {
85
+ let exn = Primitive_exceptions.internalToException(raw_exn);
89
86
  if (attempt >= 3) {
90
87
  return Logging.warn({
91
- msg: "Hasura configuration request failed. Indexing will still work - but you may have issues querying data via GraphQL.",
92
- err: Utils.prettifyExn(exn)
93
- });
88
+ msg: "Hasura configuration request failed. Indexing will still work - but you may have issues querying data via GraphQL.",
89
+ err: Utils.prettifyExn(exn)
90
+ });
94
91
  }
95
- var backoffMs = Math.imul(Math.pow(2.0, attempt) | 0, 1000);
92
+ let backoffMs = (Math.pow(2.0, attempt) | 0) * 1000 | 0;
96
93
  await Time.resolvePromiseAfterDelay(backoffMs);
97
94
  return await retry(attempt + 1 | 0);
98
95
  }
@@ -102,134 +99,128 @@ async function sendOperation(endpoint, auth, operation) {
102
99
 
103
100
  async function clearHasuraMetadata(endpoint, auth) {
104
101
  try {
105
- var result = await Rest.$$fetch(clearMetadataRoute, auth, Rest.client(endpoint, undefined));
106
- var msg;
107
- msg = result === "QuerySucceeded" ? "Hasura metadata cleared" : "Hasura metadata already cleared";
108
- return Logging.trace(msg);
109
- }
110
- catch (raw_exn){
111
- var exn = Caml_js_exceptions.internalToOCamlException(raw_exn);
102
+ let result = await Rest.fetch(clearMetadataRoute, auth, Rest.client(endpoint, undefined));
103
+ let tmp;
104
+ tmp = result === "QuerySucceeded" ? "Hasura metadata cleared" : "Hasura metadata already cleared";
105
+ return Logging.trace(tmp);
106
+ } catch (raw_exn) {
107
+ let exn = Primitive_exceptions.internalToException(raw_exn);
112
108
  return Logging.error({
113
- msg: "There was an issue clearing metadata in hasura - indexing may still work - but you may have issues querying the data in hasura.",
114
- err: Utils.prettifyExn(exn)
115
- });
109
+ msg: `There was an issue clearing metadata in hasura - indexing may still work - but you may have issues querying the data in hasura.`,
110
+ err: Utils.prettifyExn(exn)
111
+ });
116
112
  }
117
113
  }
118
114
 
119
115
  async function trackTables(endpoint, auth, pgSchema, tableNames) {
120
116
  try {
121
- var result = await Rest.$$fetch(trackTablesRoute, {
122
- auth: auth,
123
- args: {
124
- allow_warnings: false,
125
- tables: tableNames.map(function (tableName) {
126
- return {
127
- table: {
128
- name: tableName,
129
- schema: pgSchema
130
- },
131
- configuration: {
132
- custom_name: tableName
133
- }
134
- };
135
- })
117
+ let result = await Rest.fetch(trackTablesRoute, {
118
+ auth: auth,
119
+ args: {
120
+ allow_warnings: false,
121
+ tables: tableNames.map(tableName => ({
122
+ table: {
123
+ name: tableName,
124
+ schema: pgSchema
125
+ },
126
+ configuration: {
127
+ custom_name: tableName
136
128
  }
137
- }, Rest.client(endpoint, undefined));
138
- var msg;
129
+ }))
130
+ }
131
+ }, Rest.client(endpoint, undefined));
132
+ let msg;
139
133
  msg = result === "QuerySucceeded" ? "Hasura finished tracking tables" : "Hasura tables already tracked";
140
134
  return Logging.trace({
141
- msg: msg,
142
- tableNames: tableNames
143
- });
144
- }
145
- catch (raw_exn){
146
- var exn = Caml_js_exceptions.internalToOCamlException(raw_exn);
135
+ msg: msg,
136
+ tableNames: tableNames
137
+ });
138
+ } catch (raw_exn) {
139
+ let exn = Primitive_exceptions.internalToException(raw_exn);
147
140
  return Logging.error({
148
- msg: "There was an issue tracking tables in hasura - indexing may still work - but you may have issues querying the data in hasura.",
149
- tableNames: tableNames,
150
- err: Utils.prettifyExn(exn)
151
- });
141
+ msg: `There was an issue tracking tables in hasura - indexing may still work - but you may have issues querying the data in hasura.`,
142
+ tableNames: tableNames,
143
+ err: Utils.prettifyExn(exn)
144
+ });
152
145
  }
153
146
  }
154
147
 
155
148
  async function createSelectPermission(endpoint, auth, tableName, pgSchema, responseLimit, aggregateEntities) {
156
149
  return await sendOperation(endpoint, auth, {
157
- type: "pg_create_select_permission",
158
- args: {
159
- table: {
160
- schema: pgSchema,
161
- name: tableName
162
- },
163
- role: "public",
164
- source: "default",
165
- permission: {
166
- columns: "*",
167
- filter: {},
168
- limit: responseLimit,
169
- allow_aggregations: aggregateEntities.includes(tableName)
170
- }
171
- }
172
- });
150
+ type: "pg_create_select_permission",
151
+ args: {
152
+ table: {
153
+ schema: pgSchema,
154
+ name: tableName
155
+ },
156
+ role: "public",
157
+ source: "default",
158
+ permission: {
159
+ columns: "*",
160
+ filter: {},
161
+ limit: responseLimit,
162
+ allow_aggregations: aggregateEntities.includes(tableName)
163
+ }
164
+ }
165
+ });
173
166
  }
174
167
 
175
168
  async function createEntityRelationship(endpoint, auth, pgSchema, tableName, relationshipType, relationalKey, objectName, mappedEntity, isDerivedFrom) {
176
- var derivedFromTo = isDerivedFrom ? "\"id\": \"" + relationalKey + "\"" : "\"" + relationalKey + "_id\" : \"id\"";
169
+ let derivedFromTo = isDerivedFrom ? `"id": "` + relationalKey + `"` : `"` + relationalKey + `_id" : "id"`;
177
170
  return await sendOperation(endpoint, auth, {
178
- type: "pg_create_" + relationshipType + "_relationship",
179
- args: {
180
- table: {
181
- schema: pgSchema,
182
- name: tableName
183
- },
184
- name: objectName,
185
- source: "default",
186
- using: {
187
- manual_configuration: {
188
- remote_table: {
189
- schema: pgSchema,
190
- name: mappedEntity
191
- },
192
- column_mapping: JSON.parse("{" + derivedFromTo + "}")
193
- }
194
- }
195
- }
196
- });
171
+ type: `pg_create_` + relationshipType + `_relationship`,
172
+ args: {
173
+ table: {
174
+ schema: pgSchema,
175
+ name: tableName
176
+ },
177
+ name: objectName,
178
+ source: "default",
179
+ using: {
180
+ manual_configuration: {
181
+ remote_table: {
182
+ schema: pgSchema,
183
+ name: mappedEntity
184
+ },
185
+ column_mapping: JSON.parse(`{` + derivedFromTo + `}`)
186
+ }
187
+ }
188
+ }
189
+ });
197
190
  }
198
191
 
199
192
  async function trackDatabase(endpoint, auth, pgSchema, userEntities, aggregateEntities, responseLimit, schema) {
200
- var exposedInternalTableNames = [
193
+ let exposedInternalTableNames = [
201
194
  InternalTable.RawEvents.table.tableName,
202
195
  InternalTable.Views.metaViewName,
203
196
  InternalTable.Views.chainMetadataViewName
204
197
  ];
205
- var userTableNames = userEntities.map(function (entity) {
206
- return entity.table.tableName;
207
- });
208
- var tableNames = Belt_Array.concatMany([
209
- exposedInternalTableNames,
210
- userTableNames
211
- ]);
198
+ let userTableNames = userEntities.map(entity => entity.table.tableName);
199
+ let tableNames = Belt_Array.concatMany([
200
+ exposedInternalTableNames,
201
+ userTableNames
202
+ ]);
212
203
  Logging.info("Tracking tables in Hasura");
213
204
  await clearHasuraMetadata(endpoint, auth);
214
205
  await trackTables(endpoint, auth, pgSchema, tableNames);
215
- for(var i = 0 ,i_finish = tableNames.length; i < i_finish; ++i){
216
- var tableName = tableNames[i];
206
+ for (let i = 0, i_finish = tableNames.length; i < i_finish; ++i) {
207
+ let tableName = tableNames[i];
217
208
  await createSelectPermission(endpoint, auth, tableName, pgSchema, responseLimit, aggregateEntities);
218
209
  }
219
- for(var i$1 = 0 ,i_finish$1 = userEntities.length; i$1 < i_finish$1; ++i$1){
220
- var entityConfig = userEntities[i$1];
221
- var match = entityConfig.table;
222
- var tableName$1 = match.tableName;
223
- var derivedFromFields = Table.getDerivedFromFields(entityConfig.table);
224
- for(var j = 0 ,j_finish = derivedFromFields.length; j < j_finish; ++j){
225
- var derivedFromField = derivedFromFields[j];
226
- var relationalFieldName = Utils.unwrapResultExn(Schema.getDerivedFromFieldName(schema, derivedFromField));
210
+ for (let i$1 = 0, i_finish$1 = userEntities.length; i$1 < i_finish$1; ++i$1) {
211
+ let entityConfig = userEntities[i$1];
212
+ let match = entityConfig.table;
213
+ let tableName$1 = match.tableName;
214
+ let derivedFromFields = Table.getDerivedFromFields(entityConfig.table);
215
+ for (let j = 0, j_finish = derivedFromFields.length; j < j_finish; ++j) {
216
+ let derivedFromField = derivedFromFields[j];
217
+ let relationalFieldName = Utils.unwrapResultExn(Schema.getDerivedFromFieldName(schema, derivedFromField));
227
218
  await createEntityRelationship(endpoint, auth, pgSchema, tableName$1, "array", relationalFieldName, derivedFromField.fieldName, derivedFromField.derivedFromEntity, true);
228
219
  }
229
- var linkedEntityFields = Table.getLinkedEntityFields(entityConfig.table);
230
- for(var j$1 = 0 ,j_finish$1 = linkedEntityFields.length; j$1 < j_finish$1; ++j$1){
231
- var match$1 = linkedEntityFields[j$1];
232
- var field = match$1[0];
220
+ let linkedEntityFields = Table.getLinkedEntityFields(entityConfig.table);
221
+ for (let j$1 = 0, j_finish$1 = linkedEntityFields.length; j$1 < j_finish$1; ++j$1) {
222
+ let match$1 = linkedEntityFields[j$1];
223
+ let field = match$1[0];
233
224
  await createEntityRelationship(endpoint, auth, pgSchema, tableName$1, "object", field.fieldName, field.fieldName, match$1[1], false);
234
225
  }
235
226
  }
@@ -237,16 +228,16 @@ async function trackDatabase(endpoint, auth, pgSchema, userEntities, aggregateEn
237
228
  }
238
229
 
239
230
  export {
240
- auth ,
241
- responses ,
242
- clearMetadataRoute ,
243
- trackTablesRoute ,
244
- rawBodyRoute ,
245
- sendOperation ,
246
- clearHasuraMetadata ,
247
- trackTables ,
248
- createSelectPermission ,
249
- createEntityRelationship ,
250
- trackDatabase ,
231
+ auth,
232
+ responses,
233
+ clearMetadataRoute,
234
+ trackTablesRoute,
235
+ rawBodyRoute,
236
+ sendOperation,
237
+ clearHasuraMetadata,
238
+ trackTables,
239
+ createSelectPermission,
240
+ createEntityRelationship,
241
+ trackDatabase,
251
242
  }
252
243
  /* Rest Not a pure module */
@@ -1,4 +1,3 @@
1
- @genType
2
1
  type rawEventsKey = {
3
2
  chainId: int,
4
3
  eventId: string,
@@ -11,9 +10,9 @@ module EntityTables = {
11
10
  type t = dict<InMemoryTable.Entity.t<Internal.entity>>
12
11
  exception UndefinedEntity({entityName: string})
13
12
  let make = (entities: array<Internal.entityConfig>): t => {
14
- let init = Js.Dict.empty()
13
+ let init = Dict.make()
15
14
  entities->Belt.Array.forEach(entityConfig => {
16
- init->Js.Dict.set((entityConfig.name :> string), InMemoryTable.Entity.make())
15
+ init->Dict.set((entityConfig.name :> string), InMemoryTable.Entity.make())
17
16
  })
18
17
  init
19
18
  }
@@ -34,9 +33,9 @@ module EntityTables = {
34
33
 
35
34
  let clone = (self: t) => {
36
35
  self
37
- ->Js.Dict.entries
36
+ ->Dict.toArray
38
37
  ->Belt.Array.map(((k, v)) => (k, v->InMemoryTable.Entity.clone))
39
- ->Js.Dict.fromArray
38
+ ->Dict.fromArray
40
39
  }
41
40
  }
42
41
 
@@ -57,19 +56,19 @@ type t = {
57
56
  let make = (~entities: array<Internal.entityConfig>, ~rollbackTargetCheckpointId=?): t => {
58
57
  rawEvents: InMemoryTable.make(~hash=hashRawEventsKey),
59
58
  entities: EntityTables.make(entities),
60
- effects: Js.Dict.empty(),
59
+ effects: Dict.make(),
61
60
  rollbackTargetCheckpointId,
62
61
  }
63
62
 
64
63
  let clone = (self: t) => {
65
64
  rawEvents: self.rawEvents->InMemoryTable.clone,
66
65
  entities: self.entities->EntityTables.clone,
67
- effects: Js.Dict.map(table => {
66
+ effects: Dict.mapValues(self.effects, table => {
68
67
  idsToStore: table.idsToStore->Array.copy,
69
68
  invalidationsCount: table.invalidationsCount,
70
69
  dict: table.dict->Utils.Dict.shallowCopy,
71
70
  effect: table.effect,
72
- }, self.effects),
71
+ }),
73
72
  rollbackTargetCheckpointId: self.rollbackTargetCheckpointId,
74
73
  }
75
74
 
@@ -80,11 +79,11 @@ let getEffectInMemTable = (inMemoryStore: t, ~effect: Internal.effect) => {
80
79
  | None =>
81
80
  let table = {
82
81
  idsToStore: [],
83
- dict: Js.Dict.empty(),
82
+ dict: Dict.make(),
84
83
  invalidationsCount: 0,
85
84
  effect,
86
85
  }
87
- inMemoryStore.effects->Js.Dict.set(key, table)
86
+ inMemoryStore.effects->Dict.set(key, table)
88
87
  table
89
88
  }
90
89
  }
@@ -100,43 +99,37 @@ let isRollingBack = (inMemoryStore: t) => inMemoryStore.rollbackTargetCheckpoint
100
99
 
101
100
  let setBatchDcs = (inMemoryStore: t, ~batch: Batch.t, ~shouldSaveHistory) => {
102
101
  let inMemTable =
103
- inMemoryStore->getInMemTable(~entityConfig=InternalTable.DynamicContractRegistry.entityConfig)
102
+ inMemoryStore->getInMemTable(~entityConfig=InternalTable.EnvioAddresses.entityConfig)
104
103
 
105
104
  let itemIdx = ref(0)
106
105
 
107
106
  for checkpoint in 0 to batch.checkpointIds->Array.length - 1 {
108
- let checkpointId = batch.checkpointIds->Js.Array2.unsafe_get(checkpoint)
109
- let chainId = batch.checkpointChainIds->Js.Array2.unsafe_get(checkpoint)
110
- let checkpointEventsProcessed =
111
- batch.checkpointEventsProcessed->Js.Array2.unsafe_get(checkpoint)
107
+ let checkpointId = batch.checkpointIds->Array.getUnsafe(checkpoint)
108
+ let chainId = batch.checkpointChainIds->Array.getUnsafe(checkpoint)
109
+ let checkpointEventsProcessed = batch.checkpointEventsProcessed->Array.getUnsafe(checkpoint)
112
110
 
113
111
  for idx in 0 to checkpointEventsProcessed - 1 {
114
- let item = batch.items->Js.Array2.unsafe_get(itemIdx.contents + idx)
112
+ let item = batch.items->Array.getUnsafe(itemIdx.contents + idx)
115
113
  switch item->Internal.getItemDcs {
116
114
  | None => ()
117
115
  | Some(dcs) =>
118
116
  // Currently only events support contract registration, so we can cast to event item
119
117
  let eventItem = item->Internal.castUnsafeEventItem
120
118
  for dcIdx in 0 to dcs->Array.length - 1 {
121
- let dc = dcs->Js.Array2.unsafe_get(dcIdx)
122
- let entity: InternalTable.DynamicContractRegistry.t = {
123
- id: InternalTable.DynamicContractRegistry.makeId(~chainId, ~contractAddress=dc.address),
119
+ let dc = dcs->Array.getUnsafe(dcIdx)
120
+ let entity: InternalTable.EnvioAddresses.t = {
121
+ id: InternalTable.EnvioAddresses.makeId(~chainId, ~address=dc.address),
124
122
  chainId,
125
- contractAddress: dc.address,
126
123
  contractName: dc.contractName,
127
- registeringEventBlockNumber: eventItem.blockNumber,
128
- registeringEventLogIndex: eventItem.logIndex,
129
- registeringEventBlockTimestamp: eventItem.timestamp,
130
- registeringEventContractName: eventItem.eventConfig.contractName,
131
- registeringEventName: eventItem.eventConfig.name,
132
- registeringEventSrcAddress: eventItem.event.srcAddress,
124
+ registrationBlock: eventItem.blockNumber,
125
+ registrationLogIndex: eventItem.logIndex,
133
126
  }
134
127
 
135
128
  inMemTable->InMemoryTable.Entity.set(
136
129
  Set({
137
130
  entityId: entity.id,
138
131
  checkpointId,
139
- entity: entity->InternalTable.DynamicContractRegistry.castToInternal,
132
+ entity: entity->InternalTable.EnvioAddresses.castToInternal,
140
133
  }),
141
134
  ~shouldSaveHistory,
142
135
  )