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/db/Schema.res
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
open Belt
|
|
2
1
|
type t = dict<Table.table>
|
|
3
2
|
|
|
4
3
|
let make = (tables: array<Table.table>) => {
|
|
5
|
-
tables->Array.map(table => (table.tableName, table))->
|
|
4
|
+
tables->Array.map(table => (table.tableName, table))->Dict.fromArray
|
|
6
5
|
}
|
|
7
6
|
|
|
8
7
|
exception UndefinedEntity(Table.derivedFromField)
|
package/src/db/Schema.res.mjs
CHANGED
|
@@ -1,55 +1,51 @@
|
|
|
1
1
|
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
2
|
|
|
3
3
|
import * as Table from "./Table.res.mjs";
|
|
4
|
-
import * as
|
|
5
|
-
import * as Belt_Array from "rescript/lib/es6/belt_Array.js";
|
|
6
|
-
import * as Caml_exceptions from "rescript/lib/es6/caml_exceptions.js";
|
|
4
|
+
import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
|
|
7
5
|
|
|
8
6
|
function make(tables) {
|
|
9
|
-
return
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
];
|
|
14
|
-
})));
|
|
7
|
+
return Object.fromEntries(tables.map(table => [
|
|
8
|
+
table.tableName,
|
|
9
|
+
table
|
|
10
|
+
]));
|
|
15
11
|
}
|
|
16
12
|
|
|
17
|
-
|
|
13
|
+
let UndefinedEntity = /* @__PURE__ */Primitive_exceptions.create("Schema.UndefinedEntity");
|
|
18
14
|
|
|
19
|
-
|
|
15
|
+
let UndefinedFieldInEntity = /* @__PURE__ */Primitive_exceptions.create("Schema.UndefinedFieldInEntity");
|
|
20
16
|
|
|
21
17
|
function getDerivedFromFieldName(schema, derivedFromField) {
|
|
22
|
-
|
|
18
|
+
let entity = schema[derivedFromField.derivedFromEntity];
|
|
23
19
|
if (entity === undefined) {
|
|
24
20
|
return {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
TAG: "Error",
|
|
22
|
+
_0: {
|
|
23
|
+
RE_EXN_ID: UndefinedEntity,
|
|
24
|
+
_1: derivedFromField
|
|
25
|
+
}
|
|
26
|
+
};
|
|
31
27
|
}
|
|
32
|
-
|
|
28
|
+
let field = Table.getFieldByName(entity, derivedFromField.derivedFromField);
|
|
33
29
|
if (field !== undefined) {
|
|
34
30
|
return {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
TAG: "Ok",
|
|
32
|
+
_0: Table.getFieldName(field)
|
|
33
|
+
};
|
|
38
34
|
} else {
|
|
39
35
|
return {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
TAG: "Error",
|
|
37
|
+
_0: {
|
|
38
|
+
RE_EXN_ID: UndefinedFieldInEntity,
|
|
39
|
+
_1: derivedFromField
|
|
40
|
+
}
|
|
41
|
+
};
|
|
46
42
|
}
|
|
47
43
|
}
|
|
48
44
|
|
|
49
45
|
export {
|
|
50
|
-
make
|
|
51
|
-
UndefinedEntity
|
|
52
|
-
UndefinedFieldInEntity
|
|
53
|
-
getDerivedFromFieldName
|
|
46
|
+
make,
|
|
47
|
+
UndefinedEntity,
|
|
48
|
+
UndefinedFieldInEntity,
|
|
49
|
+
getDerivedFromFieldName,
|
|
54
50
|
}
|
|
55
51
|
/* Table Not a pure module */
|
package/src/db/Table.res
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
open Belt
|
|
2
|
-
|
|
3
1
|
type primitive
|
|
4
2
|
type derived
|
|
5
3
|
|
|
@@ -173,7 +171,7 @@ let mkTable = (tableName, ~compositeIndices=[], ~fields) => {
|
|
|
173
171
|
}
|
|
174
172
|
|
|
175
173
|
let getPrimaryKeyFieldNames = table =>
|
|
176
|
-
table.fields->Array.
|
|
174
|
+
table.fields->Array.filterMap(field =>
|
|
177
175
|
switch field {
|
|
178
176
|
| Field({isPrimaryKey: true, fieldName}) => Some(fieldName)
|
|
179
177
|
| _ => None
|
|
@@ -181,7 +179,7 @@ let getPrimaryKeyFieldNames = table =>
|
|
|
181
179
|
)
|
|
182
180
|
|
|
183
181
|
let getFields = table =>
|
|
184
|
-
table.fields->Array.
|
|
182
|
+
table.fields->Array.filterMap(field =>
|
|
185
183
|
switch field {
|
|
186
184
|
| Field(field) => Some(field)
|
|
187
185
|
| DerivedFrom(_) => None
|
|
@@ -193,7 +191,7 @@ let getFieldNames = table => {
|
|
|
193
191
|
}
|
|
194
192
|
|
|
195
193
|
let getNonDefaultFields = table =>
|
|
196
|
-
table.fields->Array.
|
|
194
|
+
table.fields->Array.filterMap(field =>
|
|
197
195
|
switch field {
|
|
198
196
|
| Field(field) if field.defaultValue->Option.isNone => Some(field)
|
|
199
197
|
| _ => None
|
|
@@ -201,7 +199,7 @@ let getNonDefaultFields = table =>
|
|
|
201
199
|
)
|
|
202
200
|
|
|
203
201
|
let getLinkedEntityFields = table =>
|
|
204
|
-
table.fields->Array.
|
|
202
|
+
table.fields->Array.filterMap(field =>
|
|
205
203
|
switch field {
|
|
206
204
|
| Field({linkedEntity: Some(linkedEntityName)} as field) => Some((field, linkedEntityName))
|
|
207
205
|
| Field({linkedEntity: None})
|
|
@@ -211,7 +209,7 @@ let getLinkedEntityFields = table =>
|
|
|
211
209
|
)
|
|
212
210
|
|
|
213
211
|
let getDerivedFromFields = table =>
|
|
214
|
-
table.fields->Array.
|
|
212
|
+
table.fields->Array.filterMap(field =>
|
|
215
213
|
switch field {
|
|
216
214
|
| DerivedFrom(field) => Some(field)
|
|
217
215
|
| Field(_) => None
|
|
@@ -223,10 +221,12 @@ let getNonDefaultFieldNames = table => {
|
|
|
223
221
|
}
|
|
224
222
|
|
|
225
223
|
let getFieldByName = (table, fieldName) =>
|
|
226
|
-
table.fields->
|
|
224
|
+
table.fields->Array.find(field => field->getUserDefinedFieldName === fieldName)
|
|
225
|
+
|
|
226
|
+
// TODO: Test whether it should be passed via args and match the column type
|
|
227
227
|
|
|
228
228
|
let getFieldByDbName = (table, dbFieldName) =>
|
|
229
|
-
table.fields->
|
|
229
|
+
table.fields->Array.find(field =>
|
|
230
230
|
switch field {
|
|
231
231
|
| Field(f) => f->getDbFieldName
|
|
232
232
|
| DerivedFrom({fieldName}) => fieldName
|
|
@@ -244,7 +244,7 @@ let getUnfilteredCompositeIndicesUnsafe = (table): array<array<compositeIndexFie
|
|
|
244
244
|
compositeIndex->Array.map(indexField => {
|
|
245
245
|
let dbFieldName = switch table->getFieldByName(indexField.fieldName) {
|
|
246
246
|
| Some(field) => field->getFieldName
|
|
247
|
-
| None =>
|
|
247
|
+
| None => throw(NonExistingTableField(indexField.fieldName)) //Unexpected should be validated in schema parser
|
|
248
248
|
}
|
|
249
249
|
{fieldName: dbFieldName, direction: indexField.direction}
|
|
250
250
|
})
|
|
@@ -265,14 +265,14 @@ let toSqlParams = (table: table, ~schema, ~pgSchema) => {
|
|
|
265
265
|
let arrayFieldTypes = []
|
|
266
266
|
let hasArrayField = ref(false)
|
|
267
267
|
|
|
268
|
-
let dbSchema: S.t<
|
|
268
|
+
let dbSchema: S.t<dict<unknown>> = S.schema(s =>
|
|
269
269
|
switch schema->S.classify {
|
|
270
270
|
| Object({items}) =>
|
|
271
|
-
let dict =
|
|
271
|
+
let dict = Dict.make()
|
|
272
272
|
items->Belt.Array.forEach(({location, inlinedLocation, schema}) => {
|
|
273
273
|
let rec coerceSchema = schema =>
|
|
274
274
|
switch schema->S.classify {
|
|
275
|
-
| BigInt => BigInt.schema->S.toUnknown
|
|
275
|
+
| BigInt => Utils.BigInt.schema->S.toUnknown
|
|
276
276
|
| Option(child)
|
|
277
277
|
| Null(child) =>
|
|
278
278
|
S.null(child->coerceSchema)->S.toUnknown
|
|
@@ -295,22 +295,22 @@ let toSqlParams = (table: table, ~schema, ~pgSchema) => {
|
|
|
295
295
|
|
|
296
296
|
let field = switch table->getFieldByDbName(location) {
|
|
297
297
|
| Some(field) => field
|
|
298
|
-
| None =>
|
|
298
|
+
| None => throw(NonExistingTableField(location))
|
|
299
299
|
}
|
|
300
300
|
|
|
301
301
|
quotedFieldNames
|
|
302
|
-
->
|
|
302
|
+
->Array.push(inlinedLocation)
|
|
303
303
|
->ignore
|
|
304
304
|
switch field {
|
|
305
305
|
| Field({isPrimaryKey: false}) =>
|
|
306
306
|
quotedNonPrimaryFieldNames
|
|
307
|
-
->
|
|
307
|
+
->Array.push(inlinedLocation)
|
|
308
308
|
->ignore
|
|
309
309
|
| _ => ()
|
|
310
310
|
}
|
|
311
311
|
|
|
312
312
|
arrayFieldTypes
|
|
313
|
-
->
|
|
313
|
+
->Array.push(
|
|
314
314
|
switch field {
|
|
315
315
|
| Field(f) =>
|
|
316
316
|
let pgFieldType = getPgFieldType(
|
|
@@ -318,7 +318,7 @@ let toSqlParams = (table: table, ~schema, ~pgSchema) => {
|
|
|
318
318
|
~pgSchema,
|
|
319
319
|
~isArray=true,
|
|
320
320
|
~isNullable=f.isNullable,
|
|
321
|
-
~isNumericArrayAsText=false,
|
|
321
|
+
~isNumericArrayAsText=false,
|
|
322
322
|
)
|
|
323
323
|
switch f.fieldType {
|
|
324
324
|
| Enum(_) => `${(Text: Postgres.columnType :> string)}[]::${pgFieldType}`
|
|
@@ -329,10 +329,11 @@ let toSqlParams = (table: table, ~schema, ~pgSchema) => {
|
|
|
329
329
|
},
|
|
330
330
|
)
|
|
331
331
|
->ignore
|
|
332
|
-
dict->
|
|
332
|
+
dict->Dict.set(location, s.matches(schema->coerceSchema))
|
|
333
333
|
})
|
|
334
334
|
dict
|
|
335
|
-
| _ =>
|
|
335
|
+
| _ =>
|
|
336
|
+
JsError.throwWithMessage("Failed creating db schema. Expected an object schema for table")
|
|
336
337
|
}
|
|
337
338
|
)
|
|
338
339
|
|
|
@@ -350,7 +351,7 @@ Gets all single indicies
|
|
|
350
351
|
And maps the fields defined to their actual db name (some have _id suffix)
|
|
351
352
|
*/
|
|
352
353
|
let getSingleIndices = (table): array<string> => {
|
|
353
|
-
let indexFields = table.fields->Array.
|
|
354
|
+
let indexFields = table.fields->Array.filterMap(field =>
|
|
354
355
|
switch field {
|
|
355
356
|
| Field(field) if field.isIndex => Some(field->getDbFieldName)
|
|
356
357
|
| _ => None
|
|
@@ -361,17 +362,17 @@ let getSingleIndices = (table): array<string> => {
|
|
|
361
362
|
->getUnfilteredCompositeIndicesUnsafe
|
|
362
363
|
//get all composite indices with only 1 field defined
|
|
363
364
|
//this is still a single index
|
|
364
|
-
->Array.
|
|
365
|
+
->Array.filterMap(cidx =>
|
|
365
366
|
switch cidx {
|
|
366
367
|
| [{fieldName}] => Some([fieldName])
|
|
367
368
|
| _ => None
|
|
368
369
|
}
|
|
369
370
|
)
|
|
370
371
|
->Array.concat([indexFields])
|
|
371
|
-
->Array.
|
|
372
|
-
->Set.
|
|
373
|
-
->Set.
|
|
374
|
-
->
|
|
372
|
+
->Array.flat
|
|
373
|
+
->Set.fromArray
|
|
374
|
+
->Set.toArray
|
|
375
|
+
->Array.toSorted(String.compare)
|
|
375
376
|
}
|
|
376
377
|
|
|
377
378
|
/*
|
|
@@ -381,5 +382,5 @@ And maps the fields defined to their actual db name (some have _id suffix)
|
|
|
381
382
|
let getCompositeIndices = (table): array<array<compositeIndexField>> => {
|
|
382
383
|
table
|
|
383
384
|
->getUnfilteredCompositeIndicesUnsafe
|
|
384
|
-
->Array.
|
|
385
|
+
->Array.filter(ind => ind->Array.length > 1)
|
|
385
386
|
}
|