import DeferredRunner from '../deferredRunner' let deferredRunner: DeferredRunner const moduleName = 'PatientMgmt' const wrappedMethodNames = [ "logIngestEvent", "logCatalogEvent" ] // expose each method as a wrapper that just calls the deferredRunner const wrappedMethods = wrappedMethodNames.reduce( (obj, current) => { obj[current] = (...args) => deferredRunner.execute(moduleName, current, args) return obj }, {}) const init = (injectedDeferredRunner) => { deferredRunner = injectedDeferredRunner } export default { init, ...wrappedMethods }