import { noop } from '../util/core'; export function initLifecycle(vm) { const hooks = [ 'init', 'mounted', 'beforeEach', 'afterEach', 'doneEach', 'ready', ]; vm._hooks = {}; vm._lifecycle = {}; hooks.forEach(hook => { const arr = (vm._hooks[hook] = []); vm._lifecycle[hook] = fn => arr.push(fn); }); } export function callHook(vm, hook, data, next = noop) { const queue = vm._hooks[hook]; const step = function(index) { const hook = queue[index]; if (index >= queue.length) { next(data); } else if (typeof hook === 'function') { if (hook.length === 2) { hook(data, result => { data = result; step(index + 1); }); } else { const result = hook(data); data = result === undefined ? data : result; step(index + 1); } } else { step(index + 1); } }; step(0); }