33 lines
925 B
JavaScript
33 lines
925 B
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)
|
|
})
|
|
}
|
|
}
|