envio 2.22.0 → 2.22.1
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/package.json +7 -6
- package/src/Address.res.js +30 -0
- package/src/ChainMap.res.js +77 -0
- package/src/Envio.res.js +16 -0
- package/src/ErrorHandling.res.js +56 -0
- package/src/EventUtils.res.js +75 -0
- package/src/EvmTypes.res.js +16 -0
- package/src/FetchState.res.js +969 -0
- package/src/Hasura.res.js +245 -0
- package/src/Internal.res.js +50 -0
- package/src/LazyLoader.res.js +117 -0
- package/src/LoadManager.res.js +124 -0
- package/src/LogSelection.res.js +203 -0
- package/src/Logging.res.js +247 -0
- package/src/Persistence.res.js +90 -0
- package/src/PgStorage.res.js +125 -0
- package/src/Prometheus.res.js +750 -0
- package/src/ReorgDetection.res.js +223 -0
- package/src/Throttler.res.js +60 -0
- package/src/Time.res.js +41 -0
- package/src/TopicFilter.res.js +86 -0
- package/src/Utils.res.js +527 -0
- package/src/bindings/BigDecimal.res.js +41 -0
- package/src/bindings/BigInt.res.js +138 -0
- package/src/bindings/Ethers.res.js +109 -0
- package/src/bindings/Express.res.js +2 -0
- package/src/bindings/Hrtime.res.js +66 -0
- package/src/bindings/NodeJs.res.js +29 -0
- package/src/bindings/Pino.res.js +95 -0
- package/src/bindings/Postgres.res.js +16 -0
- package/src/bindings/PromClient.res.js +17 -0
- package/src/bindings/Promise.res.js +25 -0
- package/src/bindings/SDSL.res.js +8 -0
- package/src/bindings/Viem.res.js +45 -0
- package/src/db/EntityHistory.res.js +307 -0
- package/src/db/Schema.res.js +54 -0
- package/src/db/Table.res.js +365 -0
- package/src/sources/Fuel.res.js +28 -0
- package/src/sources/HyperFuel.res.js +193 -0
- package/src/sources/HyperFuelClient.res.js +19 -0
- package/src/sources/HyperSync.res.js +301 -0
- package/src/sources/HyperSyncClient.res.js +99 -0
- package/src/sources/HyperSyncJsonApi.res.js +259 -0
- package/src/sources/Rpc.res.js +198 -0
- package/src/sources/Source.res.js +9 -0
- package/src/sources/SourceManager.res.js +366 -0
- package/src/vendored/Rest.res.js +574 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var Utils = require("./Utils.res.js");
|
|
5
|
+
var Js_exn = require("rescript/lib/js/js_exn.js");
|
|
6
|
+
var Belt_Array = require("rescript/lib/js/belt_Array.js");
|
|
7
|
+
var Belt_Option = require("rescript/lib/js/belt_Option.js");
|
|
8
|
+
var Caml_option = require("rescript/lib/js/caml_option.js");
|
|
9
|
+
var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js");
|
|
10
|
+
|
|
11
|
+
var MissingRequiredTopic0 = /* @__PURE__ */Caml_exceptions.create("LogSelection.MissingRequiredTopic0");
|
|
12
|
+
|
|
13
|
+
function makeTopicSelection(topic0, topic1Opt, topic2Opt, topic3Opt) {
|
|
14
|
+
var topic1 = topic1Opt !== undefined ? topic1Opt : [];
|
|
15
|
+
var topic2 = topic2Opt !== undefined ? topic2Opt : [];
|
|
16
|
+
var topic3 = topic3Opt !== undefined ? topic3Opt : [];
|
|
17
|
+
if (Utils.$$Array.isEmpty(topic0)) {
|
|
18
|
+
return {
|
|
19
|
+
TAG: "Error",
|
|
20
|
+
_0: {
|
|
21
|
+
RE_EXN_ID: MissingRequiredTopic0
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
} else {
|
|
25
|
+
return {
|
|
26
|
+
TAG: "Ok",
|
|
27
|
+
_0: {
|
|
28
|
+
topic0: topic0,
|
|
29
|
+
topic1: topic1,
|
|
30
|
+
topic2: topic2,
|
|
31
|
+
topic3: topic3
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function hasFilters(param) {
|
|
38
|
+
return Belt_Option.isSome(Caml_option.undefined_to_opt([
|
|
39
|
+
param.topic1,
|
|
40
|
+
param.topic2,
|
|
41
|
+
param.topic3
|
|
42
|
+
].find(function (topic) {
|
|
43
|
+
return !Utils.$$Array.isEmpty(topic);
|
|
44
|
+
})));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function compressTopicSelections(topicSelections) {
|
|
48
|
+
var topic0sOfSelectionsWithoutFilters = [];
|
|
49
|
+
var selectionsWithFilters = [];
|
|
50
|
+
Belt_Array.forEach(topicSelections, (function (selection) {
|
|
51
|
+
if (hasFilters(selection)) {
|
|
52
|
+
selectionsWithFilters.push(selection);
|
|
53
|
+
return ;
|
|
54
|
+
} else {
|
|
55
|
+
return Belt_Array.forEach(selection.topic0, (function (topic0) {
|
|
56
|
+
topic0sOfSelectionsWithoutFilters.push(topic0);
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
}));
|
|
60
|
+
if (topic0sOfSelectionsWithoutFilters.length === 0) {
|
|
61
|
+
return selectionsWithFilters;
|
|
62
|
+
}
|
|
63
|
+
var selectionWithoutFilters_topic1 = [];
|
|
64
|
+
var selectionWithoutFilters_topic2 = [];
|
|
65
|
+
var selectionWithoutFilters_topic3 = [];
|
|
66
|
+
var selectionWithoutFilters = {
|
|
67
|
+
topic0: topic0sOfSelectionsWithoutFilters,
|
|
68
|
+
topic1: selectionWithoutFilters_topic1,
|
|
69
|
+
topic2: selectionWithoutFilters_topic2,
|
|
70
|
+
topic3: selectionWithoutFilters_topic3
|
|
71
|
+
};
|
|
72
|
+
return Belt_Array.concat([selectionWithoutFilters], selectionsWithFilters);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function make(addresses, topicSelections) {
|
|
76
|
+
var topicSelections$1 = compressTopicSelections(topicSelections);
|
|
77
|
+
return {
|
|
78
|
+
addresses: addresses,
|
|
79
|
+
topicSelections: topicSelections$1
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
var emptyTopics = [];
|
|
84
|
+
|
|
85
|
+
function noopGetter(param) {
|
|
86
|
+
return emptyTopics;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function parseEventFiltersOrThrow(eventFilters, sighash, params, topic1Opt, topic2Opt, topic3Opt) {
|
|
90
|
+
var topic1 = topic1Opt !== undefined ? topic1Opt : noopGetter;
|
|
91
|
+
var topic2 = topic2Opt !== undefined ? topic2Opt : noopGetter;
|
|
92
|
+
var topic3 = topic3Opt !== undefined ? topic3Opt : noopGetter;
|
|
93
|
+
var filterByAddresses = {
|
|
94
|
+
contents: false
|
|
95
|
+
};
|
|
96
|
+
var topic0 = [sighash];
|
|
97
|
+
var $$default = {
|
|
98
|
+
topic0: topic0,
|
|
99
|
+
topic1: emptyTopics,
|
|
100
|
+
topic2: emptyTopics,
|
|
101
|
+
topic3: emptyTopics
|
|
102
|
+
};
|
|
103
|
+
var parse = function (eventFilters) {
|
|
104
|
+
var tmp;
|
|
105
|
+
tmp = !Array.isArray(eventFilters) && (eventFilters === null || typeof eventFilters !== "object") && typeof eventFilters !== "number" && typeof eventFilters !== "string" && typeof eventFilters !== "boolean" ? [eventFilters] : (
|
|
106
|
+
Array.isArray(eventFilters) ? (
|
|
107
|
+
eventFilters.length !== 0 ? eventFilters : [{}]
|
|
108
|
+
) : [eventFilters]
|
|
109
|
+
);
|
|
110
|
+
return tmp.map(function (eventFilter) {
|
|
111
|
+
if (!Array.isArray(eventFilter) && (eventFilter === null || typeof eventFilter !== "object") && typeof eventFilter !== "number" && typeof eventFilter !== "string" && typeof eventFilter !== "boolean") {
|
|
112
|
+
return Js_exn.raiseError("Invalid event filters configuration. Expected an object");
|
|
113
|
+
}
|
|
114
|
+
if (!(typeof eventFilter === "object" && !Array.isArray(eventFilter))) {
|
|
115
|
+
return Js_exn.raiseError("Invalid event filters configuration. Expected an object");
|
|
116
|
+
}
|
|
117
|
+
var filterKeys = Object.keys(eventFilter);
|
|
118
|
+
if (filterKeys.length !== 0) {
|
|
119
|
+
filterKeys.forEach(function (key) {
|
|
120
|
+
if (!params.includes(key)) {
|
|
121
|
+
return Js_exn.raiseError("Invalid event filters configuration. The event doesn't have an indexed parameter \"" + key + "\" and can't use it for filtering");
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
});
|
|
125
|
+
return {
|
|
126
|
+
topic0: topic0,
|
|
127
|
+
topic1: topic1(eventFilter),
|
|
128
|
+
topic2: topic2(eventFilter),
|
|
129
|
+
topic3: topic3(eventFilter)
|
|
130
|
+
};
|
|
131
|
+
} else {
|
|
132
|
+
return $$default;
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
var getEventFiltersOrThrow;
|
|
137
|
+
if (eventFilters !== undefined) {
|
|
138
|
+
if (typeof eventFilters === "function") {
|
|
139
|
+
try {
|
|
140
|
+
var args = Object.defineProperty({
|
|
141
|
+
chainId: 0,
|
|
142
|
+
addresses: []
|
|
143
|
+
}, "addresses", {
|
|
144
|
+
get: (function () {
|
|
145
|
+
filterByAddresses.contents = true;
|
|
146
|
+
return [];
|
|
147
|
+
})
|
|
148
|
+
});
|
|
149
|
+
eventFilters(args);
|
|
150
|
+
}
|
|
151
|
+
catch (exn){
|
|
152
|
+
|
|
153
|
+
}
|
|
154
|
+
getEventFiltersOrThrow = filterByAddresses.contents ? (function (chain) {
|
|
155
|
+
return {
|
|
156
|
+
TAG: "Dynamic",
|
|
157
|
+
_0: (function (addresses) {
|
|
158
|
+
return parse(eventFilters({
|
|
159
|
+
chainId: chain,
|
|
160
|
+
addresses: addresses
|
|
161
|
+
}));
|
|
162
|
+
})
|
|
163
|
+
};
|
|
164
|
+
}) : (function (chain) {
|
|
165
|
+
return {
|
|
166
|
+
TAG: "Static",
|
|
167
|
+
_0: parse(eventFilters({
|
|
168
|
+
chainId: chain,
|
|
169
|
+
addresses: []
|
|
170
|
+
}))
|
|
171
|
+
};
|
|
172
|
+
});
|
|
173
|
+
} else {
|
|
174
|
+
var $$static = {
|
|
175
|
+
TAG: "Static",
|
|
176
|
+
_0: parse(eventFilters)
|
|
177
|
+
};
|
|
178
|
+
getEventFiltersOrThrow = (function (param) {
|
|
179
|
+
return $$static;
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
} else {
|
|
183
|
+
var $$static$1 = {
|
|
184
|
+
TAG: "Static",
|
|
185
|
+
_0: [$$default]
|
|
186
|
+
};
|
|
187
|
+
getEventFiltersOrThrow = (function (param) {
|
|
188
|
+
return $$static$1;
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
getEventFiltersOrThrow: getEventFiltersOrThrow,
|
|
193
|
+
filterByAddresses: filterByAddresses.contents
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
exports.MissingRequiredTopic0 = MissingRequiredTopic0;
|
|
198
|
+
exports.makeTopicSelection = makeTopicSelection;
|
|
199
|
+
exports.hasFilters = hasFilters;
|
|
200
|
+
exports.compressTopicSelections = compressTopicSelections;
|
|
201
|
+
exports.make = make;
|
|
202
|
+
exports.parseEventFiltersOrThrow = parseEventFiltersOrThrow;
|
|
203
|
+
/* Utils Not a pure module */
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var Pino = require("./bindings/Pino.res.js");
|
|
5
|
+
var Pino$1 = require("pino");
|
|
6
|
+
var Js_exn = require("rescript/lib/js/js_exn.js");
|
|
7
|
+
var Js_dict = require("rescript/lib/js/js_dict.js");
|
|
8
|
+
var Caml_obj = require("rescript/lib/js/caml_obj.js");
|
|
9
|
+
var Internal = require("./Internal.res.js");
|
|
10
|
+
var Caml_option = require("rescript/lib/js/caml_option.js");
|
|
11
|
+
var EcsPinoFormat = require("@elastic/ecs-pino-format");
|
|
12
|
+
|
|
13
|
+
var logLevels = Js_dict.fromArray([
|
|
14
|
+
[
|
|
15
|
+
"udebug",
|
|
16
|
+
32
|
|
17
|
+
],
|
|
18
|
+
[
|
|
19
|
+
"uinfo",
|
|
20
|
+
34
|
|
21
|
+
],
|
|
22
|
+
[
|
|
23
|
+
"uwarn",
|
|
24
|
+
36
|
|
25
|
+
],
|
|
26
|
+
[
|
|
27
|
+
"uerror",
|
|
28
|
+
38
|
|
29
|
+
],
|
|
30
|
+
[
|
|
31
|
+
"trace",
|
|
32
|
+
10
|
|
33
|
+
],
|
|
34
|
+
[
|
|
35
|
+
"debug",
|
|
36
|
+
20
|
|
37
|
+
],
|
|
38
|
+
[
|
|
39
|
+
"info",
|
|
40
|
+
30
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
"warn",
|
|
44
|
+
40
|
|
45
|
+
],
|
|
46
|
+
[
|
|
47
|
+
"error",
|
|
48
|
+
50
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
"fatal",
|
|
52
|
+
60
|
|
53
|
+
]
|
|
54
|
+
]);
|
|
55
|
+
|
|
56
|
+
var logger = {
|
|
57
|
+
contents: undefined
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
function makeLogger(logStrategy, logFilePath, defaultFileLogLevel, userLogLevel) {
|
|
61
|
+
var pinoFile_target = "pino/file";
|
|
62
|
+
var pinoFile_options = Caml_option.some(Pino.Transport.makeTransportOptions({
|
|
63
|
+
destination: logFilePath,
|
|
64
|
+
append: true,
|
|
65
|
+
mkdir: true
|
|
66
|
+
}));
|
|
67
|
+
var pinoFile_level = defaultFileLogLevel;
|
|
68
|
+
var pinoFile = {
|
|
69
|
+
target: pinoFile_target,
|
|
70
|
+
options: pinoFile_options,
|
|
71
|
+
level: pinoFile_level
|
|
72
|
+
};
|
|
73
|
+
var makeMultiStreamLogger = function (none, none$1) {
|
|
74
|
+
return Pino.MultiStreamLogger.make(userLogLevel, logLevels, none, none$1, defaultFileLogLevel);
|
|
75
|
+
};
|
|
76
|
+
switch (logStrategy) {
|
|
77
|
+
case "ecs-file" :
|
|
78
|
+
var newrecord = Caml_obj.obj_dup(EcsPinoFormat());
|
|
79
|
+
return Pino$1((newrecord.customLevels = logLevels, newrecord), Pino$1.transport(pinoFile));
|
|
80
|
+
case "ecs-console" :
|
|
81
|
+
var newrecord$1 = Caml_obj.obj_dup(EcsPinoFormat());
|
|
82
|
+
return Pino$1((newrecord$1.customLevels = logLevels, newrecord$1.level = userLogLevel, newrecord$1));
|
|
83
|
+
case "ecs-console-multistream" :
|
|
84
|
+
return makeMultiStreamLogger(undefined, EcsPinoFormat());
|
|
85
|
+
case "file-only" :
|
|
86
|
+
return Pino$1({
|
|
87
|
+
level: defaultFileLogLevel,
|
|
88
|
+
customLevels: logLevels
|
|
89
|
+
}, Pino$1.transport(pinoFile));
|
|
90
|
+
case "console-raw" :
|
|
91
|
+
case "console-pretty" :
|
|
92
|
+
return makeMultiStreamLogger(undefined, undefined);
|
|
93
|
+
case "both-prettyconsole" :
|
|
94
|
+
return makeMultiStreamLogger(logFilePath, undefined);
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function setLogger(l) {
|
|
100
|
+
logger.contents = l;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function getLogger() {
|
|
104
|
+
var logger$1 = logger.contents;
|
|
105
|
+
if (logger$1 !== undefined) {
|
|
106
|
+
return logger$1;
|
|
107
|
+
} else {
|
|
108
|
+
return Js_exn.raiseError("Unreachable code. Logger not initialized");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function setLogLevel(level) {
|
|
113
|
+
getLogger().level = level;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function trace(message) {
|
|
117
|
+
getLogger().trace(Pino.createPinoMessage(message));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function debug(message) {
|
|
121
|
+
getLogger().debug(Pino.createPinoMessage(message));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function info(message) {
|
|
125
|
+
getLogger().info(Pino.createPinoMessage(message));
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function warn(message) {
|
|
129
|
+
getLogger().warn(Pino.createPinoMessage(message));
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function error(message) {
|
|
133
|
+
getLogger().error(Pino.createPinoMessage(message));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function errorWithExn(error, message) {
|
|
137
|
+
getLogger().error(Pino.createPinoMessageWithError(message, error));
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function fatal(message) {
|
|
141
|
+
getLogger().fatal(Pino.createPinoMessage(message));
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function childTrace(logger, params) {
|
|
145
|
+
logger.trace(Pino.createPinoMessage(params));
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function childDebug(logger, params) {
|
|
149
|
+
logger.debug(Pino.createPinoMessage(params));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function childInfo(logger, params) {
|
|
153
|
+
logger.info(Pino.createPinoMessage(params));
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function childWarn(logger, params) {
|
|
157
|
+
logger.warn(Pino.createPinoMessage(params));
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function childError(logger, params) {
|
|
161
|
+
logger.error(Pino.createPinoMessage(params));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function childErrorWithExn(logger, error, params) {
|
|
165
|
+
logger.error(Pino.createPinoMessageWithError(params, error));
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function childFatal(logger, params) {
|
|
169
|
+
logger.fatal(Pino.createPinoMessage(params));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function createChild(params) {
|
|
173
|
+
return getLogger().child(Pino.createChildParams(params));
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function createChildFrom(logger, params) {
|
|
177
|
+
return logger.child(Pino.createChildParams(params));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function getEventLogger(eventItem) {
|
|
181
|
+
var l = eventItem.loggerCache;
|
|
182
|
+
if (l !== undefined) {
|
|
183
|
+
return l;
|
|
184
|
+
}
|
|
185
|
+
var l$1 = getLogger().child(Pino.createChildParams({
|
|
186
|
+
contractName: eventItem.eventConfig.contractName,
|
|
187
|
+
eventName: eventItem.eventConfig.name,
|
|
188
|
+
chainId: eventItem.chain,
|
|
189
|
+
block: eventItem.blockNumber,
|
|
190
|
+
logIndex: eventItem.logIndex
|
|
191
|
+
}));
|
|
192
|
+
eventItem.loggerCache = l$1;
|
|
193
|
+
return l$1;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function logForItem(eventItem, level, message, params) {
|
|
197
|
+
return getEventLogger(eventItem)[level](params, message);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function getUserLogger(eventItem) {
|
|
201
|
+
return {
|
|
202
|
+
debug: (function (message, params) {
|
|
203
|
+
getEventLogger(eventItem)["udebug"](params, message);
|
|
204
|
+
}),
|
|
205
|
+
info: (function (message, params) {
|
|
206
|
+
getEventLogger(eventItem)["uinfo"](params, message);
|
|
207
|
+
}),
|
|
208
|
+
warn: (function (message, params) {
|
|
209
|
+
getEventLogger(eventItem)["uwarn"](params, message);
|
|
210
|
+
}),
|
|
211
|
+
error: (function (message, params) {
|
|
212
|
+
getEventLogger(eventItem)["uerror"](params, message);
|
|
213
|
+
}),
|
|
214
|
+
errorWithExn: (function (message, exn) {
|
|
215
|
+
var params = {
|
|
216
|
+
err: Internal.prettifyExn(exn)
|
|
217
|
+
};
|
|
218
|
+
getEventLogger(eventItem)["uerror"](params, message);
|
|
219
|
+
})
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
exports.logLevels = logLevels;
|
|
224
|
+
exports.makeLogger = makeLogger;
|
|
225
|
+
exports.setLogger = setLogger;
|
|
226
|
+
exports.getLogger = getLogger;
|
|
227
|
+
exports.setLogLevel = setLogLevel;
|
|
228
|
+
exports.trace = trace;
|
|
229
|
+
exports.debug = debug;
|
|
230
|
+
exports.info = info;
|
|
231
|
+
exports.warn = warn;
|
|
232
|
+
exports.error = error;
|
|
233
|
+
exports.errorWithExn = errorWithExn;
|
|
234
|
+
exports.fatal = fatal;
|
|
235
|
+
exports.childTrace = childTrace;
|
|
236
|
+
exports.childDebug = childDebug;
|
|
237
|
+
exports.childInfo = childInfo;
|
|
238
|
+
exports.childWarn = childWarn;
|
|
239
|
+
exports.childError = childError;
|
|
240
|
+
exports.childErrorWithExn = childErrorWithExn;
|
|
241
|
+
exports.childFatal = childFatal;
|
|
242
|
+
exports.createChild = createChild;
|
|
243
|
+
exports.createChildFrom = createChildFrom;
|
|
244
|
+
exports.getEventLogger = getEventLogger;
|
|
245
|
+
exports.logForItem = logForItem;
|
|
246
|
+
exports.getUserLogger = getUserLogger;
|
|
247
|
+
/* logLevels Not a pure module */
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var EntityHistory = require("./db/EntityHistory.res.js");
|
|
5
|
+
var ErrorHandling = require("./ErrorHandling.res.js");
|
|
6
|
+
var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js");
|
|
7
|
+
|
|
8
|
+
var entityHistoryActionEnumConfig_name = EntityHistory.RowAction.name;
|
|
9
|
+
|
|
10
|
+
var entityHistoryActionEnumConfig_variants = EntityHistory.RowAction.variants;
|
|
11
|
+
|
|
12
|
+
var entityHistoryActionEnumConfig_schema = EntityHistory.RowAction.schema;
|
|
13
|
+
|
|
14
|
+
var entityHistoryActionEnumConfig = {
|
|
15
|
+
name: entityHistoryActionEnumConfig_name,
|
|
16
|
+
variants: entityHistoryActionEnumConfig_variants,
|
|
17
|
+
schema: entityHistoryActionEnumConfig_schema,
|
|
18
|
+
default: "SET"
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
function make(userEntities, dcRegistryEntityConfig, allEnums, staticTables, storage, onStorageInitialize) {
|
|
22
|
+
var allEntities = userEntities.concat([dcRegistryEntityConfig]);
|
|
23
|
+
var allEnums$1 = allEnums.concat([entityHistoryActionEnumConfig]);
|
|
24
|
+
return {
|
|
25
|
+
userEntities: userEntities,
|
|
26
|
+
staticTables: staticTables,
|
|
27
|
+
allEntities: allEntities,
|
|
28
|
+
allEnums: allEnums$1,
|
|
29
|
+
storageStatus: "Unknown",
|
|
30
|
+
storage: storage,
|
|
31
|
+
onStorageInitialize: onStorageInitialize
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async function init(persistence, skipIsInitializedCheckOpt, resetOpt) {
|
|
36
|
+
var skipIsInitializedCheck = skipIsInitializedCheckOpt !== undefined ? skipIsInitializedCheckOpt : false;
|
|
37
|
+
var reset = resetOpt !== undefined ? resetOpt : false;
|
|
38
|
+
try {
|
|
39
|
+
var promise = persistence.storageStatus;
|
|
40
|
+
var shouldRun;
|
|
41
|
+
if (typeof promise !== "object") {
|
|
42
|
+
shouldRun = true;
|
|
43
|
+
} else if (promise.TAG === "Initializing") {
|
|
44
|
+
await promise._0;
|
|
45
|
+
shouldRun = reset;
|
|
46
|
+
} else {
|
|
47
|
+
shouldRun = reset;
|
|
48
|
+
}
|
|
49
|
+
if (!shouldRun) {
|
|
50
|
+
return ;
|
|
51
|
+
}
|
|
52
|
+
var resolveRef = {
|
|
53
|
+
contents: null
|
|
54
|
+
};
|
|
55
|
+
var promise$1 = new Promise((function (resolve, param) {
|
|
56
|
+
resolveRef.contents = resolve;
|
|
57
|
+
}));
|
|
58
|
+
persistence.storageStatus = {
|
|
59
|
+
TAG: "Initializing",
|
|
60
|
+
_0: promise$1
|
|
61
|
+
};
|
|
62
|
+
if (!(reset || skipIsInitializedCheck) && await persistence.storage.isInitialized()) {
|
|
63
|
+
persistence.storageStatus = {
|
|
64
|
+
TAG: "Ready",
|
|
65
|
+
cleanRun: false
|
|
66
|
+
};
|
|
67
|
+
} else {
|
|
68
|
+
await persistence.storage.initialize(persistence.allEntities, persistence.staticTables, persistence.allEnums, reset || !skipIsInitializedCheck);
|
|
69
|
+
persistence.storageStatus = {
|
|
70
|
+
TAG: "Ready",
|
|
71
|
+
cleanRun: true
|
|
72
|
+
};
|
|
73
|
+
var onStorageInitialize = persistence.onStorageInitialize;
|
|
74
|
+
if (onStorageInitialize !== undefined) {
|
|
75
|
+
await onStorageInitialize();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
return resolveRef.contents();
|
|
80
|
+
}
|
|
81
|
+
catch (raw_exn){
|
|
82
|
+
var exn = Caml_js_exceptions.internalToOCamlException(raw_exn);
|
|
83
|
+
return ErrorHandling.mkLogAndRaise(undefined, "EE800: Failed to initialize the indexer storage.", exn);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
exports.entityHistoryActionEnumConfig = entityHistoryActionEnumConfig;
|
|
88
|
+
exports.make = make;
|
|
89
|
+
exports.init = init;
|
|
90
|
+
/* EntityHistory Not a pure module */
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// Generated by ReScript, PLEASE EDIT WITH CARE
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var $$Array = require("rescript/lib/js/array.js");
|
|
5
|
+
var Table = require("./db/Table.res.js");
|
|
6
|
+
var Utils = require("./Utils.res.js");
|
|
7
|
+
var Schema = require("./db/Schema.res.js");
|
|
8
|
+
var Belt_Array = require("rescript/lib/js/belt_Array.js");
|
|
9
|
+
|
|
10
|
+
function makeCreateIndexSqlUnsafe(tableName, indexFields, pgSchema) {
|
|
11
|
+
var indexName = tableName + "_" + indexFields.join("_");
|
|
12
|
+
var index = Belt_Array.map(indexFields, (function (idx) {
|
|
13
|
+
return "\"" + idx + "\"";
|
|
14
|
+
})).join(", ");
|
|
15
|
+
return "CREATE INDEX IF NOT EXISTS \"" + indexName + "\" ON \"" + pgSchema + "\".\"" + tableName + "\"(" + index + ");";
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function makeCreateTableIndicesSqlUnsafe(table, pgSchema) {
|
|
19
|
+
var tableName = table.tableName;
|
|
20
|
+
var createIndex = function (indexField) {
|
|
21
|
+
return makeCreateIndexSqlUnsafe(tableName, [indexField], pgSchema);
|
|
22
|
+
};
|
|
23
|
+
var createCompositeIndex = function (indexFields) {
|
|
24
|
+
return makeCreateIndexSqlUnsafe(tableName, indexFields, pgSchema);
|
|
25
|
+
};
|
|
26
|
+
var singleIndices = Table.getSingleIndices(table);
|
|
27
|
+
var compositeIndices = Table.getCompositeIndices(table);
|
|
28
|
+
return Belt_Array.map(singleIndices, createIndex).join("\n") + Belt_Array.map(compositeIndices, createCompositeIndex).join("\n");
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function makeCreateTableSqlUnsafe(table, pgSchema) {
|
|
32
|
+
var fieldsMapped = Belt_Array.map(Table.getFields(table), (function (field) {
|
|
33
|
+
var defaultValue = field.defaultValue;
|
|
34
|
+
var fieldType = field.fieldType;
|
|
35
|
+
var fieldName = Table.getDbFieldName(field);
|
|
36
|
+
var tmp;
|
|
37
|
+
tmp = fieldType === "TIMESTAMP" || fieldType === "TIMESTAMP WITH TIME ZONE" || fieldType === "JSONB" || fieldType === "SERIAL" || fieldType === "TEXT" || fieldType === "DOUBLE PRECISION" || fieldType === "NUMERIC" || fieldType === "BOOLEAN" || fieldType === "INTEGER" || fieldType === "TIMESTAMP WITH TIME ZONE NULL" || fieldType.startsWith("NUMERIC(") ? fieldType : "\"" + pgSchema + "\"." + fieldType;
|
|
38
|
+
return "\"" + fieldName + "\" " + tmp + (
|
|
39
|
+
field.isArray ? "[]" : ""
|
|
40
|
+
) + (
|
|
41
|
+
defaultValue !== undefined ? " DEFAULT " + defaultValue : (
|
|
42
|
+
field.isNullable ? "" : " NOT NULL"
|
|
43
|
+
)
|
|
44
|
+
);
|
|
45
|
+
})).join(", ");
|
|
46
|
+
var primaryKeyFieldNames = Table.getPrimaryKeyFieldNames(table);
|
|
47
|
+
var primaryKey = Belt_Array.map(primaryKeyFieldNames, (function (field) {
|
|
48
|
+
return "\"" + field + "\"";
|
|
49
|
+
})).join(", ");
|
|
50
|
+
return "CREATE TABLE IF NOT EXISTS \"" + pgSchema + "\".\"" + table.tableName + "\"(" + fieldsMapped + (
|
|
51
|
+
primaryKeyFieldNames.length !== 0 ? ", PRIMARY KEY(" + primaryKey + ")" : ""
|
|
52
|
+
) + ");";
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function makeInitializeTransaction(pgSchema, staticTables, entities, enums, cleanRun) {
|
|
56
|
+
var allTables = $$Array.copy(staticTables);
|
|
57
|
+
var allEntityTables = [];
|
|
58
|
+
entities.forEach(function (entity) {
|
|
59
|
+
allEntityTables.push(entity.table);
|
|
60
|
+
allTables.push(entity.table);
|
|
61
|
+
allTables.push(entity.entityHistory.table);
|
|
62
|
+
});
|
|
63
|
+
var derivedSchema = Schema.make(allEntityTables);
|
|
64
|
+
var query = {
|
|
65
|
+
contents: (
|
|
66
|
+
cleanRun ? "DROP SCHEMA IF EXISTS \"" + pgSchema + "\" CASCADE;\nCREATE SCHEMA \"" + pgSchema + "\";" : "CREATE SCHEMA IF NOT EXISTS \"" + pgSchema + "\";"
|
|
67
|
+
) + ("GRANT ALL ON SCHEMA \"" + pgSchema + "\" TO postgres;\nGRANT ALL ON SCHEMA \"" + pgSchema + "\" TO public;")
|
|
68
|
+
};
|
|
69
|
+
enums.forEach(function (enumConfig) {
|
|
70
|
+
var enumCreateQuery = "CREATE TYPE \"" + pgSchema + "\"." + enumConfig.name + " AS ENUM(" + enumConfig.variants.map(function (v) {
|
|
71
|
+
return "'" + v + "'";
|
|
72
|
+
}).join(", ") + ");";
|
|
73
|
+
query.contents = query.contents + "\n" + (
|
|
74
|
+
cleanRun ? enumCreateQuery : "IF NOT EXISTS (\n SELECT 1 FROM pg_type \n WHERE typname = '" + enumConfig.name.toLowerCase() + "' \n AND typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = '" + pgSchema + "')\n) THEN \n " + enumCreateQuery + "\nEND IF;"
|
|
75
|
+
);
|
|
76
|
+
});
|
|
77
|
+
allTables.forEach(function (table) {
|
|
78
|
+
query.contents = query.contents + "\n" + makeCreateTableSqlUnsafe(table, pgSchema);
|
|
79
|
+
});
|
|
80
|
+
allTables.forEach(function (table) {
|
|
81
|
+
var indices = makeCreateTableIndicesSqlUnsafe(table, pgSchema);
|
|
82
|
+
if (indices !== "") {
|
|
83
|
+
query.contents = query.contents + "\n" + indices;
|
|
84
|
+
return ;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
});
|
|
88
|
+
var functionsQuery = {
|
|
89
|
+
contents: ""
|
|
90
|
+
};
|
|
91
|
+
entities.forEach(function (entity) {
|
|
92
|
+
functionsQuery.contents = functionsQuery.contents + "\n" + entity.entityHistory.createInsertFnQuery;
|
|
93
|
+
Table.getDerivedFromFields(entity.table).forEach(function (derivedFromField) {
|
|
94
|
+
var indexField = Utils.unwrapResultExn(Schema.getDerivedFromFieldName(derivedSchema, derivedFromField));
|
|
95
|
+
query.contents = query.contents + "\n" + makeCreateIndexSqlUnsafe(derivedFromField.derivedFromEntity, [indexField], pgSchema);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
return [cleanRun ? query.contents : "DO $$ BEGIN " + query.contents + " END $$;"].concat(functionsQuery.contents !== "" ? [functionsQuery.contents] : []);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function make(sql, pgSchema) {
|
|
102
|
+
var isInitialized = async function () {
|
|
103
|
+
var schemas = await sql.unsafe("SELECT schema_name FROM information_schema.schemata WHERE schema_name = '" + pgSchema + "';");
|
|
104
|
+
return Utils.$$Array.notEmpty(schemas);
|
|
105
|
+
};
|
|
106
|
+
var initialize = async function (entities, staticTables, enums, cleanRun) {
|
|
107
|
+
var queries = makeInitializeTransaction(pgSchema, staticTables, entities, enums, cleanRun);
|
|
108
|
+
await sql.begin(function (sql) {
|
|
109
|
+
return queries.map(function (query) {
|
|
110
|
+
return sql.unsafe(query);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
return {
|
|
115
|
+
isInitialized: isInitialized,
|
|
116
|
+
initialize: initialize
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
exports.makeCreateIndexSqlUnsafe = makeCreateIndexSqlUnsafe;
|
|
121
|
+
exports.makeCreateTableIndicesSqlUnsafe = makeCreateTableIndicesSqlUnsafe;
|
|
122
|
+
exports.makeCreateTableSqlUnsafe = makeCreateTableSqlUnsafe;
|
|
123
|
+
exports.makeInitializeTransaction = makeInitializeTransaction;
|
|
124
|
+
exports.make = make;
|
|
125
|
+
/* Table Not a pure module */
|