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); }); } };