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
@@ -2,29 +2,28 @@
2
2
 
3
3
  import * as Table from "./db/Table.res.mjs";
4
4
  import * as Utils from "./Utils.res.mjs";
5
- import * as Js_exn from "rescript/lib/es6/js_exn.js";
6
5
  import * as Address from "./Address.res.mjs";
7
6
  import * as Logging from "./Logging.res.mjs";
7
+ import * as ChainMap from "./ChainMap.res.mjs";
8
8
  import * as Internal from "./Internal.res.mjs";
9
9
  import * as LoadLayer from "./LoadLayer.res.mjs";
10
- import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
11
- import * as Belt_Option from "rescript/lib/es6/belt_Option.js";
10
+ import * as Belt_Array from "@rescript/runtime/lib/es6/Belt_Array.js";
11
+ import * as Belt_Option from "@rescript/runtime/lib/es6/Belt_Option.js";
12
12
  import * as ErrorHandling from "./ErrorHandling.res.mjs";
13
13
  import * as InMemoryStore from "./InMemoryStore.res.mjs";
14
14
  import * as InMemoryTable from "./InMemoryTable.res.mjs";
15
+ import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
15
16
  import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
16
17
 
17
- var codegenHelpMessage = "Rerun 'pnpm dev' to update generated code after schema.graphql changes.";
18
+ let codegenHelpMessage = `Rerun 'pnpm dev' to update generated code after schema.graphql changes.`;
18
19
 
19
- var paramsByThis = new WeakMap();
20
+ let paramsByThis = new WeakMap();
20
21
 
21
- var effectContextPrototype = (Object.create(null));
22
+ let effectContextPrototype = (Object.create(null));
22
23
 
23
24
  Object.defineProperty(effectContextPrototype, "log", {
24
- get: (function () {
25
- return Logging.getUserLogger(paramsByThis.get(this).item);
26
- })
27
- });
25
+ get: () => Logging.getUserLogger(paramsByThis.get(this).item)
26
+ });
28
27
 
