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
package/src/Env.res.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  // Generated by ReScript, PLEASE EDIT WITH CARE
2
2
 
3
- import * as EnvSafe from "rescript-envsafe/src/EnvSafe.res.mjs";
3
+ import * as EnvSafe from "./EnvSafe.res.mjs";
4
4
  import * as Logging from "./Logging.res.mjs";
5
5
  import * as Postgres from "./bindings/Postgres.res.mjs";
6
- import * as Belt_Option from "rescript/lib/es6/belt_Option.js";
6
+ import * as Belt_Option from "@rescript/runtime/lib/es6/Belt_Option.js";
7
7
  import * as HyperSyncClient from "./sources/HyperSyncClient.res.mjs";
8
8
  import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
9
9
  import * as HypersyncClient from "@envio-dev/hypersync-client";
@@ -11,87 +11,87 @@ import * as HypersyncClient from "@envio-dev/hypersync-client";
11
11
  import 'dotenv/config'
12
12
  ;
13
13
 
14
- var envSafe = EnvSafe.make(undefined);
14
+ let envSafe = EnvSafe.make(undefined);
15
15
 
16
- var updateSyncTimeOnRestart = EnvSafe.get(envSafe, "UPDATE_SYNC_TIME_ON_RESTART", S$RescriptSchema.bool, undefined, true, undefined, undefined);
16
+ let updateSyncTimeOnRestart = EnvSafe.get(envSafe, "UPDATE_SYNC_TIME_ON_RESTART", S$RescriptSchema.bool, undefined, true, undefined, undefined);
17
17
 
18
- var targetBufferSize = EnvSafe.get(envSafe, "ENVIO_INDEXING_MAX_BUFFER_SIZE", S$RescriptSchema.option(S$RescriptSchema.$$int), undefined, undefined, undefined, undefined);
18
+ let targetBufferSize = EnvSafe.get(envSafe, "ENVIO_INDEXING_MAX_BUFFER_SIZE", S$RescriptSchema.option(S$RescriptSchema.int), undefined, undefined, undefined, undefined);
19
19
 
20
- var maxAddrInPartition = EnvSafe.get(envSafe, "MAX_PARTITION_SIZE", S$RescriptSchema.$$int, undefined, 5000, undefined, undefined);
20
+ let maxAddrInPartition = EnvSafe.get(envSafe, "MAX_PARTITION_SIZE", S$RescriptSchema.int, undefined, 5000, undefined, undefined);
21
21
 
22
- var maxPartitionConcurrency = EnvSafe.get(envSafe, "ENVIO_MAX_PARTITION_CONCURRENCY", S$RescriptSchema.$$int, undefined, 10, undefined, undefined);
22
+ let maxPartitionConcurrency = EnvSafe.get(envSafe, "ENVIO_MAX_PARTITION_CONCURRENCY", S$RescriptSchema.int, undefined, 10, undefined, undefined);
23
23
 
24
- var serverPort = EnvSafe.get(envSafe, "ENVIO_INDEXER_PORT", S$RescriptSchema.port(S$RescriptSchema.$$int, undefined), undefined, EnvSafe.get(envSafe, "METRICS_PORT", S$RescriptSchema.port(S$RescriptSchema.$$int, undefined), undefined, 9898, undefined, undefined), undefined, undefined);
24
+ let serverPort = EnvSafe.get(envSafe, "ENVIO_INDEXER_PORT", S$RescriptSchema.port(S$RescriptSchema.int, undefined), undefined, EnvSafe.get(envSafe, "METRICS_PORT", S$RescriptSchema.port(S$RescriptSchema.int, undefined), undefined, 9898, undefined, undefined), undefined, undefined);
25
25
 
26
- var tuiOffEnvVar = EnvSafe.get(envSafe, "TUI_OFF", S$RescriptSchema.bool, undefined, false, undefined, undefined);
26
+ let tuiOffEnvVar = EnvSafe.get(envSafe, "TUI_OFF", S$RescriptSchema.bool, undefined, false, undefined, undefined);
27
27
 
28
- var logLevelSchema = S$RescriptSchema.$$enum([
29
- "trace",
30
- "debug",
31
- "info",
32
- "warn",
33
- "error",
34
- "fatal",
35
- "udebug",
36
- "uinfo",
37
- "uwarn",
38
- "uerror",
39
- "silent"
40
- ]);
28
+ let logLevelSchema = S$RescriptSchema.$$enum([
29
+ "trace",
30
+ "debug",
31
+ "info",
32
+ "warn",
33
+ "error",
34
+ "fatal",
35
+ "udebug",
36
+ "uinfo",
37
+ "uwarn",
38
+ "uerror",
39
+ "silent"
40
+ ]);
41
41
 
