envio 3.0.0-alpha.21 → 3.0.0-alpha.22

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 (219) hide show
  1. package/bin.mjs +2 -48
  2. package/evm.schema.json +67 -0
  3. package/fuel.schema.json +67 -0
  4. package/index.d.ts +822 -38
  5. package/index.js +5 -3
  6. package/package.json +10 -8
  7. package/rescript.json +5 -9
  8. package/src/Address.res +4 -5
  9. package/src/Address.res.mjs +9 -12
  10. package/src/Api.res +15 -0
  11. package/src/Api.res.mjs +20 -0
  12. package/src/Batch.res +32 -34
  13. package/src/Batch.res.mjs +172 -187
  14. package/src/Bin.res +89 -0
  15. package/src/Bin.res.mjs +97 -0
  16. package/src/ChainFetcher.res +33 -57
  17. package/src/ChainFetcher.res.mjs +197 -227
  18. package/src/ChainManager.res +6 -14
  19. package/src/ChainManager.res.mjs +74 -85
  20. package/src/ChainMap.res +14 -16
  21. package/src/ChainMap.res.mjs +38 -38
  22. package/src/Config.res +193 -135
  23. package/src/Config.res.mjs +566 -592
  24. package/src/Core.res +182 -0
  25. package/src/Core.res.mjs +207 -0
  26. package/src/Ecosystem.res +25 -4
  27. package/src/Ecosystem.res.mjs +12 -13
  28. package/src/Env.res +20 -13
  29. package/src/Env.res.mjs +124 -113
  30. package/src/EnvSafe.res +269 -0
  31. package/src/EnvSafe.res.mjs +296 -0
  32. package/src/EnvSafe.resi +18 -0
  33. package/src/Envio.res +37 -26
  34. package/src/Envio.res.mjs +59 -60
  35. package/src/ErrorHandling.res +2 -2
  36. package/src/ErrorHandling.res.mjs +15 -15
  37. package/src/EventConfigBuilder.res +219 -81
  38. package/src/EventConfigBuilder.res.mjs +259 -202
  39. package/src/EventProcessing.res +27 -38
  40. package/src/EventProcessing.res.mjs +165 -183
  41. package/src/EventUtils.res +11 -11
  42. package/src/EventUtils.res.mjs +21 -22
  43. package/src/EvmTypes.res +0 -1
  44. package/src/EvmTypes.res.mjs +5 -5
  45. package/src/FetchState.res +360 -256
  46. package/src/FetchState.res.mjs +958 -914
  47. package/src/GlobalState.res +365 -351
  48. package/src/GlobalState.res.mjs +958 -992
  49. package/src/GlobalStateManager.res +1 -2
  50. package/src/GlobalStateManager.res.mjs +36 -44
  51. package/src/HandlerLoader.res +107 -23
  52. package/src/HandlerLoader.res.mjs +128 -38
  53. package/src/HandlerRegister.res +127 -103
  54. package/src/HandlerRegister.res.mjs +164 -164
  55. package/src/HandlerRegister.resi +12 -4
  56. package/src/Hasura.res +35 -22
  57. package/src/Hasura.res.mjs +158 -167
  58. package/src/InMemoryStore.res +20 -27
  59. package/src/InMemoryStore.res.mjs +64 -80
  60. package/src/InMemoryTable.res +34 -39
  61. package/src/InMemoryTable.res.mjs +165 -170
  62. package/src/Internal.res +52 -33
  63. package/src/Internal.res.mjs +84 -81
  64. package/src/LazyLoader.res.mjs +55 -61
  65. package/src/LoadLayer.res +77 -78
  66. package/src/LoadLayer.res.mjs +160 -189
  67. package/src/LoadManager.res +16 -21
  68. package/src/LoadManager.res.mjs +79 -84
  69. package/src/LogSelection.res +236 -68
  70. package/src/LogSelection.res.mjs +211 -141
  71. package/src/Logging.res +13 -9
  72. package/src/Logging.res.mjs +130 -143
  73. package/src/Main.res +428 -51
  74. package/src/Main.res.mjs +528 -271
  75. package/src/Persistence.res +77 -84
  76. package/src/Persistence.res.mjs +131 -132
  77. package/src/PgStorage.res +291 -167
  78. package/src/PgStorage.res.mjs +797 -817
  79. package/src/Prometheus.res +50 -58
  80. package/src/Prometheus.res.mjs +345 -373
  81. package/src/ReorgDetection.res +22 -24
  82. package/src/ReorgDetection.res.mjs +100 -106
  83. package/src/SafeCheckpointTracking.res +7 -7
  84. package/src/SafeCheckpointTracking.res.mjs +40 -43
  85. package/src/SimulateItems.res +41 -49
  86. package/src/SimulateItems.res.mjs +257 -272
  87. package/src/Sink.res +2 -2
  88. package/src/Sink.res.mjs +22 -26
  89. package/src/TableIndices.res +1 -2
  90. package/src/TableIndices.res.mjs +42 -48
  91. package/src/TestIndexer.res +196 -189
  92. package/src/TestIndexer.res.mjs +536 -536
  93. package/src/TestIndexerProxyStorage.res +15 -16
  94. package/src/TestIndexerProxyStorage.res.mjs +98 -122
  95. package/src/TestIndexerWorker.res +4 -0
  96. package/src/TestIndexerWorker.res.mjs +7 -0
  97. package/src/Throttler.res +3 -3
  98. package/src/Throttler.res.mjs +23 -24
  99. package/src/Time.res +1 -1
  100. package/src/Time.res.mjs +18 -21
  101. package/src/TopicFilter.res +3 -3
  102. package/src/TopicFilter.res.mjs +29 -30
  103. package/src/UserContext.res +93 -54
  104. package/src/UserContext.res.mjs +197 -182
  105. package/src/Utils.res +141 -86
  106. package/src/Utils.res.mjs +334 -295
  107. package/src/bindings/BigDecimal.res +0 -2
  108. package/src/bindings/BigDecimal.res.mjs +19 -23
  109. package/src/bindings/ClickHouse.res +28 -27
  110. package/src/bindings/ClickHouse.res.mjs +243 -240
  111. package/src/bindings/DateFns.res +11 -11
  112. package/src/bindings/DateFns.res.mjs +7 -7
  113. package/src/bindings/EventSource.res.mjs +2 -2
  114. package/src/bindings/Express.res +2 -5
  115. package/src/bindings/Hrtime.res +2 -2
  116. package/src/bindings/Hrtime.res.mjs +30 -32
  117. package/src/bindings/Lodash.res.mjs +1 -1
  118. package/src/bindings/NodeJs.res +14 -9
  119. package/src/bindings/NodeJs.res.mjs +20 -20
  120. package/src/bindings/Pino.res +8 -10
  121. package/src/bindings/Pino.res.mjs +40 -43
  122. package/src/bindings/Postgres.res +2 -5
  123. package/src/bindings/Postgres.res.mjs +9 -9
  124. package/src/bindings/PromClient.res +17 -2
  125. package/src/bindings/PromClient.res.mjs +30 -7
  126. package/src/bindings/SDSL.res.mjs +2 -2
  127. package/src/bindings/Viem.res +4 -4
  128. package/src/bindings/Viem.res.mjs +20 -22
  129. package/src/bindings/Vitest.res +1 -1
  130. package/src/bindings/Vitest.res.mjs +2 -2
  131. package/src/bindings/WebSocket.res +1 -1
  132. package/src/db/EntityHistory.res +9 -3
  133. package/src/db/EntityHistory.res.mjs +84 -59
  134. package/src/db/InternalTable.res +62 -60
  135. package/src/db/InternalTable.res.mjs +271 -203
  136. package/src/db/Schema.res +1 -2
  137. package/src/db/Schema.res.mjs +28 -32
  138. package/src/db/Table.res +28 -27
  139. package/src/db/Table.res.mjs +276 -292
  140. package/src/sources/EventRouter.res +21 -16
  141. package/src/sources/EventRouter.res.mjs +55 -57
  142. package/src/sources/Evm.res +17 -1
  143. package/src/sources/Evm.res.mjs +16 -8
  144. package/src/sources/EvmChain.res +15 -17
  145. package/src/sources/EvmChain.res.mjs +40 -42
  146. package/src/sources/Fuel.res +14 -1
  147. package/src/sources/Fuel.res.mjs +16 -8
  148. package/src/sources/FuelSDK.res +1 -1
  149. package/src/sources/FuelSDK.res.mjs +6 -8
  150. package/src/sources/HyperFuel.res +8 -10
  151. package/src/sources/HyperFuel.res.mjs +113 -123
  152. package/src/sources/HyperFuelClient.res.mjs +6 -7
  153. package/src/sources/HyperFuelSource.res +19 -20
  154. package/src/sources/HyperFuelSource.res.mjs +339 -356
  155. package/src/sources/HyperSync.res +11 -13
  156. package/src/sources/HyperSync.res.mjs +206 -220
  157. package/src/sources/HyperSyncClient.res +5 -7
  158. package/src/sources/HyperSyncClient.res.mjs +70 -75
  159. package/src/sources/HyperSyncHeightStream.res +8 -9
  160. package/src/sources/HyperSyncHeightStream.res.mjs +78 -86
  161. package/src/sources/HyperSyncJsonApi.res +18 -15
  162. package/src/sources/HyperSyncJsonApi.res.mjs +201 -231
  163. package/src/sources/HyperSyncSource.res +17 -21
  164. package/src/sources/HyperSyncSource.res.mjs +268 -290
  165. package/src/sources/Rpc.res +5 -5
  166. package/src/sources/Rpc.res.mjs +168 -192
  167. package/src/sources/RpcSource.res +166 -167
  168. package/src/sources/RpcSource.res.mjs +972 -1046
  169. package/src/sources/RpcWebSocketHeightStream.res +10 -11
  170. package/src/sources/RpcWebSocketHeightStream.res.mjs +131 -145
  171. package/src/sources/SimulateSource.res +1 -1
  172. package/src/sources/SimulateSource.res.mjs +35 -38
  173. package/src/sources/Source.res +1 -1
  174. package/src/sources/Source.res.mjs +3 -3
  175. package/src/sources/SourceManager.res +39 -20
  176. package/src/sources/SourceManager.res.mjs +340 -371
  177. package/src/sources/SourceManager.resi +2 -1
  178. package/src/sources/Svm.res +12 -5
  179. package/src/sources/Svm.res.mjs +44 -41
  180. package/src/tui/Tui.res +23 -12
  181. package/src/tui/Tui.res.mjs +292 -290
  182. package/src/tui/bindings/Ink.res +2 -4
  183. package/src/tui/bindings/Ink.res.mjs +35 -41
  184. package/src/tui/components/BufferedProgressBar.res +7 -7
  185. package/src/tui/components/BufferedProgressBar.res.mjs +46 -46
  186. package/src/tui/components/CustomHooks.res +1 -2
  187. package/src/tui/components/CustomHooks.res.mjs +102 -122
  188. package/src/tui/components/Messages.res +1 -2
  189. package/src/tui/components/Messages.res.mjs +38 -42
  190. package/src/tui/components/SyncETA.res +10 -11
  191. package/src/tui/components/SyncETA.res.mjs +178 -196
  192. package/src/tui/components/TuiData.res +1 -1
  193. package/src/tui/components/TuiData.res.mjs +7 -6
  194. package/src/vendored/Rest.res +52 -66
  195. package/src/vendored/Rest.res.mjs +324 -364
  196. package/svm.schema.json +67 -0
  197. package/src/Address.gen.ts +0 -8
  198. package/src/Config.gen.ts +0 -19
  199. package/src/Envio.gen.ts +0 -55
  200. package/src/EvmTypes.gen.ts +0 -6
  201. package/src/InMemoryStore.gen.ts +0 -6
  202. package/src/Internal.gen.ts +0 -64
  203. package/src/PgStorage.gen.ts +0 -10
  204. package/src/PgStorage.res.d.mts +0 -5
  205. package/src/Types.ts +0 -56
  206. package/src/bindings/BigDecimal.gen.ts +0 -14
  207. package/src/bindings/BigDecimal.res.d.mts +0 -5
  208. package/src/bindings/BigInt.gen.ts +0 -10
  209. package/src/bindings/BigInt.res +0 -70
  210. package/src/bindings/BigInt.res.d.mts +0 -5
  211. package/src/bindings/BigInt.res.mjs +0 -154
  212. package/src/bindings/Ethers.res.d.mts +0 -5
  213. package/src/bindings/Pino.gen.ts +0 -17
  214. package/src/bindings/Postgres.gen.ts +0 -8
  215. package/src/bindings/Postgres.res.d.mts +0 -5
  216. package/src/bindings/Promise.res +0 -67
  217. package/src/bindings/Promise.res.mjs +0 -26
  218. package/src/db/InternalTable.gen.ts +0 -36
  219. 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 */