import DeferredRunner from "../deferredRunner"

const wrappedMethodNames = [
    'logModuleEvent',
    'logExamEvent',
    'logQuestionEvent'
]

// 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
    }, 
    {})

let deferredRunner: DeferredRunner
const moduleName = 'ELearning'

const init = (injectedDeferredRunner) => {
    deferredRunner = injectedDeferredRunner
}

export default {
    init,
    ...wrappedMethods
}