42
- var logFilePath = EnvSafe.get(envSafe, "LOG_FILE", S$RescriptSchema.string, undefined, "logs/envio.log", undefined, undefined);
42
+ let logFilePath = EnvSafe.get(envSafe, "LOG_FILE", S$RescriptSchema.string, undefined, "logs/envio.log", undefined, undefined);
43
43
 
44
- var userLogLevel = EnvSafe.get(envSafe, "LOG_LEVEL", S$RescriptSchema.option(logLevelSchema), undefined, undefined, undefined, undefined);
44
+ let userLogLevel = EnvSafe.get(envSafe, "LOG_LEVEL", S$RescriptSchema.option(logLevelSchema), undefined, undefined, undefined, undefined);
45
45
 
46
- var defaultFileLogLevel = EnvSafe.get(envSafe, "FILE_LOG_LEVEL", logLevelSchema, undefined, "trace", undefined, undefined);
46
+ let defaultFileLogLevel = EnvSafe.get(envSafe, "FILE_LOG_LEVEL", logLevelSchema, undefined, "trace", undefined, undefined);
47
47
 
48
- var prodEnvioAppUrl = "https://envio.dev";
48
+ let prodEnvioAppUrl = "https://envio.dev";
49
49
 
50
- var envioAppUrl = EnvSafe.get(envSafe, "ENVIO_APP", S$RescriptSchema.string, undefined, prodEnvioAppUrl, undefined, undefined);
50
+ let envioAppUrl = EnvSafe.get(envSafe, "ENVIO_APP", S$RescriptSchema.string, undefined, prodEnvioAppUrl, undefined, undefined);
51
51
 
52
- var envioApiToken = EnvSafe.get(envSafe, "ENVIO_API_TOKEN", S$RescriptSchema.option(S$RescriptSchema.string), undefined, undefined, undefined, undefined);
52
+ let envioApiToken = EnvSafe.get(envSafe, "ENVIO_API_TOKEN", S$RescriptSchema.option(S$RescriptSchema.string), undefined, undefined, undefined, undefined);
53
53
 
54
- var hyperSyncClientTimeoutMillis = EnvSafe.get(envSafe, "ENVIO_HYPERSYNC_CLIENT_TIMEOUT_MILLIS", S$RescriptSchema.$$int, undefined, 120000, undefined, undefined);
54
+ let hyperSyncClientTimeoutMillis = EnvSafe.get(envSafe, "ENVIO_HYPERSYNC_CLIENT_TIMEOUT_MILLIS", S$RescriptSchema.int, undefined, 120000, undefined, undefined);
55
55
 
56
- var hyperSyncClientMaxRetries = EnvSafe.get(envSafe, "ENVIO_HYPERSYNC_CLIENT_MAX_RETRIES", S$RescriptSchema.$$int, undefined, 0, undefined, undefined);
56
+ let hyperSyncClientMaxRetries = EnvSafe.get(envSafe, "ENVIO_HYPERSYNC_CLIENT_MAX_RETRIES", S$RescriptSchema.int, undefined, 0, undefined, undefined);
57
57
 
58
- var hypersyncClientSerializationFormat = EnvSafe.get(envSafe, "ENVIO_HYPERSYNC_CLIENT_SERIALIZATION_FORMAT", HyperSyncClient.serializationFormatSchema, undefined, "CapnProto", undefined, undefined);
58
+ let hypersyncClientSerializationFormat = EnvSafe.get(envSafe, "ENVIO_HYPERSYNC_CLIENT_SERIALIZATION_FORMAT", HyperSyncClient.serializationFormatSchema, undefined, "CapnProto", undefined, undefined);
59
59
 
60
- var hypersyncClientEnableQueryCaching = EnvSafe.get(envSafe, "ENVIO_HYPERSYNC_CLIENT_ENABLE_QUERY_CACHING", S$RescriptSchema.bool, undefined, true, undefined, undefined);
60
+ let hypersyncClientEnableQueryCaching = EnvSafe.get(envSafe, "ENVIO_HYPERSYNC_CLIENT_ENABLE_QUERY_CACHING", S$RescriptSchema.bool, undefined, true, undefined, undefined);
61
61
 
