39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
|
import {eventsList} from "budibase-core";
|
||
|
import {filter,union,has,map} from "lodash/fp";
|
||
|
import records from "./records";
|
||
|
|
||
|
const allEventsOfType = type =>
|
||
|
filter(
|
||
|
e => e.endsWith(`:${type}`)
|
||
|
)(eventsList);
|
||
|
|
||
|
const getEventNamespace = ev => {
|
||
|
const parts = ev.split(":");
|
||
|
return `${parts[0]}:${parts[1]}`;
|
||
|
}
|
||
|
|
||
|
const hasRecord = has("record");
|
||
|
|
||
|
export const register = (app, logTimeElapsed, eventNamespaces = []) => {
|
||
|
const onCompleteEvents =
|
||
|
eventNamespaces.length === 0
|
||
|
? allEventsOfType("onComplete")
|
||
|
: map(e => `${e}:onComplete`)(eventNamespaces)
|
||
|
|
||
|
const onErrorEvents =
|
||
|
eventNamespaces.length === 0
|
||
|
? allEventsOfType("onError")
|
||
|
: map(e => `${e}:onError`)(eventNamespaces)
|
||
|
|
||
|
for(let ev of union(onCompleteEvents)(onErrorEvents)) {
|
||
|
app.subscribe(ev, (_, ctx) => {
|
||
|
const info =
|
||
|
hasRecord(ctx)
|
||
|
? ctx.record.type()
|
||
|
: "";
|
||
|
|
||
|
logTimeElapsed(
|
||
|
ev, ctx.elapsed, info);
|
||
|
});
|
||
|
}
|
||
|
};
|