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.
- package/bin.mjs +2 -48
- package/evm.schema.json +67 -0
- package/fuel.schema.json +67 -0
- package/index.d.ts +822 -38
- package/index.js +5 -3
- package/package.json +10 -8
- package/rescript.json +5 -9
- package/src/Address.res +4 -5
- package/src/Address.res.mjs +9 -12
- package/src/Api.res +15 -0
- package/src/Api.res.mjs +20 -0
- package/src/Batch.res +32 -34
- package/src/Batch.res.mjs +172 -187
- package/src/Bin.res +89 -0
- package/src/Bin.res.mjs +97 -0
- package/src/ChainFetcher.res +33 -57
- package/src/ChainFetcher.res.mjs +197 -227
- package/src/ChainManager.res +6 -14
- package/src/ChainManager.res.mjs +74 -85
- package/src/ChainMap.res +14 -16
- package/src/ChainMap.res.mjs +38 -38
- package/src/Config.res +193 -135
- package/src/Config.res.mjs +566 -592
- package/src/Core.res +182 -0
- package/src/Core.res.mjs +207 -0
- package/src/Ecosystem.res +25 -4
- package/src/Ecosystem.res.mjs +12 -13
- package/src/Env.res +20 -13
- package/src/Env.res.mjs +124 -113
- package/src/EnvSafe.res +269 -0
- package/src/EnvSafe.res.mjs +296 -0
- package/src/EnvSafe.resi +18 -0
- package/src/Envio.res +37 -26
- package/src/Envio.res.mjs +59 -60
- package/src/ErrorHandling.res +2 -2
- package/src/ErrorHandling.res.mjs +15 -15
- package/src/EventConfigBuilder.res +219 -81
- package/src/EventConfigBuilder.res.mjs +259 -202
- package/src/EventProcessing.res +27 -38
- package/src/EventProcessing.res.mjs +165 -183
- package/src/EventUtils.res +11 -11
- package/src/EventUtils.res.mjs +21 -22
- package/src/EvmTypes.res +0 -1
- package/src/EvmTypes.res.mjs +5 -5
- package/src/FetchState.res +360 -256
- package/src/FetchState.res.mjs +958 -914
- package/src/GlobalState.res +365 -351
- package/src/GlobalState.res.mjs +958 -992
- package/src/GlobalStateManager.res +1 -2
- package/src/GlobalStateManager.res.mjs +36 -44
- package/src/HandlerLoader.res +107 -23
- package/src/HandlerLoader.res.mjs +128 -38
- package/src/HandlerRegister.res +127 -103
- package/src/HandlerRegister.res.mjs +164 -164
- package/src/HandlerRegister.resi +12 -4
- package/src/Hasura.res +35 -22
- package/src/Hasura.res.mjs +158 -167
- package/src/InMemoryStore.res +20 -27
- package/src/InMemoryStore.res.mjs +64 -80
- package/src/InMemoryTable.res +34 -39
- package/src/InMemoryTable.res.mjs +165 -170
- package/src/Internal.res +52 -33
- package/src/Internal.res.mjs +84 -81
- package/src/LazyLoader.res.mjs +55 -61
- package/src/LoadLayer.res +77 -78
- package/src/LoadLayer.res.mjs +160 -189
- package/src/LoadManager.res +16 -21
- package/src/LoadManager.res.mjs +79 -84
- package/src/LogSelection.res +236 -68
- package/src/LogSelection.res.mjs +211 -141
- package/src/Logging.res +13 -9
- package/src/Logging.res.mjs +130 -143
- package/src/Main.res +428 -51
- package/src/Main.res.mjs +528 -271
- package/src/Persistence.res +77 -84
- package/src/Persistence.res.mjs +131 -132
- package/src/PgStorage.res +291 -167
- package/src/PgStorage.res.mjs +797 -817
- package/src/Prometheus.res +50 -58
- package/src/Prometheus.res.mjs +345 -373
- package/src/ReorgDetection.res +22 -24
- package/src/ReorgDetection.res.mjs +100 -106
- package/src/SafeCheckpointTracking.res +7 -7
- package/src/SafeCheckpointTracking.res.mjs +40 -43
- package/src/SimulateItems.res +41 -49
- package/src/SimulateItems.res.mjs +257 -272
- package/src/Sink.res +2 -2
- package/src/Sink.res.mjs +22 -26
- package/src/TableIndices.res +1 -2
- package/src/TableIndices.res.mjs +42 -48
- package/src/TestIndexer.res +196 -189
- package/src/TestIndexer.res.mjs +536 -536
- package/src/TestIndexerProxyStorage.res +15 -16
- package/src/TestIndexerProxyStorage.res.mjs +98 -122
- package/src/TestIndexerWorker.res +4 -0
- package/src/TestIndexerWorker.res.mjs +7 -0
- package/src/Throttler.res +3 -3
- package/src/Throttler.res.mjs +23 -24
- package/src/Time.res +1 -1
- package/src/Time.res.mjs +18 -21
- package/src/TopicFilter.res +3 -3
- package/src/TopicFilter.res.mjs +29 -30
- package/src/UserContext.res +93 -54
- package/src/UserContext.res.mjs +197 -182
- package/src/Utils.res +141 -86
- package/src/Utils.res.mjs +334 -295
- package/src/bindings/BigDecimal.res +0 -2
- package/src/bindings/BigDecimal.res.mjs +19 -23
- package/src/bindings/ClickHouse.res +28 -27
- package/src/bindings/ClickHouse.res.mjs +243 -240
- package/src/bindings/DateFns.res +11 -11
- package/src/bindings/DateFns.res.mjs +7 -7
- package/src/bindings/EventSource.res.mjs +2 -2
- package/src/bindings/Express.res +2 -5
- package/src/bindings/Hrtime.res +2 -2
- package/src/bindings/Hrtime.res.mjs +30 -32
- package/src/bindings/Lodash.res.mjs +1 -1
- package/src/bindings/NodeJs.res +14 -9
- package/src/bindings/NodeJs.res.mjs +20 -20
- package/src/bindings/Pino.res +8 -10
- package/src/bindings/Pino.res.mjs +40 -43
- package/src/bindings/Postgres.res +2 -5
- package/src/bindings/Postgres.res.mjs +9 -9
- package/src/bindings/PromClient.res +17 -2
- package/src/bindings/PromClient.res.mjs +30 -7
- package/src/bindings/SDSL.res.mjs +2 -2
- package/src/bindings/Viem.res +4 -4
- package/src/bindings/Viem.res.mjs +20 -22
- package/src/bindings/Vitest.res +1 -1
- package/src/bindings/Vitest.res.mjs +2 -2
- package/src/bindings/WebSocket.res +1 -1
- package/src/db/EntityHistory.res +9 -3
- package/src/db/EntityHistory.res.mjs +84 -59
- package/src/db/InternalTable.res +62 -60
- package/src/db/InternalTable.res.mjs +271 -203
- package/src/db/Schema.res +1 -2
- package/src/db/Schema.res.mjs +28 -32
- package/src/db/Table.res +28 -27
- package/src/db/Table.res.mjs +276 -292
- package/src/sources/EventRouter.res +21 -16
- package/src/sources/EventRouter.res.mjs +55 -57
- package/src/sources/Evm.res +17 -1
- package/src/sources/Evm.res.mjs +16 -8
- package/src/sources/EvmChain.res +15 -17
- package/src/sources/EvmChain.res.mjs +40 -42
- package/src/sources/Fuel.res +14 -1
- package/src/sources/Fuel.res.mjs +16 -8
- package/src/sources/FuelSDK.res +1 -1
- package/src/sources/FuelSDK.res.mjs +6 -8
- package/src/sources/HyperFuel.res +8 -10
- package/src/sources/HyperFuel.res.mjs +113 -123
- package/src/sources/HyperFuelClient.res.mjs +6 -7
- package/src/sources/HyperFuelSource.res +19 -20
- package/src/sources/HyperFuelSource.res.mjs +339 -356
- package/src/sources/HyperSync.res +11 -13
- package/src/sources/HyperSync.res.mjs +206 -220
- package/src/sources/HyperSyncClient.res +5 -7
- package/src/sources/HyperSyncClient.res.mjs +70 -75
- package/src/sources/HyperSyncHeightStream.res +8 -9
- package/src/sources/HyperSyncHeightStream.res.mjs +78 -86
- package/src/sources/HyperSyncJsonApi.res +18 -15
- package/src/sources/HyperSyncJsonApi.res.mjs +201 -231
- package/src/sources/HyperSyncSource.res +17 -21
- package/src/sources/HyperSyncSource.res.mjs +268 -290
- package/src/sources/Rpc.res +5 -5
- package/src/sources/Rpc.res.mjs +168 -192
- package/src/sources/RpcSource.res +166 -167
- package/src/sources/RpcSource.res.mjs +972 -1046
- package/src/sources/RpcWebSocketHeightStream.res +10 -11
- package/src/sources/RpcWebSocketHeightStream.res.mjs +131 -145
- package/src/sources/SimulateSource.res +1 -1
- package/src/sources/SimulateSource.res.mjs +35 -38
- package/src/sources/Source.res +1 -1
- package/src/sources/Source.res.mjs +3 -3
- package/src/sources/SourceManager.res +39 -20
- package/src/sources/SourceManager.res.mjs +340 -371
- package/src/sources/SourceManager.resi +2 -1
- package/src/sources/Svm.res +12 -5
- package/src/sources/Svm.res.mjs +44 -41
- package/src/tui/Tui.res +23 -12
- package/src/tui/Tui.res.mjs +292 -290
- package/src/tui/bindings/Ink.res +2 -4
- package/src/tui/bindings/Ink.res.mjs +35 -41
- package/src/tui/components/BufferedProgressBar.res +7 -7
- package/src/tui/components/BufferedProgressBar.res.mjs +46 -46
- package/src/tui/components/CustomHooks.res +1 -2
- package/src/tui/components/CustomHooks.res.mjs +102 -122
- package/src/tui/components/Messages.res +1 -2
- package/src/tui/components/Messages.res.mjs +38 -42
- package/src/tui/components/SyncETA.res +10 -11
- package/src/tui/components/SyncETA.res.mjs +178 -196
- package/src/tui/components/TuiData.res +1 -1
- package/src/tui/components/TuiData.res.mjs +7 -6
- package/src/vendored/Rest.res +52 -66
- package/src/vendored/Rest.res.mjs +324 -364
- package/svm.schema.json +67 -0
- package/src/Address.gen.ts +0 -8
- package/src/Config.gen.ts +0 -19
- package/src/Envio.gen.ts +0 -55
- package/src/EvmTypes.gen.ts +0 -6
- package/src/InMemoryStore.gen.ts +0 -6
- package/src/Internal.gen.ts +0 -64
- package/src/PgStorage.gen.ts +0 -10
- package/src/PgStorage.res.d.mts +0 -5
- package/src/Types.ts +0 -56
- package/src/bindings/BigDecimal.gen.ts +0 -14
- package/src/bindings/BigDecimal.res.d.mts +0 -5
- package/src/bindings/BigInt.gen.ts +0 -10
- package/src/bindings/BigInt.res +0 -70
- package/src/bindings/BigInt.res.d.mts +0 -5
- package/src/bindings/BigInt.res.mjs +0 -154
- package/src/bindings/Ethers.res.d.mts +0 -5
- package/src/bindings/Pino.gen.ts +0 -17
- package/src/bindings/Postgres.gen.ts +0 -8
- package/src/bindings/Postgres.res.d.mts +0 -5
- package/src/bindings/Promise.res +0 -67
- package/src/bindings/Promise.res.mjs +0 -26
- package/src/db/InternalTable.gen.ts +0 -36
- package/src/sources/HyperSyncClient.gen.ts +0 -19
package/src/ChainManager.res.mjs
CHANGED
|
@@ -3,10 +3,8 @@
|
|
|
3
3
|
import * as Env from "./Env.res.mjs";
|
|
4
4
|
import * as Batch from "./Batch.res.mjs";
|
|
5
5
|
import * as Utils from "./Utils.res.mjs";
|
|
6
|
-
import * as $$BigInt from "./bindings/BigInt.res.mjs";
|
|
7
6
|
import * as Config from "./Config.res.mjs";
|
|
8
7
|
import * as ChainMap from "./ChainMap.res.mjs";
|
|
9
|
-
import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
|
|
10
8
|
import * as Prometheus from "./Prometheus.res.mjs";
|
|
11
9
|
import * as ChainFetcher from "./ChainFetcher.res.mjs";
|
|
12
10
|
import * as SafeCheckpointTracking from "./SafeCheckpointTracking.res.mjs";
|
|
@@ -25,65 +23,63 @@ function calculateTargetBufferSize(activeChainsCount) {
|
|
|
25
23
|
}
|
|
26
24
|
switch (activeChainsCount) {
|
|
27
25
|
case 1 :
|
|
28
|
-
|
|
26
|
+
return 60000;
|
|
29
27
|
case 2 :
|
|
30
|
-
|
|
28
|
+
return 30000;
|
|
31
29
|
case 3 :
|
|
32
|
-
|
|
30
|
+
return 20000;
|
|
33
31
|
case 4 :
|
|
34
|
-
|
|
32
|
+
return 15000;
|
|
35
33
|
case 5 :
|
|
36
|
-
|
|
34
|
+
return 10000;
|
|
37
35
|
default:
|
|
38
36
|
return 5000;
|
|
39
37
|
}
|
|
40
38
|
}
|
|
41
39
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}));
|
|
46
|
-
var targetBufferSize = calculateTargetBufferSize(initialState.chains.length);
|
|
40
|
+
function makeFromDbState(initialState, config, registrations) {
|
|
41
|
+
let isInReorgThreshold = initialState.cleanRun ? false : initialState.chains.some(chain => isProgressInReorgThreshold(chain.progressBlockNumber, chain.sourceBlockNumber, chain.maxReorgDepth));
|
|
42
|
+
let targetBufferSize = calculateTargetBufferSize(initialState.chains.length);
|
|
47
43
|
Prometheus.ProcessingMaxBatchSize.set(config.batchSize);
|
|
48
44
|
Prometheus.IndexingTargetBufferSize.set(targetBufferSize);
|
|
49
45
|
Prometheus.ReorgThreshold.set(isInReorgThreshold);
|
|
50
|
-
Utils.Dict.forEach(initialState.cache,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
46
|
+
Utils.Dict.forEach(initialState.cache, param => {
|
|
47
|
+
let count = param.count;
|
|
48
|
+
Prometheus.EffectCacheCount.set(count, param.effectName);
|
|
49
|
+
});
|
|
50
|
+
let chainFetchersArr = initialState.chains.map(resumedChainState => {
|
|
51
|
+
let chain = Config.getChain(config, resumedChainState.id);
|
|
52
|
+
let chainConfig = ChainMap.get(config.chainMap, chain);
|
|
53
|
+
return [
|
|
54
|
+
chain,
|
|
55
|
+
ChainFetcher.makeFromDbState(chainConfig, resumedChainState, initialState.reorgCheckpoints, isInReorgThreshold, config, registrations, targetBufferSize)
|
|
56
|
+
];
|
|
57
|
+
});
|
|
58
|
+
let chainFetchers = ChainMap.fromArrayUnsafe(chainFetchersArr);
|
|
59
|
+
let allChainsReady = {
|
|
64
60
|
contents: chainFetchersArr.length !== 0
|
|
65
61
|
};
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
62
|
+
chainFetchersArr.forEach(param => {
|
|
63
|
+
let cf = param[1];
|
|
64
|
+
let chain = param[0];
|
|
65
|
+
Prometheus.ProgressBlockNumber.set(cf.committedProgressBlockNumber, chain);
|
|
66
|
+
Prometheus.ProgressReady.init(chain);
|
|
67
|
+
if (ChainFetcher.isReady(cf)) {
|
|
68
|
+
return Prometheus.ProgressReady.set(chain);
|
|
69
|
+
} else {
|
|
70
|
+
allChainsReady.contents = false;
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
78
74
|
if (allChainsReady.contents) {
|
|
79
75
|
Prometheus.ProgressReady.setAllReady();
|
|
80
76
|
}
|
|
81
77
|
return {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
78
|
+
committedCheckpointId: initialState.checkpointId,
|
|
79
|
+
chainFetchers: chainFetchers,
|
|
80
|
+
multichain: config.multichain,
|
|
81
|
+
isInReorgThreshold: isInReorgThreshold
|
|
82
|
+
};
|
|
87
83
|
}
|
|
88
84
|
|
|
89
85
|
function getChainFetcher(chainManager, chain) {
|
|
@@ -92,36 +88,32 @@ function getChainFetcher(chainManager, chain) {
|
|
|
92
88
|
|
|
93
89
|
function setChainFetcher(chainManager, chainFetcher) {
|
|
94
90
|
return {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
91
|
+
committedCheckpointId: chainManager.committedCheckpointId,
|
|
92
|
+
chainFetchers: ChainMap.set(chainManager.chainFetchers, ChainMap.Chain.makeUnsafe(chainFetcher.chainConfig.id), chainFetcher),
|
|
93
|
+
multichain: chainManager.multichain,
|
|
94
|
+
isInReorgThreshold: chainManager.isInReorgThreshold
|
|
95
|
+
};
|
|
100
96
|
}
|
|
101
97
|
|
|
102
98
|
function nextItemIsNone(chainManager) {
|
|
103
|
-
return !Batch.hasMultichainReadyItem(ChainMap.map(chainManager.chainFetchers,
|
|
104
|
-
return cf.fetchState;
|
|
105
|
-
})), chainManager.multichain);
|
|
99
|
+
return !Batch.hasMultichainReadyItem(ChainMap.map(chainManager.chainFetchers, cf => cf.fetchState), chainManager.multichain);
|
|
106
100
|
}
|
|
107
101
|
|
|
108
102
|
function createBatch(chainManager, batchSizeTarget, isRollback) {
|
|
109
|
-
return Batch.make(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
103
|
+
return Batch.make(chainManager.committedCheckpointId + (
|
|
104
|
+
isRollback ? 1n : 0n
|
|
105
|
+
), ChainMap.map(chainManager.chainFetchers, cf => ({
|
|
106
|
+
fetchState: cf.fetchState,
|
|
107
|
+
reorgDetection: cf.reorgDetection,
|
|
108
|
+
progressBlockNumber: cf.committedProgressBlockNumber,
|
|
109
|
+
sourceBlockNumber: cf.fetchState.knownHeight,
|
|
110
|
+
totalEventsProcessed: cf.numEventsProcessed,
|
|
111
|
+
chainConfig: cf.chainConfig
|
|
112
|
+
})), chainManager.multichain, batchSizeTarget);
|
|
119
113
|
}
|
|
120
114
|
|
|
121
115
|
function isProgressAtHead(chainManager) {
|
|
122
|
-
return ChainMap.values(chainManager.chainFetchers).every(
|
|
123
|
-
return cf.isProgressAtHead;
|
|
124
|
-
});
|
|
116
|
+
return ChainMap.values(chainManager.chainFetchers).every(cf => cf.isProgressAtHead);
|
|
125
117
|
}
|
|
126
118
|
|
|
127
119
|
function isActivelyIndexing(chainManager) {
|
|
@@ -129,38 +121,35 @@ function isActivelyIndexing(chainManager) {
|
|
|
129
121
|
}
|
|
130
122
|
|
|
131
123
|
function getSafeCheckpointId(chainManager) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
for(
|
|
135
|
-
|
|
136
|
-
|
|
124
|
+
let chainFetchers = ChainMap.values(chainManager.chainFetchers);
|
|
125
|
+
let result;
|
|
126
|
+
for (let idx = 0, idx_finish = chainFetchers.length; idx < idx_finish; ++idx) {
|
|
127
|
+
let chainFetcher = chainFetchers[idx];
|
|
128
|
+
let safeCheckpointTracking = chainFetcher.safeCheckpointTracking;
|
|
137
129
|
if (safeCheckpointTracking !== undefined) {
|
|
138
|
-
|
|
139
|
-
|
|
130
|
+
let safeCheckpointId = SafeCheckpointTracking.getSafeCheckpointId(safeCheckpointTracking, chainFetcher.fetchState.knownHeight);
|
|
131
|
+
let current = result;
|
|
140
132
|
if (!(current !== undefined && safeCheckpointId >= current)) {
|
|
141
133
|
result = safeCheckpointId;
|
|
142
134
|
}
|
|
143
|
-
|
|
144
135
|
}
|
|
145
|
-
|
|
146
136
|
}
|
|
147
|
-
|
|
137
|
+
let id = result;
|
|
148
138
|
if (id !== undefined && id > 0n) {
|
|
149
139
|
return id;
|
|
150
140
|
}
|
|
151
|
-
|
|
152
141
|
}
|
|
153
142
|
|
|
154
143
|
export {
|
|
155
|
-
isProgressInReorgThreshold
|
|
156
|
-
calculateTargetBufferSize
|
|
157
|
-
makeFromDbState
|
|
158
|
-
getChainFetcher
|
|
159
|
-
setChainFetcher
|
|
160
|
-
nextItemIsNone
|
|
161
|
-
createBatch
|
|
162
|
-
isProgressAtHead
|
|
163
|
-
isActivelyIndexing
|
|
164
|
-
getSafeCheckpointId
|
|
144
|
+
isProgressInReorgThreshold,
|
|
145
|
+
calculateTargetBufferSize,
|
|
146
|
+
makeFromDbState,
|
|
147
|
+
getChainFetcher,
|
|
148
|
+
setChainFetcher,
|
|
149
|
+
nextItemIsNone,
|
|
150
|
+
createBatch,
|
|
151
|
+
isProgressAtHead,
|
|
152
|
+
isActivelyIndexing,
|
|
153
|
+
getSafeCheckpointId,
|
|
165
154
|
}
|
|
166
155
|
/* Env Not a pure module */
|
package/src/ChainMap.res
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
open Belt
|
|
2
|
-
|
|
3
1
|
module Chain = {
|
|
4
2
|
type t = int
|
|
5
3
|
|
|
@@ -10,33 +8,33 @@ module Chain = {
|
|
|
10
8
|
let makeUnsafe = (~chainId) => chainId
|
|
11
9
|
}
|
|
12
10
|
|
|
13
|
-
module ChainIdCmp = Belt.Id.
|
|
11
|
+
module ChainIdCmp = Belt.Id.MakeComparable({
|
|
14
12
|
type t = Chain.t
|
|
15
|
-
let cmp = (a, b) =>
|
|
13
|
+
let cmp = (a, b) => Int.compare(a->Chain.toChainId, b->Chain.toChainId)->Int.fromFloat
|
|
16
14
|
})
|
|
17
15
|
|
|
18
16
|
type t<'a> = Belt.Map.t<ChainIdCmp.t, 'a, ChainIdCmp.identity>
|
|
19
17
|
|
|
20
18
|
let fromArrayUnsafe: array<(Chain.t, 'a)> => t<'a> = arr => {
|
|
21
|
-
arr->Map.fromArray(~id=module(ChainIdCmp))
|
|
19
|
+
arr->Belt.Map.fromArray(~id=module(ChainIdCmp))
|
|
22
20
|
}
|
|
23
21
|
|
|
24
22
|
let get: (t<'a>, Chain.t) => 'a = (self, chain) =>
|
|
25
|
-
switch Map.get(self, chain) {
|
|
23
|
+
switch Belt.Map.get(self, chain) {
|
|
26
24
|
| Some(v) => v
|
|
27
25
|
| None =>
|
|
28
26
|
// Should be unreachable, since we validate on Chain.t creation
|
|
29
27
|
// Still throw just in case something went wrong
|
|
30
|
-
|
|
28
|
+
JsError.throwWithMessage("No chain with id " ++ chain->Chain.toString ++ " found in chain map")
|
|
31
29
|
}
|
|
32
30
|
|
|
33
|
-
let set: (t<'a>, Chain.t, 'a) => t<'a> = (map, chain, v) => Map.set(map, chain, v)
|
|
34
|
-
let values: t<'a> => array<'a> = map => Map.valuesToArray(map)
|
|
35
|
-
let keys: t<'a> => array<Chain.t> = map => Map.keysToArray(map)
|
|
36
|
-
let entries: t<'a> => array<(Chain.t, 'a)> = map => Map.toArray(map)
|
|
37
|
-
let has: (t<'a>, Chain.t) => bool = (map, chain) => Map.has(map, chain)
|
|
38
|
-
let map: (t<'a>, 'a => 'b) => t<'b> = (map, fn) => Map.map(map, fn)
|
|
39
|
-
let mapWithKey: (t<'a>, (Chain.t, 'a) => 'b) => t<'b> = (map, fn) => Map.mapWithKey(map, fn)
|
|
40
|
-
let size: t<'a> => int = map => Map.size(map)
|
|
31
|
+
let set: (t<'a>, Chain.t, 'a) => t<'a> = (map, chain, v) => Belt.Map.set(map, chain, v)
|
|
32
|
+
let values: t<'a> => array<'a> = map => Belt.Map.valuesToArray(map)
|
|
33
|
+
let keys: t<'a> => array<Chain.t> = map => Belt.Map.keysToArray(map)
|
|
34
|
+
let entries: t<'a> => array<(Chain.t, 'a)> = map => Belt.Map.toArray(map)
|
|
35
|
+
let has: (t<'a>, Chain.t) => bool = (map, chain) => Belt.Map.has(map, chain)
|
|
36
|
+
let map: (t<'a>, 'a => 'b) => t<'b> = (map, fn) => Belt.Map.map(map, fn)
|
|
37
|
+
let mapWithKey: (t<'a>, (Chain.t, 'a) => 'b) => t<'b> = (map, fn) => Belt.Map.mapWithKey(map, fn)
|
|
38
|
+
let size: t<'a> => int = map => Belt.Map.size(map)
|
|
41
39
|
let update: (t<'a>, Chain.t, 'a => 'a) => t<'a> = (map, chain, updateFn) =>
|
|
42
|
-
Map.update(map, chain, opt => opt->Option.map(updateFn))
|
|
40
|
+
Belt.Map.update(map, chain, opt => opt->Option.map(updateFn))
|
package/src/ChainMap.res.mjs
CHANGED
|
@@ -1,78 +1,78 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
|
-
import * as
|
|
4
|
-
import * as
|
|
5
|
-
import * as
|
|
6
|
-
import * as
|
|
7
|
-
import * as
|
|
8
|
-
import * as
|
|
3
|
+
import * as Belt_Id from "@rescript/runtime/lib/es6/Belt_Id.js";
|
|
4
|
+
import * as Belt_Map from "@rescript/runtime/lib/es6/Belt_Map.js";
|
|
5
|
+
import * as Primitive_int from "@rescript/runtime/lib/es6/Primitive_int.js";
|
|
6
|
+
import * as Stdlib_Option from "@rescript/runtime/lib/es6/Stdlib_Option.js";
|
|
7
|
+
import * as Stdlib_JsError from "@rescript/runtime/lib/es6/Stdlib_JsError.js";
|
|
8
|
+
import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
|
|
9
9
|
|
|
10
10
|
function toString(chainId) {
|
|
11
|
-
return
|
|
11
|
+
return chainId.toString();
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
function makeUnsafe(chainId) {
|
|
15
15
|
return chainId;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
let Chain = {
|
|
19
19
|
toString: toString,
|
|
20
20
|
makeUnsafe: makeUnsafe
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
function cmp(a, b) {
|
|
24
|
+
return Primitive_int.compare(a, b) | 0;
|
|
25
|
+
}
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
let ChainIdCmp = Belt_Id.MakeComparable({
|
|
28
|
+
cmp: cmp
|
|
29
|
+
});
|
|
28
30
|
|
|
29
31
|
function fromArrayUnsafe(arr) {
|
|
30
32
|
return Belt_Map.fromArray(arr, ChainIdCmp);
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
function get(self, chain) {
|
|
34
|
-
|
|
36
|
+
let v = Belt_Map.get(self, chain);
|
|
35
37
|
if (v !== undefined) {
|
|
36
|
-
return
|
|
38
|
+
return Primitive_option.valFromOption(v);
|
|
37
39
|
} else {
|
|
38
|
-
return
|
|
40
|
+
return Stdlib_JsError.throwWithMessage("No chain with id " + chain.toString() + " found in chain map");
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
43
|
|
|
42
|
-
|
|
44
|
+
let set = Belt_Map.set;
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
let values = Belt_Map.valuesToArray;
|
|
45
47
|
|
|
46
|
-
|
|
48
|
+
let keys = Belt_Map.keysToArray;
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
let entries = Belt_Map.toArray;
|
|
49
51
|
|
|
50
|
-
|
|
52
|
+
let has = Belt_Map.has;
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
let map = Belt_Map.map;
|
|
53
55
|
|
|
54
|
-
|
|
56
|
+
let mapWithKey = Belt_Map.mapWithKey;
|
|
55
57
|
|
|
56
|
-
|
|
58
|
+
let size = Belt_Map.size;
|
|
57
59
|
|
|
58
60
|
function update(map, chain, updateFn) {
|
|
59
|
-
return Belt_Map.update(map, chain,
|
|
60
|
-
return Belt_Option.map(opt, updateFn);
|
|
61
|
-
}));
|
|
61
|
+
return Belt_Map.update(map, chain, opt => Stdlib_Option.map(opt, updateFn));
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
export {
|
|
65
|
-
Chain
|
|
66
|
-
fromArrayUnsafe
|
|
67
|
-
get
|
|
68
|
-
set
|
|
69
|
-
values
|
|
70
|
-
keys
|
|
71
|
-
entries
|
|
72
|
-
has
|
|
73
|
-
map
|
|
74
|
-
mapWithKey
|
|
75
|
-
size
|
|
76
|
-
update
|
|
65
|
+
Chain,
|
|
66
|
+
fromArrayUnsafe,
|
|
67
|
+
get,
|
|
68
|
+
set,
|
|
69
|
+
values,
|
|
70
|
+
keys,
|
|
71
|
+
entries,
|
|
72
|
+
has,
|
|
73
|
+
map,
|
|
74
|
+
mapWithKey,
|
|
75
|
+
size,
|
|
76
|
+
update,
|
|
77
77
|
}
|
|
78
78
|
/* ChainIdCmp Not a pure module */
|