62
- var hypersyncLogLevel = EnvSafe.get(envSafe, "ENVIO_HYPERSYNC_LOG_LEVEL", HyperSyncClient.logLevelSchema, undefined, "info", undefined, undefined);
62
+ let hypersyncLogLevel = EnvSafe.get(envSafe, "ENVIO_HYPERSYNC_LOG_LEVEL", HyperSyncClient.logLevelSchema, undefined, "info", undefined, undefined);
63
63
 
64
64
  HypersyncClient.setLogLevel(hypersyncLogLevel);
65
65
 
66
- var logStrategy = EnvSafe.get(envSafe, "LOG_STRATEGY", S$RescriptSchema.$$enum([
67
- "ecs-file",
68
- "ecs-console",
69
- "ecs-console-multistream",
70
- "file-only",
71
- "console-raw",
72
- "console-pretty",
73
- "both-prettyconsole"
74
- ]), undefined, "console-pretty", undefined, undefined);
66
+ let logStrategy = EnvSafe.get(envSafe, "LOG_STRATEGY", S$RescriptSchema.$$enum([
67
+ "ecs-file",
68
+ "ecs-console",
69
+ "ecs-console-multistream",
70
+ "file-only",
71
+ "console-raw",
72
+ "console-pretty",
73
+ "both-prettyconsole"
74
+ ]), undefined, "console-pretty", undefined, undefined);
75
75
 
76
76
  Logging.setLogger(Logging.makeLogger(logStrategy, logFilePath, defaultFileLogLevel, Belt_Option.getWithDefault(userLogLevel, "info")));
77
77
 
78
- var host = EnvSafe.get(envSafe, "ENVIO_PG_HOST", S$RescriptSchema.string, undefined, undefined, "localhost", undefined);
78
+ let host = EnvSafe.get(envSafe, "ENVIO_PG_HOST", S$RescriptSchema.string, undefined, undefined, "localhost", undefined);
79
79
 
80
- var port = EnvSafe.get(envSafe, "ENVIO_PG_PORT", S$RescriptSchema.port(S$RescriptSchema.$$int, undefined), undefined, undefined, 5433, undefined);
80
+ let port = EnvSafe.get(envSafe, "ENVIO_PG_PORT", S$RescriptSchema.port(S$RescriptSchema.int, undefined), undefined, undefined, 5433, undefined);
81
81
 
82
- var user = EnvSafe.get(envSafe, "ENVIO_PG_USER", S$RescriptSchema.string, undefined, undefined, "postgres", undefined);
82
+ let user = EnvSafe.get(envSafe, "ENVIO_PG_USER", S$RescriptSchema.string, undefined, undefined, "postgres", undefined);
83
83
 
84
- var password = EnvSafe.get(envSafe, "ENVIO_PG_PASSWORD", S$RescriptSchema.string, undefined, EnvSafe.get(envSafe, "ENVIO_POSTGRES_PASSWORD", S$RescriptSchema.string, undefined, "testing", undefined, undefined), undefined, undefined);
84
+ let password = EnvSafe.get(envSafe, "ENVIO_PG_PASSWORD", S$RescriptSchema.string, undefined, EnvSafe.get(envSafe, "ENVIO_POSTGRES_PASSWORD", S$RescriptSchema.string, undefined, "testing", undefined, undefined), undefined, undefined);
85
85
 
86
- var database = EnvSafe.get(envSafe, "ENVIO_PG_DATABASE", S$RescriptSchema.string, undefined, undefined, "envio-dev", undefined);
86
+ let database = EnvSafe.get(envSafe, "ENVIO_PG_DATABASE", S$RescriptSchema.string, undefined, undefined, "envio-dev", undefined);
87
87
 
88
- var publicSchema = EnvSafe.get(envSafe, "ENVIO_PG_SCHEMA", S$RescriptSchema.string, undefined, EnvSafe.get(envSafe, "ENVIO_PG_PUBLIC_SCHEMA", S$RescriptSchema.string, undefined, "public", undefined, undefined), undefined, undefined);
88
+ let publicSchema = EnvSafe.get(envSafe, "ENVIO_PG_SCHEMA", S$RescriptSchema.string, undefined, EnvSafe.get(envSafe, "ENVIO_PG_PUBLIC_SCHEMA", S$RescriptSchema.string, undefined, "public", undefined, undefined), undefined, undefined);
89
89
 
90
- var ssl = EnvSafe.get(envSafe, "ENVIO_PG_SSL_MODE", Postgres.sslOptionsSchema, undefined, undefined, false, undefined);
90
+ let ssl = EnvSafe.get(envSafe, "ENVIO_PG_SSL_MODE", Postgres.sslOptionsSchema, undefined, undefined, false, undefined);
91
91
 