29
28
  var EffectContext = function(params, defaultShouldCache, callEffect) {
30
29
  paramsByThis.set(this, params);
@@ -35,10 +34,10 @@ EffectContext.prototype = effectContextPrototype;
35
34
  ;
36
35
 
37
36
  function initEffect(params) {
38
- var callEffect = function (effect, input) {
39
- var effectContext = new EffectContext(params, effect.defaultShouldCache, callEffect);
40
- var effectArgs_cacheKey = Utils.Hash.makeOrThrow(S$RescriptSchema.reverseConvertOrThrow(input, effect.input));
41
- var effectArgs = {
37
+ let callEffect = (effect, input) => {
38
+ let effectContext = new EffectContext(params, effect.defaultShouldCache, callEffect);
39
+ let effectArgs_cacheKey = Utils.Hash.makeOrThrow(S$RescriptSchema.reverseConvertOrThrow(input, effect.input));
40
+ let effectArgs = {
42
41
  input: input,
43
42
  context: effectContext,
44
43
  cacheKey: effectArgs_cacheKey
@@ -49,68 +48,64 @@ function initEffect(params) {
49
48
  }
50
49
 
51
50
  function getWhereHandler(params, filter) {
52
- var entityConfig = params.entityConfig;
53
- var filterKeys = Object.keys(filter);
51
+ let entityConfig = params.entityConfig;
52
+ let filterKeys = Object.keys(filter);
54
53
  if (filterKeys.length === 0) {
55
- Js_exn.raiseError("Empty filter passed to context." + entityConfig.name + ".getWhere(). Please provide a filter like { fieldName: { _eq: value } }.");
54
+ Stdlib_JsError.throwWithMessage(`Empty filter passed to context.` + entityConfig.name + `.getWhere(). Please provide a filter like { fieldName: { _eq: value } }.`);
56
55
  }
57
56
  if (filterKeys.length > 1) {
58
- Js_exn.raiseError("Multiple filter fields passed to context." + entityConfig.name + ".getWhere(). Currently only one filter field per call is supported. Received fields: " + filterKeys.join(", ") + ".");
57
+ Stdlib_JsError.throwWithMessage(`Multiple filter fields passed to context.` + entityConfig.name + `.getWhere(). Currently only one filter field per call is supported. Received fields: ` + filterKeys.join(", ") + `.`);
59
58
  }
60
- var dbFieldName = filterKeys[0];
61
- var operatorObj = filter[dbFieldName];
62
- var operatorKeys = Object.keys(operatorObj);
59
+ let dbFieldName = filterKeys[0];
60
+ let operatorObj = filter[dbFieldName];
61
+ let operatorKeys = Object.keys(operatorObj);
63
62
  if (operatorKeys.length === 0) {
64
- Js_exn.raiseError("Empty operator passed to context." + entityConfig.name + ".getWhere({ " + dbFieldName + ": {} }). Please provide an operator like { _eq: value }, { _gt: value }, { _lt: value }, { _gte: value }, { _lte: value }, or { _in: [values] }.");
63
+ Stdlib_JsError.throwWithMessage(`Empty operator passed to context.` + entityConfig.name + `.getWhere({ ` + dbFieldName + `: {} }). Please provide an operator like { _eq: value }, { _gt: value }, { _lt: value }, { _gte: value }, { _lte: value }, or { _in: [values] }.`);
65
64
  }
66
65
  if (operatorKeys.length > 1) {
67
- Js_exn.raiseError("Multiple operators passed to context." + entityConfig.name + ".getWhere({ " + dbFieldName + ": ... }). Currently only one operator per filter field is supported. Received operators: " + operatorKeys.join(", ") + ".");
66
+ Stdlib_JsError.throwWithMessage(`Multiple operators passed to context.` + entityConfig.name + `.getWhere({ ` + dbFieldName + `: ... }). Currently only one operator per filter field is supported. Received operators: ` + operatorKeys.join(", ") + `.`);
68
67
  }
69
- var operatorKey = operatorKeys[0];
70
- var match = Table.getFieldByDbName(entityConfig.table, dbFieldName);
71
- var fieldSchema;
68
+ let operatorKey = operatorKeys[0];
69
+ let match = Table.getFieldByDbName(entityConfig.table, dbFieldName);
70
+ let fieldSchema;
72
71
  if (match !== undefined) {
73
72
  if (match.TAG === "Field") {
74
- var match$1 = match._0;
75
- fieldSchema = match$1.isIndex || match$1.linkedEntity !== undefined ? match$1.fieldSchema : Js_exn.raiseError("The field \"" + dbFieldName + "\" on entity \"" + entityConfig.name + "\" does not have an index. To use it in getWhere(), add the @index directive in your schema.graphql:\n\n " + dbFieldName + ": ... @index\n\nThen run 'pnpm envio codegen' to regenerate.");
73
+ let match$1 = match._0;
74
+ fieldSchema = match$1.isIndex || match$1.linkedEntity !== undefined ? match$1.fieldSchema : Stdlib_JsError.throwWithMessage(`The field "` + dbFieldName + `" on entity "` + entityConfig.name + `" does not have an index. To use it in getWhere(), add the @index directive in your schema.graphql:\n\n ` + dbFieldName + `: ... @index\n\nThen run 'pnpm envio codegen' to regenerate.`);
76
75
  } else {
77
- fieldSchema = Js_exn.raiseError("The field \"" + dbFieldName + "\" on entity \"" + entityConfig.name + "\" is a derived field and cannot be used in getWhere(). Use the source entity's indexed field instead.");
76
+ fieldSchema = Stdlib_JsError.throwWithMessage(`The field "` + dbFieldName + `" on entity "` + entityConfig.name + `" is a derived field and cannot be used in getWhere(). Use the source entity's indexed field instead.`);
78
77
  }
79
78
  } else {
80
- fieldSchema = Js_exn.raiseError("Invalid field \"" + dbFieldName + "\" in context." + entityConfig.name + ".getWhere(). The field doesn't exist. " + codegenHelpMessage);
79
+ fieldSchema = Stdlib_JsError.throwWithMessage(`Invalid field "` + dbFieldName + `" in context.` + entityConfig.name + `.getWhere(). The field doesn't exist. ` + codegenHelpMessage);
81
80
  }
82
81
  if (operatorKey === "_in") {
83
- var fieldValues = operatorObj[operatorKey];
84
- return Promise.all(fieldValues.map(function (fieldValue) {
85
- return LoadLayer.loadByField(params.loadManager, params.persistence, "Eq", entityConfig, params.inMemoryStore, dbFieldName, fieldSchema, params.isPreload, params.item, fieldValue);
86
- })).then(Belt_Array.concatMany);
82
+ let fieldValues = operatorObj[operatorKey];
83
+ return Promise.all(fieldValues.map(fieldValue => LoadLayer.loadByField(params.loadManager, params.persistence, "Eq", entityConfig, params.inMemoryStore, dbFieldName, fieldSchema, params.isPreload, params.item, fieldValue))).then(Belt_Array.concatMany);
87
84
  }
88
85
  if (operatorKey === "_gte" || operatorKey === "_lte") {
89
- var rangeOperator = operatorKey === "_gte" ? "Gt" : "Lt";
90
- var fieldValue = operatorObj[operatorKey];
91
- var loadWithOperator = function (operator) {
92
- return LoadLayer.loadByField(params.loadManager, params.persistence, operator, entityConfig, params.inMemoryStore, dbFieldName, fieldSchema, params.isPreload, params.item, fieldValue);
93
- };
86
+ let rangeOperator = operatorKey === "_gte" ? "Gt" : "Lt";
87
+ let fieldValue = operatorObj[operatorKey];
88
+ let loadWithOperator = operator => LoadLayer.loadByField(params.loadManager, params.persistence, operator, entityConfig, params.inMemoryStore, dbFieldName, fieldSchema, params.isPreload, params.item, fieldValue);
94
89
  return Promise.all([
95
- loadWithOperator("Eq"),
96
- loadWithOperator(rangeOperator)
97
- ]).then(Belt_Array.concatMany);
90
+ loadWithOperator("Eq"),
91
+ loadWithOperator(rangeOperator)
92
+ ]).then(Belt_Array.concatMany);
98
93
  }
99
- var operator;
94
+ let operator;
100
95
  switch (operatorKey) {
101
96
  case "_eq" :
102
- operator = "Eq";
103
- break;
97
+ operator = "Eq";
98
+ break;
104
99
  case "_gt" :
105
- operator = "Gt";
106
- break;
100
+ operator = "Gt";
101
+ break;
107
102
  case "_lt" :
108
- operator = "Lt";
109
- break;
103
+ operator = "Lt";
104
+ break;
110
105
  default:
111
- operator = Js_exn.raiseError("Invalid operator \"" + operatorKey + "\" in context." + entityConfig.name + ".getWhere({ " + dbFieldName + ": { " + operatorKey + ": ... } }). Valid operators are _eq, _gt, _lt, _gte, _lte, _in.");
106
+ operator = Stdlib_JsError.throwWithMessage(`Invalid operator "` + operatorKey + `" in context.` + entityConfig.name + `.getWhere({ ` + dbFieldName + `: { ` + operatorKey + `: ... } }). Valid operators are _eq, _gt, _lt, _gte, _lte, _in.`);
112
107
  }
113
- var fieldValue$1 = operatorObj[operatorKey];
108
+ let fieldValue$1 = operatorObj[operatorKey];
114
109
  return LoadLayer.loadByField(params.loadManager, params.persistence, operator, entityConfig, params.inMemoryStore, dbFieldName, fieldSchema, params.isPreload, params.item, fieldValue$1);
115
110
  }
116
111
 
@@ -122,132 +117,150 @@ function noopDeleteUnsafe(_entityId) {
122
117
 
123
118
  }
124
119
 
125
- var entityTraps = {
126
- get: (function (params, prop) {
127
- var set = params.isPreload ? noopSet : (function (entity) {
128
- InMemoryTable.Entity.set(InMemoryStore.getInMemTable(params.inMemoryStore, params.entityConfig), {
129
- type: "SET",
130
- entityId: entity.id,
131
- entity: entity,
132
- checkpointId: params.checkpointId
133
- }, params.shouldSaveHistory, undefined);
134
- });
135
- switch (prop) {
136
- case "deleteUnsafe" :
137
- if (params.isPreload) {
138
- return noopDeleteUnsafe;
139
- } else {
140
- return function (entityId) {
141
- InMemoryTable.Entity.set(InMemoryStore.getInMemTable(params.inMemoryStore, params.entityConfig), {
142
- type: "DELETE",
143
- entityId: entityId,
144
- checkpointId: params.checkpointId
145
- }, params.shouldSaveHistory, undefined);
146
- };
147
- }
148
- case "get" :
149
- return function (entityId) {
150
- return LoadLayer.loadById(params.loadManager, params.persistence, params.entityConfig, params.inMemoryStore, params.isPreload, params.item, entityId);
151
- };
152
- case "getOrCreate" :
153
- return function (entity) {
154
- return LoadLayer.loadById(params.loadManager, params.persistence, params.entityConfig, params.inMemoryStore, params.isPreload, params.item, entity.id).then(function (storageEntity) {
155
- if (storageEntity !== undefined) {
156
- return storageEntity;
157
- } else {
158
- set(entity);
159
- return entity;
160
- }
161
- });
162
- };
163
- case "getOrThrow" :
164
- return function (entityId, message) {
165
- return LoadLayer.loadById(params.loadManager, params.persistence, params.entityConfig, params.inMemoryStore, params.isPreload, params.item, entityId).then(function (entity) {
166
- if (entity !== undefined) {
167
- return entity;
168
- } else {
169
- return Js_exn.raiseError(Belt_Option.getWithDefault(message, "Entity '" + params.entityConfig.name + "' with ID '" + entityId + "' is expected to exist."));
170
- }
171
- });
172
- };
173
- case "getWhere" :
174
- return function (filter) {
175
- return getWhereHandler(params, filter);
176
- };
177
- case "set" :
178
- return set;
179
- default:
180
- return Js_exn.raiseError("Invalid context." + params.entityConfig.name + "." + prop + " operation.");
120
+ let entityTraps_get = (params, prop) => {
121
+ let set = params.isPreload ? noopSet : entity => InMemoryTable.Entity.set(InMemoryStore.getInMemTable(params.inMemoryStore, params.entityConfig), {
122
+ type: "SET",
123
+ entityId: entity.id,
124
+ entity: entity,
125
+ checkpointId: params.checkpointId
126
+ }, params.shouldSaveHistory, undefined);
127
+ switch (prop) {
128
+ case "deleteUnsafe" :
129
+ if (params.isPreload) {
130
+ return noopDeleteUnsafe;
131
+ } else {
132
+ return entityId => InMemoryTable.Entity.set(InMemoryStore.getInMemTable(params.inMemoryStore, params.entityConfig), {
133
+ type: "DELETE",
134
+ entityId: entityId,
135
+ checkpointId: params.checkpointId
136
+ }, params.shouldSaveHistory, undefined);
181
137
  }
182
- })
138
+ case "get" :
139
+ return entityId => LoadLayer.loadById(params.loadManager, params.persistence, params.entityConfig, params.inMemoryStore, params.isPreload, params.item, entityId);
140
+ case "getOrCreate" :
141
+ return entity => LoadLayer.loadById(params.loadManager, params.persistence, params.entityConfig, params.inMemoryStore, params.isPreload, params.item, entity.id).then(storageEntity => {
142
+ if (storageEntity !== undefined) {
143
+ return storageEntity;
144
+ } else {
145
+ set(entity);
146
+ return entity;
147
+ }
148
+ });
149
+ case "getOrThrow" :
150
+ return (entityId, message) => LoadLayer.loadById(params.loadManager, params.persistence, params.entityConfig, params.inMemoryStore, params.isPreload, params.item, entityId).then(entity => {
151
+ if (entity !== undefined) {
152
+ return entity;
153
+ } else {
154
+ return Stdlib_JsError.throwWithMessage(Belt_Option.getWithDefault(message, `Entity '` + params.entityConfig.name + `' with ID '` + entityId + `' is expected to exist.`));
155
+ }
156
+ });
157
+ case "getWhere" :
158
+ return filter => getWhereHandler(params, filter);
159
+ case "set" :
160
+ return set;
161
+ default:
162
+ return Stdlib_JsError.throwWithMessage(`Invalid context.` + params.entityConfig.name + `.` + prop + ` operation.`);
163
+ }
164
+ };
165
+
166
+ let entityTraps = {
167
+ get: entityTraps_get
183
168
  };
184
169
 
185
- var handlerTraps = {
186
- get: (function (params, prop) {
187
- if (params.isResolved) {
188
- ErrorHandling.mkLogAndRaise(Logging.getItemLogger(params.item), undefined, new Error("Impossible to access context." + prop + " after the handler is resolved. Make sure you didn't miss an await in the handler."));
170
+ let handlerTraps_get = (params, prop) => {
171
+ if (params.isResolved) {
172
+ ErrorHandling.mkLogAndRaise(Logging.getItemLogger(params.item), undefined, new Error(`Impossible to access context.` + prop + ` after the handler is resolved. Make sure you didn't miss an await in the handler.`));
173
+ }
174
+ switch (prop) {
175
+ case "chain" :
176
+ let chainId = Internal.getItemChainId(params.item);
177
+ return params.chains[chainId];
178
+ case "effect" :
179
+ return initEffect(params);
180
+ case "isPreload" :
181
+ return params.isPreload;
182
+ case "log" :
183
+ if (params.isPreload) {
184
+ return Logging.noopLogger;
185
+ } else {
186
+ return Logging.getUserLogger(params.item);
189
187
  }
190
- switch (prop) {
191
- case "chain" :
192
- var chainId = Internal.getItemChainId(params.item);
193
- return params.chains[chainId];
194
- case "effect" :
195
- return initEffect(params);
196
- case "isPreload" :
197
- return params.isPreload;
198
- case "log" :
199
- if (params.isPreload) {
200
- return Logging.noopLogger;
201
- } else {
202
- return Logging.getUserLogger(params.item);
203
- }
204
- default:
205
- var entityConfig = params.config.userEntitiesByName[prop];
206
- if (entityConfig !== undefined) {
207
- return new Proxy({
208
- item: params.item,
209
- checkpointId: params.checkpointId,
210
- inMemoryStore: params.inMemoryStore,
211
- loadManager: params.loadManager,
212
- persistence: params.persistence,
213
- isPreload: params.isPreload,
214
- shouldSaveHistory: params.shouldSaveHistory,
215
- chains: params.chains,
216
- config: params.config,
217
- isResolved: params.isResolved,
218
- entityConfig: entityConfig
219
- }, entityTraps);
220
- } else {
221
- return Js_exn.raiseError("Invalid context access by '" + prop + "' property. " + codegenHelpMessage);
222
- }
188
+ default:
189
+ let entityConfig = params.config.userEntitiesByName[prop];
190
+ if (entityConfig !== undefined) {
191
+ return new Proxy({
192
+ item: params.item,
193
+ checkpointId: params.checkpointId,
194
+ inMemoryStore: params.inMemoryStore,
195
+ loadManager: params.loadManager,
196
+ persistence: params.persistence,
197
+ isPreload: params.isPreload,
198
+ shouldSaveHistory: params.shouldSaveHistory,
199
+ chains: params.chains,
200
+ config: params.config,
201
+ isResolved: params.isResolved,
202
+ entityConfig: entityConfig
203
+ }, entityTraps);
204
+ } else {
205
+ return Stdlib_JsError.throwWithMessage(`Invalid context access by '` + prop + `' property. ` + codegenHelpMessage);
223
206
  }
224
- })
207
+ }
208
+ };
209
+
210
+ let handlerTraps = {
211
+ get: handlerTraps_get
225
212
  };
226
213
 
227
214
  function getHandlerContext(params) {
228
215
  return new Proxy(params, handlerTraps);
229
216
  }
230
217
 
231
- var contractRegisterTraps = {
232
- get: (function (params, prop) {
233
- if (params.isResolved) {
234
- ErrorHandling.mkLogAndRaise(Logging.getItemLogger(params.item), undefined, new Error("Impossible to access context." + prop + " after the contract register is resolved. Make sure you didn't miss an await in the handler."));
235
- }
236
- if (prop === "log") {
237
- return Logging.getUserLogger(params.item);
238
- }
239
- var contractName = params.config.addContractNameToContractNameMapping[prop];
240
- if (contractName !== undefined) {
241
- return function (contractAddress) {
242
- var validatedAddress = params.config.ecosystem.name === "evm" ? (
243
- params.config.lowercaseAddresses ? Address.Evm.fromAddressLowercaseOrThrow(contractAddress) : Address.Evm.fromAddressOrThrow(contractAddress)
244
- ) : contractAddress;
245
- params.onRegister(params.item, validatedAddress, contractName);
246
- };
247
- } else {
248
- return Js_exn.raiseError("Invalid context access by '" + prop + "' property. " + codegenHelpMessage);
249
- }
250
- })
218
+ function makeAddFunction(params, contractName) {
219
+ return contractAddress => {
220
+ if (params.isResolved) {
221
+ ErrorHandling.mkLogAndRaise(Logging.getItemLogger(params.item), undefined, new Error(`Impossible to access context.chain after the contract register is resolved. Make sure you didn't miss an await in the handler.`));
222
+ }
223
+ let validatedAddress = params.config.ecosystem.name === "evm" ? (
224
+ params.config.lowercaseAddresses ? Address.Evm.fromAddressLowercaseOrThrow(contractAddress) : Address.Evm.fromAddressOrThrow(contractAddress)
225
+ ) : contractAddress;
226
+ params.onRegister(params.item, validatedAddress, contractName);
227
+ };
228
+ }
229
+
230
+ let contractRegisterChainTraps_get = (params, prop) => {
231
+ if (prop === "id") {
232
+ return params.item.chain;
233
+ }
234
+ let isValidContract = ChainMap.values(params.config.chainMap).some(chain => chain.contracts.some(c => c.name === prop));
235
+ if (isValidContract) {
236
+ return {
237
+ add: makeAddFunction(params, prop)
238
+ };
239
+ } else {
240
+ return Stdlib_JsError.throwWithMessage(`Invalid contract name '` + prop + `' on context.chain. ` + codegenHelpMessage);
241
+ }
242
+ };
243
+
244
+ let contractRegisterChainTraps = {
245
+ get: contractRegisterChainTraps_get
246
+ };
247
+
248
+ let contractRegisterTraps_get = (params, prop) => {
249
+ if (params.isResolved) {
250
+ ErrorHandling.mkLogAndRaise(Logging.getItemLogger(params.item), undefined, new Error(`Impossible to access context.` + prop + ` after the contract register is resolved. Make sure you didn't miss an await in the handler.`));
251
+ }
252
+ switch (prop) {
253
+ case "chain" :
254
+ return new Proxy(params, contractRegisterChainTraps);
255
+ case "log" :
256
+ return Logging.getUserLogger(params.item);
257
+ default:
258
+ return Stdlib_JsError.throwWithMessage(`Invalid context access by '` + prop + `' property. Use context.chain.ContractName.add(address) to register contracts. ` + codegenHelpMessage);
259
+ }
260
+ };
261
+
262
+ let contractRegisterTraps = {
263
+ get: contractRegisterTraps_get
251
264
  };
252
265
 
253
266
  function getContractRegisterContext(params) {
@@ -256,24 +269,26 @@ function getContractRegisterContext(params) {
256
269
 
257
270
  function getContractRegisterArgs(params) {
258
271
  return {
259
- event: params.item.event,
260
- context: new Proxy(params, contractRegisterTraps)
261
- };
272
+ event: params.item.event,
273
+ context: new Proxy(params, contractRegisterTraps)
274
+ };
262
275
  }
263
276
 
264
277
  export {
265
- codegenHelpMessage ,
266
- paramsByThis ,
267
- effectContextPrototype ,
268
- initEffect ,
269
- getWhereHandler ,
270
- noopSet ,
271
- noopDeleteUnsafe ,
272
- entityTraps ,
273
- handlerTraps ,
274
- getHandlerContext ,
275
- contractRegisterTraps ,
276
- getContractRegisterContext ,
277
- getContractRegisterArgs ,
278
+ codegenHelpMessage,
279
+ paramsByThis,
280
+ effectContextPrototype,
281
+ initEffect,
282
+ getWhereHandler,
283
+ noopSet,
284
+ noopDeleteUnsafe,
285
+ entityTraps,
286
+ handlerTraps,
287
+ getHandlerContext,
288
+ makeAddFunction,
289
+ contractRegisterChainTraps,
290
+ contractRegisterTraps,
291
+ getContractRegisterContext,
292
+ getContractRegisterArgs,
278
293
  }
279
294
  /* paramsByThis Not a pure module */