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/Table.res.mjs
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
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
|
|
9
|
-
import * as Caml_exceptions from "rescript/lib/es6/caml_exceptions.js";
|
|
3
|
+
import * as Utils from "../Utils.res.mjs";
|
|
4
|
+
import * as Belt_Array from "@rescript/runtime/lib/es6/Belt_Array.js";
|
|
5
|
+
import * as Stdlib_Array from "@rescript/runtime/lib/es6/Stdlib_Array.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_string from "@rescript/runtime/lib/es6/Primitive_string.js";
|
|
10
9
|
import * as S$RescriptSchema from "rescript-schema/src/S.res.mjs";
|
|
10
|
+
import * as Primitive_exceptions from "@rescript/runtime/lib/es6/Primitive_exceptions.js";
|
|
11
11
|
|
|
12
12
|
function makeEnumConfig(name, variants) {
|
|
13
13
|
return {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
name: name,
|
|
15
|
+
variants: variants,
|
|
16
|
+
schema: S$RescriptSchema.$$enum(variants)
|
|
17
|
+
};
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
function mkField(fieldName, fieldType, fieldSchema, $$default, isArrayOpt, isNullableOpt, isPrimaryKeyOpt, isIndexOpt, linkedEntity) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
let isArray = isArrayOpt !== undefined ? isArrayOpt : false;
|
|
22
|
+
let isNullable = isNullableOpt !== undefined ? isNullableOpt : false;
|
|
23
|
+
let isPrimaryKey = isPrimaryKeyOpt !== undefined ? isPrimaryKeyOpt : false;
|
|
24
|
+
let isIndex = isIndexOpt !== undefined ? isIndexOpt : false;
|
|
25
25
|
return {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
TAG: "Field",
|
|
27
|
+
_0: {
|
|
28
|
+
fieldName: fieldName,
|
|
29
|
+
fieldType: fieldType,
|
|
30
|
+
fieldSchema: fieldSchema,
|
|
31
|
+
isArray: isArray,
|
|
32
|
+
isNullable: isNullable,
|
|
33
|
+
isPrimaryKey: isPrimaryKey,
|
|
34
|
+
isIndex: isIndex,
|
|
35
|
+
linkedEntity: linkedEntity,
|
|
36
|
+
defaultValue: $$default
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
function mkDerivedFromField(fieldName, derivedFromEntity, derivedFromField) {
|
|
42
42
|
return {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
TAG: "DerivedFrom",
|
|
44
|
+
_0: {
|
|
45
|
+
fieldName: fieldName,
|
|
46
|
+
derivedFromEntity: derivedFromEntity,
|
|
47
|
+
derivedFromField: derivedFromField
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
function getUserDefinedFieldName(fieldOrDerived) {
|
|
@@ -54,11 +54,11 @@ function getUserDefinedFieldName(fieldOrDerived) {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
function isLinkedEntityField(field) {
|
|
57
|
-
return
|
|
57
|
+
return Stdlib_Option.isSome(field.linkedEntity);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
function getDbFieldName(field) {
|
|
61
|
-
if (
|
|
61
|
+
if (Stdlib_Option.isSome(field.linkedEntity)) {
|
|
62
62
|
return field.fieldName + "_id";
|
|
63
63
|
} else {
|
|
64
64
|
return field.fieldName;
|
|
@@ -74,334 +74,318 @@ function getFieldName(fieldOrDerived) {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
function getPgFieldType(fieldType, pgSchema, isArray, isNumericArrayAsText, isNullable) {
|
|
77
|
-
|
|
77
|
+
let columnType;
|
|
78
78
|
if (typeof fieldType !== "object") {
|
|
79
79
|
switch (fieldType) {
|
|
80
80
|
case "String" :
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
columnType = "TEXT";
|
|
82
|
+
break;
|
|
83
83
|
case "Boolean" :
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
columnType = "BOOLEAN";
|
|
85
|
+
break;
|
|
86
86
|
case "Int32" :
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
columnType = "INTEGER";
|
|
88
|
+
break;
|
|
89
89
|
case "Number" :
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
columnType = "DOUBLE PRECISION";
|
|
91
|
+
break;
|
|
92
92
|
case "Serial" :
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
columnType = "SERIAL";
|
|
94
|
+
break;
|
|
95
95
|
case "BigSerial" :
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
columnType = "BIGSERIAL";
|
|
97
|
+
break;
|
|
98
98
|
case "Json" :
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
columnType = "JSONB";
|
|
100
|
+
break;
|
|
101
101
|
case "Date" :
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
columnType = isNullable ? "TIMESTAMP WITH TIME ZONE NULL" : "TIMESTAMP WITH TIME ZONE";
|
|
103
|
+
break;
|
|
104
104
|
default:
|
|
105
105
|
columnType = "BIGINT";
|
|
106
106
|
}
|
|
107
107
|
} else {
|
|
108
108
|
switch (fieldType.type) {
|
|
109
109
|
case "BigInt" :
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
let precision = fieldType.precision;
|
|
111
|
+
columnType = "NUMERIC" + (
|
|
112
|
+
precision !== undefined ? `(` + precision.toString() + `, 0)` : ""
|
|
113
|
+
);
|
|
114
|
+
break;
|
|
115
115
|
case "BigDecimal" :
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
116
|
+
let config = fieldType.config;
|
|
117
|
+
columnType = "NUMERIC" + (
|
|
118
|
+
config !== undefined ? `(` + config[0].toString() + `, ` + config[1].toString() + `)` : ""
|
|
119
|
+
);
|
|
120
|
+
break;
|
|
121
121
|
case "Enum" :
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
columnType = `"` + pgSchema + `".` + fieldType.config.name;
|
|
123
|
+
break;
|
|
124
124
|
case "Entity" :
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
columnType = "TEXT";
|
|
126
|
+
break;
|
|
128
127
|
}
|
|
129
128
|
}
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
let isNumericAsText = isArray && isNumericArrayAsText;
|
|
130
|
+
let columnType$1 = columnType === "NUMERIC" && isNumericAsText ? "TEXT" : columnType;
|
|
132
131
|
return columnType$1 + (
|
|
133
|
-
|
|
134
|
-
|
|
132
|
+
isArray ? "[]" : ""
|
|
133
|
+
);
|
|
135
134
|
}
|
|
136
135
|
|
|
137
136
|
function mkTable(tableName, compositeIndicesOpt, fields) {
|
|
138
|
-
|
|
137
|
+
let compositeIndices = compositeIndicesOpt !== undefined ? compositeIndicesOpt : [];
|
|
139
138
|
return {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
139
|
+
tableName: tableName,
|
|
140
|
+
fields: fields,
|
|
141
|
+
compositeIndices: compositeIndices
|
|
142
|
+
};
|
|
144
143
|
}
|
|
145
144
|
|
|
146
145
|
function getPrimaryKeyFieldNames(table) {
|
|
147
|
-
return
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}));
|
|
146
|
+
return Stdlib_Array.filterMap(table.fields, field => {
|
|
147
|
+
if (field.TAG !== "Field") {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
let match = field._0;
|
|
151
|
+
if (match.isPrimaryKey) {
|
|
152
|
+
return match.fieldName;
|
|
153
|
+
}
|
|
154
|
+
});
|
|
157
155
|
}
|
|
158
156
|
|
|
159
157
|
function getFields(table) {
|
|
160
|
-
return
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}));
|
|
158
|
+
return Stdlib_Array.filterMap(table.fields, field => {
|
|
159
|
+
if (field.TAG === "Field") {
|
|
160
|
+
return field._0;
|
|
161
|
+
}
|
|
162
|
+
});
|
|
166
163
|
}
|
|
167
164
|
|
|
168
165
|
function getFieldNames(table) {
|
|
169
|
-
return
|
|
166
|
+
return getFields(table).map(getDbFieldName);
|
|
170
167
|
}
|
|
171
168
|
|
|
172
169
|
function getNonDefaultFields(table) {
|
|
173
|
-
return
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}));
|
|
170
|
+
return Stdlib_Array.filterMap(table.fields, field => {
|
|
171
|
+
if (field.TAG !== "Field") {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
let field$1 = field._0;
|
|
175
|
+
if (Stdlib_Option.isNone(field$1.defaultValue)) {
|
|
176
|
+
return field$1;
|
|
177
|
+
}
|
|
178
|
+
});
|
|
183
179
|
}
|
|
184
180
|
|
|
185
181
|
function getLinkedEntityFields(table) {
|
|
186
|
-
return
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}));
|
|
182
|
+
return Stdlib_Array.filterMap(table.fields, field => {
|
|
183
|
+
if (field.TAG !== "Field") {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
let field$1 = field._0;
|
|
187
|
+
let linkedEntityName = field$1.linkedEntity;
|
|
188
|
+
if (linkedEntityName !== undefined) {
|
|
189
|
+
return [
|
|
190
|
+
field$1,
|
|
191
|
+
linkedEntityName
|
|
192
|
+
];
|
|
193
|
+
}
|
|
194
|
+
});
|
|
200
195
|
}
|
|
201
196
|
|
|
202
197
|
function getDerivedFromFields(table) {
|
|
203
|
-
return
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
198
|
+
return Stdlib_Array.filterMap(table.fields, field => {
|
|
199
|
+
if (field.TAG === "Field") {
|
|
200
|
+
return;
|
|
201
|
+
} else {
|
|
202
|
+
return field._0;
|
|
203
|
+
}
|
|
204
|
+
});
|
|
210
205
|
}
|
|
211
206
|
|
|
212
207
|
function getNonDefaultFieldNames(table) {
|
|
213
|
-
return
|
|
208
|
+
return getNonDefaultFields(table).map(getDbFieldName);
|
|
214
209
|
}
|
|
215
210
|
|
|
216
211
|
function getFieldByName(table, fieldName) {
|
|
217
|
-
return
|
|
218
|
-
return field._0.fieldName === fieldName;
|
|
219
|
-
}));
|
|
212
|
+
return table.fields.find(field => field._0.fieldName === fieldName);
|
|
220
213
|
}
|
|
221
214
|
|
|
222
215
|
function getFieldByDbName(table, dbFieldName) {
|
|
223
|
-
return
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
216
|
+
return table.fields.find(field => {
|
|
217
|
+
let tmp;
|
|
218
|
+
tmp = field.TAG === "Field" ? getDbFieldName(field._0) : field._0.fieldName;
|
|
219
|
+
return tmp === dbFieldName;
|
|
220
|
+
});
|
|
228
221
|
}
|
|
229
222
|
|
|
230
|
-
|
|
223
|
+
let NonExistingTableField = /* @__PURE__ */Primitive_exceptions.create("Table.NonExistingTableField");
|
|
231
224
|
|
|
232
225
|
function getUnfilteredCompositeIndicesUnsafe(table) {
|
|
233
|
-
return
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
}));
|
|
251
|
-
}));
|
|
226
|
+
return table.compositeIndices.map(compositeIndex => compositeIndex.map(indexField => {
|
|
227
|
+
let field = getFieldByName(table, indexField.fieldName);
|
|
228
|
+
let dbFieldName;
|
|
229
|
+
if (field !== undefined) {
|
|
230
|
+
dbFieldName = getFieldName(field);
|
|
231
|
+
} else {
|
|
232
|
+
throw {
|
|
233
|
+
RE_EXN_ID: NonExistingTableField,
|
|
234
|
+
_1: indexField.fieldName,
|
|
235
|
+
Error: new Error()
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
fieldName: dbFieldName,
|
|
240
|
+
direction: indexField.direction
|
|
241
|
+
};
|
|
242
|
+
}));
|
|
252
243
|
}
|
|
253
244
|
|
|
254
245
|
function toSqlParams(table, schema, pgSchema) {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
246
|
+
let quotedFieldNames = [];
|
|
247
|
+
let quotedNonPrimaryFieldNames = [];
|
|
248
|
+
let arrayFieldTypes = [];
|
|
249
|
+
let hasArrayField = {
|
|
259
250
|
contents: false
|
|
260
251
|
};
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
252
|
+
let dbSchema = S$RescriptSchema.schema(s => {
|
|
253
|
+
let match = schema.t;
|
|
254
|
+
if (typeof match !== "object") {
|
|
255
|
+
return Stdlib_JsError.throwWithMessage("Failed creating db schema. Expected an object schema for table");
|
|
256
|
+
}
|
|
257
|
+
if (match.TAG !== "object") {
|
|
258
|
+
return Stdlib_JsError.throwWithMessage("Failed creating db schema. Expected an object schema for table");
|
|
259
|
+
}
|
|
260
|
+
let dict = {};
|
|
261
|
+
Belt_Array.forEach(match.items, param => {
|
|
262
|
+
let inlinedLocation = param.inlinedLocation;
|
|
263
|
+
let location = param.location;
|
|
264
|
+
let coerceSchema = schema => {
|
|
265
|
+
let child = schema.t;
|
|
266
|
+
if (typeof child !== "object") {
|
|
267
|
+
switch (child) {
|
|
268
|
+
case "bigint" :
|
|
269
|
+
return Utils.$$BigInt.schema;
|
|
270
|
+
case "boolean" :
|
|
271
|
+
return S$RescriptSchema.union([
|
|
272
|
+
S$RescriptSchema.shape(S$RescriptSchema.literal(1), param => true),
|
|
273
|
+
S$RescriptSchema.shape(S$RescriptSchema.literal(0), param => false)
|
|
274
|
+
]);
|
|
275
|
+
default:
|
|
276
|
+
return schema;
|
|
277
|
+
}
|
|
278
|
+
} else {
|
|
279
|
+
switch (child.TAG) {
|
|
280
|
+
case "option" :
|
|
281
|
+
case "null" :
|
|
282
|
+
return S$RescriptSchema.$$null(coerceSchema(child._0));
|
|
283
|
+
case "array" :
|
|
284
|
+
hasArrayField.contents = true;
|
|
285
|
+
return S$RescriptSchema.array(coerceSchema(child._0));
|
|
286
|
+
case "JSON" :
|
|
287
|
+
hasArrayField.contents = true;
|
|
288
|
+
return schema;
|
|
289
|
+
default:
|
|
290
|
+
return schema;
|
|
291
|
+
}
|
|
265
292
|
}
|
|
266
|
-
|
|
267
|
-
|
|
293
|
+
};
|
|
294
|
+
let field = getFieldByDbName(table, location);
|
|
295
|
+
let field$1;
|
|
296
|
+
if (field !== undefined) {
|
|
297
|
+
field$1 = field;
|
|
298
|
+
} else {
|
|
299
|
+
throw {
|
|
300
|
+
RE_EXN_ID: NonExistingTableField,
|
|
301
|
+
_1: location,
|
|
302
|
+
Error: new Error()
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
quotedFieldNames.push(inlinedLocation);
|
|
306
|
+
if (field$1.TAG === "Field") {
|
|
307
|
+
if (field$1._0.isPrimaryKey) {
|
|
308
|
+
|
|
309
|
+
} else {
|
|
310
|
+
quotedNonPrimaryFieldNames.push(inlinedLocation);
|
|
268
311
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
default:
|
|
289
|
-
return schema;
|
|
290
|
-
}
|
|
291
|
-
} else {
|
|
292
|
-
switch (child.TAG) {
|
|
293
|
-
case "option" :
|
|
294
|
-
case "null" :
|
|
295
|
-
return S$RescriptSchema.$$null(coerceSchema(child._0));
|
|
296
|
-
case "array" :
|
|
297
|
-
hasArrayField.contents = true;
|
|
298
|
-
return S$RescriptSchema.array(coerceSchema(child._0));
|
|
299
|
-
case "JSON" :
|
|
300
|
-
hasArrayField.contents = true;
|
|
301
|
-
return schema;
|
|
302
|
-
default:
|
|
303
|
-
return schema;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
};
|
|
307
|
-
var field = getFieldByDbName(table, $$location);
|
|
308
|
-
var field$1;
|
|
309
|
-
if (field !== undefined) {
|
|
310
|
-
field$1 = field;
|
|
311
|
-
} else {
|
|
312
|
-
throw {
|
|
313
|
-
RE_EXN_ID: NonExistingTableField,
|
|
314
|
-
_1: $$location,
|
|
315
|
-
Error: new Error()
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
quotedFieldNames.push(inlinedLocation);
|
|
319
|
-
if (field$1.TAG === "Field") {
|
|
320
|
-
if (field$1._0.isPrimaryKey) {
|
|
321
|
-
|
|
322
|
-
} else {
|
|
323
|
-
quotedNonPrimaryFieldNames.push(inlinedLocation);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
var tmp;
|
|
327
|
-
if (field$1.TAG === "Field") {
|
|
328
|
-
var f = field$1._0;
|
|
329
|
-
var pgFieldType = getPgFieldType(f.fieldType, pgSchema, true, false, f.isNullable);
|
|
330
|
-
var match = f.fieldType;
|
|
331
|
-
tmp = typeof match !== "object" ? (
|
|
332
|
-
match === "Boolean" ? "INTEGER[]::" + pgFieldType : pgFieldType
|
|
333
|
-
) : (
|
|
334
|
-
match.type === "Enum" ? "TEXT[]::" + pgFieldType : pgFieldType
|
|
335
|
-
);
|
|
336
|
-
} else {
|
|
337
|
-
tmp = "TEXT[]";
|
|
338
|
-
}
|
|
339
|
-
arrayFieldTypes.push(tmp);
|
|
340
|
-
dict[$$location] = s.m(coerceSchema(param.schema));
|
|
341
|
-
}));
|
|
342
|
-
return dict;
|
|
343
|
-
});
|
|
312
|
+
}
|
|
313
|
+
let tmp;
|
|
314
|
+
if (field$1.TAG === "Field") {
|
|
315
|
+
let f = field$1._0;
|
|
316
|
+
let pgFieldType = getPgFieldType(f.fieldType, pgSchema, true, false, f.isNullable);
|
|
317
|
+
let match = f.fieldType;
|
|
318
|
+
tmp = typeof match !== "object" ? (
|
|
319
|
+
match === "Boolean" ? "INTEGER" + `[]::` + pgFieldType : pgFieldType
|
|
320
|
+
) : (
|
|
321
|
+
match.type === "Enum" ? "TEXT" + `[]::` + pgFieldType : pgFieldType
|
|
322
|
+
);
|
|
323
|
+
} else {
|
|
324
|
+
tmp = "TEXT[]";
|
|
325
|
+
}
|
|
326
|
+
arrayFieldTypes.push(tmp);
|
|
327
|
+
dict[location] = s.m(coerceSchema(param.schema));
|
|
328
|
+
});
|
|
329
|
+
return dict;
|
|
330
|
+
});
|
|
344
331
|
return {
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
332
|
+
dbSchema: dbSchema,
|
|
333
|
+
quotedFieldNames: quotedFieldNames,
|
|
334
|
+
quotedNonPrimaryFieldNames: quotedNonPrimaryFieldNames,
|
|
335
|
+
arrayFieldTypes: arrayFieldTypes,
|
|
336
|
+
hasArrayField: hasArrayField.contents
|
|
337
|
+
};
|
|
351
338
|
}
|
|
352
339
|
|
|
353
340
|
function getSingleIndices(table) {
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
})), [indexFields])))).sort();
|
|
341
|
+
let indexFields = Stdlib_Array.filterMap(table.fields, field => {
|
|
342
|
+
if (field.TAG !== "Field") {
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
let field$1 = field._0;
|
|
346
|
+
if (field$1.isIndex) {
|
|
347
|
+
return getDbFieldName(field$1);
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
return Array.from(new Set(Stdlib_Array.filterMap(getUnfilteredCompositeIndicesUnsafe(table), cidx => {
|
|
351
|
+
if (cidx.length !== 1) {
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
let match = cidx[0];
|
|
355
|
+
return [match.fieldName];
|
|
356
|
+
}).concat([indexFields]).flat())).toSorted(Primitive_string.compare);
|
|
371
357
|
}
|
|
372
358
|
|
|
373
359
|
function getCompositeIndices(table) {
|
|
374
|
-
return
|
|
375
|
-
return ind.length > 1;
|
|
376
|
-
}));
|
|
360
|
+
return getUnfilteredCompositeIndicesUnsafe(table).filter(ind => ind.length > 1);
|
|
377
361
|
}
|
|
378
362
|
|
|
379
|
-
|
|
363
|
+
let idFieldName = "id";
|
|
380
364
|
|
|
381
365
|
export {
|
|
382
|
-
makeEnumConfig
|
|
383
|
-
mkField
|
|
384
|
-
mkDerivedFromField
|
|
385
|
-
getUserDefinedFieldName
|
|
386
|
-
isLinkedEntityField
|
|
387
|
-
getDbFieldName
|
|
388
|
-
getFieldName
|
|
389
|
-
idFieldName
|
|
390
|
-
getPgFieldType
|
|
391
|
-
mkTable
|
|
392
|
-
getPrimaryKeyFieldNames
|
|
393
|
-
getFields
|
|
394
|
-
getFieldNames
|
|
395
|
-
getNonDefaultFields
|
|
396
|
-
getLinkedEntityFields
|
|
397
|
-
getDerivedFromFields
|
|
398
|
-
getNonDefaultFieldNames
|
|
399
|
-
getFieldByName
|
|
400
|
-
getFieldByDbName
|
|
401
|
-
NonExistingTableField
|
|
402
|
-
getUnfilteredCompositeIndicesUnsafe
|
|
403
|
-
toSqlParams
|
|
404
|
-
getSingleIndices
|
|
405
|
-
getCompositeIndices
|
|
366
|
+
makeEnumConfig,
|
|
367
|
+
mkField,
|
|
368
|
+
mkDerivedFromField,
|
|
369
|
+
getUserDefinedFieldName,
|
|
370
|
+
isLinkedEntityField,
|
|
371
|
+
getDbFieldName,
|
|
372
|
+
getFieldName,
|
|
373
|
+
idFieldName,
|
|
374
|
+
getPgFieldType,
|
|
375
|
+
mkTable,
|
|
376
|
+
getPrimaryKeyFieldNames,
|
|
377
|
+
getFields,
|
|
378
|
+
getFieldNames,
|
|
379
|
+
getNonDefaultFields,
|
|
380
|
+
getLinkedEntityFields,
|
|
381
|
+
getDerivedFromFields,
|
|
382
|
+
getNonDefaultFieldNames,
|
|
383
|
+
getFieldByName,
|
|
384
|
+
getFieldByDbName,
|
|
385
|
+
NonExistingTableField,
|
|
386
|
+
getUnfilteredCompositeIndicesUnsafe,
|
|
387
|
+
toSqlParams,
|
|
388
|
+
getSingleIndices,
|
|
389
|
+
getCompositeIndices,
|
|
406
390
|
}
|
|
407
|
-
/*
|
|
391
|
+
/* Utils Not a pure module */
|