92
- var maxConnections = EnvSafe.get(envSafe, "ENVIO_PG_MAX_CONNECTIONS", S$RescriptSchema.$$int, undefined, 2, undefined, undefined);
92
+ let maxConnections = EnvSafe.get(envSafe, "ENVIO_PG_MAX_CONNECTIONS", S$RescriptSchema.int, undefined, 2, undefined, undefined);
93
93
 
94
- var Db = {
94
+ let Db = {
95
95
  host: host,
96
96
  port: port,
97
97
  user: user,
@@ -102,53 +102,64 @@ var Db = {
102
102
  maxConnections: maxConnections
103
103
  };
104
104
 
105
- var host$1 = EnvSafe.get(envSafe, "ENVIO_CLICKHOUSE_SINK_HOST", S$RescriptSchema.option(S$RescriptSchema.string), undefined, undefined, undefined, undefined);
105
+ let read = ((k) => {
106
+ const v = process.env[k];
107
+ return v === undefined || v === "" ? undefined : v;
108
+ });
106
109
 
107
- var database$1 = EnvSafe.get(envSafe, "ENVIO_CLICKHOUSE_SINK_DATABASE", S$RescriptSchema.option(S$RescriptSchema.string), undefined, undefined, undefined, undefined);
110
+ function host$1() {
111
+ return read("ENVIO_CLICKHOUSE_HOST");
112
+ }
108
113
 
109
- var username = host$1 !== undefined ? EnvSafe.get(envSafe, "ENVIO_CLICKHOUSE_SINK_USERNAME", S$RescriptSchema.string, undefined, undefined, undefined, undefined) : "";
114
+ function database$1() {
115
+ return read("ENVIO_CLICKHOUSE_DATABASE");
116
+ }
110
117
 
111
- var password$1 = host$1 !== undefined ? EnvSafe.get(envSafe, "ENVIO_CLICKHOUSE_SINK_PASSWORD", S$RescriptSchema.string, undefined, undefined, undefined, undefined) : "";
118
+ function username() {
119
+ return read("ENVIO_CLICKHOUSE_USERNAME");
120
+ }
121
+
122
+ function password$1() {
123
+ return read("ENVIO_CLICKHOUSE_PASSWORD");
124
+ }
112
125
 
113
- var ClickHouseSink = {
126
+ let ClickHouse = {
114
127
  host: host$1,
115
128
  database: database$1,
116
129
  username: username,
117
130
  password: password$1
118
131
  };
119
132
 
120
- var enabled = EnvSafe.get(envSafe, "ENVIO_HASURA", S$RescriptSchema.bool, undefined, true, undefined, undefined);
133
+ let enabled = EnvSafe.get(envSafe, "ENVIO_HASURA", S$RescriptSchema.bool, undefined, true, undefined, undefined);
121
134
 
122
- var s = EnvSafe.get(envSafe, "ENVIO_HASURA_RESPONSE_LIMIT", S$RescriptSchema.option(S$RescriptSchema.$$int), undefined, undefined, undefined, undefined);
135
+ let s = EnvSafe.get(envSafe, "ENVIO_HASURA_RESPONSE_LIMIT", S$RescriptSchema.option(S$RescriptSchema.int), undefined, undefined, undefined, undefined);
123
136
 
124
- var responseLimit = s !== undefined ? s : EnvSafe.get(envSafe, "HASURA_RESPONSE_LIMIT", S$RescriptSchema.option(S$RescriptSchema.$$int), undefined, undefined, undefined, undefined);
137
+ let responseLimit = s !== undefined ? s : EnvSafe.get(envSafe, "HASURA_RESPONSE_LIMIT", S$RescriptSchema.option(S$RescriptSchema.int), undefined, undefined, undefined, undefined);
125
138
 
126
- var graphqlEndpoint = EnvSafe.get(envSafe, "HASURA_GRAPHQL_ENDPOINT", S$RescriptSchema.string, undefined, undefined, "http://localhost:8080/v1/metadata", undefined);
139
+ let graphqlEndpoint = EnvSafe.get(envSafe, "HASURA_GRAPHQL_ENDPOINT", S$RescriptSchema.string, undefined, undefined, "http://localhost:8080/v1/metadata", undefined);
127
140
 
128
- var url = graphqlEndpoint.slice(0, -"/v1/metadata".length | 0);
141
+ let url = graphqlEndpoint.slice(0, -"/v1/metadata".length | 0);
129
142
 
130
- var role = EnvSafe.get(envSafe, "HASURA_GRAPHQL_ROLE", S$RescriptSchema.string, undefined, undefined, "admin", undefined);
143
+ let role = EnvSafe.get(envSafe, "HASURA_GRAPHQL_ROLE", S$RescriptSchema.string, undefined, undefined, "admin", undefined);
131
144
 
132
- var secret = EnvSafe.get(envSafe, "HASURA_GRAPHQL_ADMIN_SECRET", S$RescriptSchema.string, undefined, undefined, "testing", undefined);
145
+ let secret = EnvSafe.get(envSafe, "HASURA_GRAPHQL_ADMIN_SECRET", S$RescriptSchema.string, undefined, undefined, "testing", undefined);
133
146
 
134
- var aggregateEntities = EnvSafe.get(envSafe, "ENVIO_HASURA_PUBLIC_AGGREGATE", S$RescriptSchema.union([
135
- S$RescriptSchema.array(S$RescriptSchema.string),
136
- S$RescriptSchema.transform(S$RescriptSchema.string, (function (s) {
137
- return {
138
- p: (function (string) {
139
- var entities = string.split("&");
140
- var len = entities.length;
141
- if (len !== 1 && len !== 0) {
142
- return entities;
143
- } else {
144
- return s.fail("Provide an array of entities in the JSON format.", undefined);
145
- }
146
- })
147
- };
148
- }))
149
- ]), undefined, [], undefined, undefined);
147
+ let aggregateEntities = EnvSafe.get(envSafe, "ENVIO_HASURA_PUBLIC_AGGREGATE", S$RescriptSchema.union([
148
+ S$RescriptSchema.array(S$RescriptSchema.string),
149
+ S$RescriptSchema.transform(S$RescriptSchema.string, s => ({
150
+ p: string => {
151
+ let entities = string.split("&");
152
+ let len = entities.length;
153
+ if (len !== 1 && len !== 0) {
154
+ return entities;
155
+ } else {
156
+ return s.fail(`Provide an array of entities in the JSON format.`, undefined);
157
+ }
158
+ }
159
+ }))
160
+ ]), undefined, [], undefined, undefined);
150
161
 
151
- var Hasura = {
162
+ let Hasura = {
152
163
  enabled: enabled,
153
164
  responseLimit: responseLimit,
154
165
  graphqlEndpoint: graphqlEndpoint,
@@ -158,30 +169,30 @@ var Hasura = {
158
169
  aggregateEntities: aggregateEntities
159
170
  };
160
171
 
161
- var initialBlockInterval = EnvSafe.get(envSafe, "ENVIO_RPC_INITIAL_BLOCK_INTERVAL", S$RescriptSchema.option(S$RescriptSchema.$$int), undefined, undefined, undefined, undefined);
172
+ let initialBlockInterval = EnvSafe.get(envSafe, "ENVIO_RPC_INITIAL_BLOCK_INTERVAL", S$RescriptSchema.option(S$RescriptSchema.int), undefined, undefined, undefined, undefined);
162
173
 
163
- var backoffMultiplicative = EnvSafe.get(envSafe, "ENVIO_RPC_BACKOFF_MULTIPLICATIVE", S$RescriptSchema.option(S$RescriptSchema.$$float), undefined, undefined, undefined, undefined);
174
+ let backoffMultiplicative = EnvSafe.get(envSafe, "ENVIO_RPC_BACKOFF_MULTIPLICATIVE", S$RescriptSchema.option(S$RescriptSchema.float), undefined, undefined, undefined, undefined);
164
175
 
165
- var accelerationAdditive = EnvSafe.get(envSafe, "ENVIO_RPC_ACCELERATION_ADDITIVE", S$RescriptSchema.option(S$RescriptSchema.$$int), undefined, undefined, undefined, undefined);
176
+ let accelerationAdditive = EnvSafe.get(envSafe, "ENVIO_RPC_ACCELERATION_ADDITIVE", S$RescriptSchema.option(S$RescriptSchema.int), undefined, undefined, undefined, undefined);
166
177
 
167
- var intervalCeiling = EnvSafe.get(envSafe, "ENVIO_RPC_INTERVAL_CEILING", S$RescriptSchema.option(S$RescriptSchema.$$int), undefined, undefined, undefined, undefined);
178
+ let intervalCeiling = EnvSafe.get(envSafe, "ENVIO_RPC_INTERVAL_CEILING", S$RescriptSchema.option(S$RescriptSchema.int), undefined, undefined, undefined, undefined);
168
179
 
169
- var SyncConfig = {
180
+ let SyncConfig = {
170
181
  initialBlockInterval: initialBlockInterval,
171
182
  backoffMultiplicative: backoffMultiplicative,
172
183
  accelerationAdditive: accelerationAdditive,
173
184
  intervalCeiling: intervalCeiling
174
185
  };
175
186
 
176
- var Configurable = {
187
+ let Configurable = {
177
188
  SyncConfig: SyncConfig
178
189
  };
179
190
 
180
- var chainMetadataIntervalMillis = EnvSafe.get(envSafe, "ENVIO_THROTTLE_CHAIN_METADATA_INTERVAL_MILLIS", S$RescriptSchema.$$int, undefined, undefined, 500, undefined);
191
+ let chainMetadataIntervalMillis = EnvSafe.get(envSafe, "ENVIO_THROTTLE_CHAIN_METADATA_INTERVAL_MILLIS", S$RescriptSchema.int, undefined, undefined, 500, undefined);
181
192
 
182
- var pruneStaleDataIntervalMillis = EnvSafe.get(envSafe, "ENVIO_THROTTLE_PRUNE_STALE_DATA_INTERVAL_MILLIS", S$RescriptSchema.$$int, undefined, undefined, 30000, undefined);
193
+ let pruneStaleDataIntervalMillis = EnvSafe.get(envSafe, "ENVIO_THROTTLE_PRUNE_STALE_DATA_INTERVAL_MILLIS", S$RescriptSchema.int, undefined, undefined, 30000, undefined);
183
194
 
184
- var ThrottleWrites = {
195
+ let ThrottleWrites = {
185
196
  chainMetadataIntervalMillis: chainMetadataIntervalMillis,
186
197
  pruneStaleDataIntervalMillis: pruneStaleDataIntervalMillis
187
198
  };
@@ -189,29 +200,29 @@ var ThrottleWrites = {
189
200
  EnvSafe.close(envSafe);
190
201
 
191
202
  export {
192
- updateSyncTimeOnRestart ,
193
- targetBufferSize ,
194
- maxAddrInPartition ,
195
- maxPartitionConcurrency ,
196
- serverPort ,
197
- tuiOffEnvVar ,
198
- logLevelSchema ,
199
- logFilePath ,
200
- userLogLevel ,
201
- defaultFileLogLevel ,
202
- prodEnvioAppUrl ,
203
- envioAppUrl ,
204
- envioApiToken ,
205
- hyperSyncClientTimeoutMillis ,
206
- hyperSyncClientMaxRetries ,
207
- hypersyncClientSerializationFormat ,
208
- hypersyncClientEnableQueryCaching ,
209
- hypersyncLogLevel ,
210
- logStrategy ,
211
- Db ,
212
- ClickHouseSink ,
213
- Hasura ,
214
- Configurable ,
215
- ThrottleWrites ,
203
+ updateSyncTimeOnRestart,
204
+ targetBufferSize,
205
+ maxAddrInPartition,
206
+ maxPartitionConcurrency,
207
+ serverPort,
208
+ tuiOffEnvVar,
209
+ logLevelSchema,
210
+ logFilePath,
211
+ userLogLevel,
212
+ defaultFileLogLevel,
213
+ prodEnvioAppUrl,
214
+ envioAppUrl,
215
+ envioApiToken,
216
+ hyperSyncClientTimeoutMillis,
217
+ hyperSyncClientMaxRetries,
218
+ hypersyncClientSerializationFormat,
219
+ hypersyncClientEnableQueryCaching,
220
+ hypersyncLogLevel,
221
+ logStrategy,
222
+ Db,
223
+ ClickHouse,
224
+ Hasura,
225
+ Configurable,
226
+ ThrottleWrites,
216
227
  }
217
228
  /* Not a pure module */
@@ -0,0 +1,269 @@
1
+ // Vendored from rescript-envsafe v5.0.0 (https://github.com/DZakh/rescript-envsafe).
2
+ // Kept in-tree so it's compiled with our ReScript toolchain and the emitted
3
+ // JS artifacts stay under our control (upstream's published JS may lag or
4
+ // target a different ReScript version). Diff against the v5.0.0 source when
5
+ // pulling upstream fixes. See LICENSE for attribution.
6
+ @@uncurried
7
+
8
+ %%private(external magic: 'a => 'b = "%identity")
9
+
10
+ module Stdlib = {
11
+ module Dict = {
12
+ @get_index external get: (dict<'a>, string) => option<'a> = ""
13
+ }
14
+
15
+ module Option = {
16
+ @inline
17
+ let forEach = (option, fn) => {
18
+ switch option {
19
+ | Some(v) => fn(v)
20
+ | None => ()
21
+ }
22
+ }
23
+ }
24
+
25
+ module Window = {
26
+ let alert = (message: string): unit => {
27
+ message->ignore
28
+ if %raw(`typeof window !== 'undefined' && window.alert`) {
29
+ %raw(`window.alert(message)`)
30
+ }
31
+ }
32
+ }
33
+
34
+ module Exn = {
35
+ type error
36
+
37
+ @new
38
+ external makeError: string => error = "Error"
39
+ @new
40
+ external makeTypeError: string => error = "TypeError"
41
+
42
+ let raiseError = (error: error): 'a => error->magic->throw
43
+ }
44
+ }
45
+
46
+ module Error = {
47
+ @inline
48
+ let panic = message =>
49
+ Stdlib.Exn.raiseError(Stdlib.Exn.makeError(`[rescript-envsafe] ${message}`))
50
+ }
51
+
52
+ type env = dict<string>
53
+ type invalidIssue = {name: string, error: S.error, input: option<string>}
54
+ type missingIssue = {name: string, input: option<string>}
55
+ type t = {
56
+ env: env,
57
+ mutable isLocked: bool,
58
+ mutable maybeMissingIssues: option<array<missingIssue>>,
59
+ mutable maybeInvalidIssues: option<array<invalidIssue>>,
60
+ }
61
+
62
+ module Env = {
63
+ @val
64
+ external // FIXME: process might be missing
65
+ default: dict<string> = "process.env"
66
+ }
67
+
68
+ let mixinMissingIssue = (envSafe, issue) => {
69
+ switch envSafe.maybeMissingIssues {
70
+ | Some(missingIssues) => missingIssues->Array.push(issue)->ignore
71
+ | None => envSafe.maybeMissingIssues = Some([issue])
72
+ }
73
+ }
74
+
75
+ let mixinInvalidIssue = (envSafe, issue: invalidIssue) => {
76
+ switch envSafe.maybeInvalidIssues {
77
+ | Some(invalidIssues) => invalidIssues->Array.push(issue)->ignore
78
+ | None => envSafe.maybeInvalidIssues = Some([issue])
79
+ }
80
+ }
81
+
82
+ let make = (~env=Env.default) => {
83
+ {env, isLocked: false, maybeMissingIssues: None, maybeInvalidIssues: None}
84
+ }
85
+
86
+ let close = envSafe => {
87
+ if envSafe.isLocked {
88
+ Error.panic("EnvSafe is already closed.")
89
+ }
90
+ envSafe.isLocked = true
91
+ switch (envSafe.maybeMissingIssues, envSafe.maybeInvalidIssues) {
92
+ | (None, None) => ()
93
+ | (maybeMissingIssues, maybeInvalidIssues) => {
94
+ let text = {
95
+ let line = "========================================"
96
+ let output = [line]
97
+
98
+ maybeInvalidIssues->Stdlib.Option.forEach(invalidIssues => {
99
+ output->Array.push("❌ Invalid environment variables:")->ignore
100
+ invalidIssues->Array.forEach(issue => {
101
+ output->Array.push(` ${issue.name}: ${issue.error->S.Error.message}`)->ignore
102
+ })
103
+ })
104
+
105
+ maybeMissingIssues->Stdlib.Option.forEach(missingIssues => {
106
+ output->Array.push("💨 Missing environment variables:")->ignore
107
+ missingIssues->Array.forEach(issue => {
108
+ output
109
+ ->Array.push(
110
+ ` ${issue.name}: ${switch issue.input {
111
+ | Some("") => "Disallowed empty string"
112
+ | _ => "Missing value"
113
+ }}`,
114
+ )
115
+ ->ignore
116
+ })
117
+ })
118
+
119
+ output->Array.push(line)->ignore
120
+ output->Array.joinUnsafe("\n")
121
+ }
122
+
123
+ Console.error(text)
124
+ Stdlib.Window.alert(text)
125
+ Stdlib.Exn.raiseError(Stdlib.Exn.makeTypeError(text))
126
+ }
127
+ }
128
+ }
129
+
130
+ let boolCoerce = string =>
131
+ switch string {
132
+ | "true"
133
+ | "t"
134
+ | "1" =>
135
+ true->magic
136
+ | "false"
137
+ | "f"
138
+ | "0" =>
139
+ false->magic
140
+ | _ => string
141
+ }
142
+
143
+ let numberCoerce = string => {
144
+ let float = %raw(`+string`)
145
+ if Float.isNaN(float) {
146
+ string
147
+ } else {
148
+ float->magic
149
+ }
150
+ }
151
+
152
+ let bigintCoerce = string => {
153
+ try string->BigInt.fromStringOrThrow->magic catch {
154
+ | _ => string
155
+ }
156
+ }
157
+
158
+ let jsonCoerce = string => {
159
+ try string->JSON.parseOrThrow->magic catch {
160
+ | _ => string
161
+ }
162
+ }
163
+
164
+ @inline
165
+ let prepareUnionSchemaCoercion = schema => {
166
+ schema->S.preprocess(s => {
167
+ let tagged = switch s.schema->S.classify {
168
+ | Option(optionalSchema) => optionalSchema->S.classify
169
+ | tagged => tagged
170
+ }
171
+ switch tagged {
172
+ | Literal(Boolean(_))
173
+ | Bool => {
174
+ parser: unknown => unknown->magic->boolCoerce->magic,
175
+ }
176
+ | Literal(BigInt(_))
177
+ | BigInt => {
178
+ parser: unknown => unknown->magic->bigintCoerce->magic,
179
+ }
180
+ | Literal(Number(_))
181
+ | Int
182
+ | Float => {
183
+ parser: unknown => unknown->magic->numberCoerce->magic,
184
+ }
185
+ | String
186
+ | Literal(String(_))
187
+ | Union(_)
188
+ | Never => {}
189
+ | _ => {
190
+ parser: unknown => unknown->magic->jsonCoerce->magic,
191
+ }
192
+ }
193
+ })
194
+ }
195
+
196
+ let get = (
197
+ envSafe,
198
+ name,
199
+ schema,
200
+ ~allowEmpty=false,
201
+ ~fallback as maybeFallback=?,
202
+ ~devFallback as maybeDevFallback=?,
203
+ ~input as maybeInlinedInput=?,
204
+ ) => {
205
+ if envSafe.isLocked {
206
+ Error.panic("EnvSafe is closed. Make a new one to get access to environment variables.")
207
+ }
208
+ let input = switch maybeInlinedInput {
209
+ | Some(inlinedInput) => inlinedInput
210
+ | None => envSafe.env->Stdlib.Dict.get(name)
211
+ }
212
+ let isMissing = switch (input, allowEmpty) {
213
+ | (None, _)
214
+ | (Some(""), false) => true
215
+ | _ => false
216
+ }
217
+ let isOptional = switch schema->S.classify {
218
+ | Option(_) => true
219
+ | _ => false
220
+ }
221
+ if isMissing && !isOptional {
222
+ switch (maybeDevFallback, maybeFallback) {
223
+ | (Some(devFallback), _)
224
+ if envSafe.env->Stdlib.Dict.get("NODE_ENV") !== Some("production") => devFallback
225
+ | (_, Some(fallback)) => fallback
226
+ | _ => {
227
+ envSafe->mixinMissingIssue({name, input})
228
+ %raw(`undefined`)
229
+ }
230
+ }
231
+ } else {
232
+ let tagged = switch schema->S.classify {
233
+ | Option(optionalSchema) => optionalSchema->S.classify
234
+ | tagged => tagged
235
+ }
236
+ let input = switch input {
237
+ | Some("") if !allowEmpty => None
238
+ | None => None
239
+ | Some(string) =>
240
+ switch tagged {
241
+ | Literal(Boolean(_))
242
+ | Bool =>
243
+ string->boolCoerce
244
+ | Literal(BigInt(_))
245
+ | BigInt =>
246
+ string->bigintCoerce
247
+ | Literal(Number(_))
248
+ | Int
249
+ | Float =>
250
+ string->numberCoerce
251
+ | String
252
+ | Literal(String(_))
253
+ | Never
254
+ | Union(_) => string
255
+ | _ => string->jsonCoerce
256
+ }->Some
257
+ }
258
+ let schema = switch tagged {
259
+ | Union(_) => prepareUnionSchemaCoercion(schema)
260
+ | _ => schema
261
+ }
262
+ try input->S.parseOrThrow(schema) catch {
263
+ | S.Raised(error) => {
264
+ envSafe->mixinInvalidIssue({name, error, input})
265
+ %raw(`undefined`)
266
+ }
267
+ }
268
+ }
269
+ }