import EventChannel from './EventChannel' const eventChannels = {} let id = 0 export function initEventChannel (events, cache = true) { id++ const eventChannel = new EventChannel(id, events) if (cache) { eventChannels[id] = eventChannel } return eventChannel } export function getEventChannel (id) { const eventChannel = eventChannels[id] delete eventChannels[id] return eventChannel } export default function () { let eventChannel return { args (fromArgs, toArgs) { eventChannel = initEventChannel(fromArgs.events) if (fromArgs.url) { fromArgs.url = fromArgs.url + (fromArgs.url.indexOf('?') === -1 ? '?' : '&') + '__id__=' + eventChannel.id } }, returnValue (fromRes, toRes) { fromRes.eventChannel = eventChannel } } }