'use strict'; module.exports = { setup: setupAsync, compile: compileAsync }; var util = require('./compile/util'); var ASYNC = { '*': checkGenerators, 'co*': checkGenerators, 'es7': checkAsyncFunction }; var TRANSPILE = { 'nodent': getNodent, 'regenerator': getRegenerator }; var MODES = [ { async: 'co*' }, { async: 'es7', transpile: 'nodent' }, { async: 'co*', transpile: 'regenerator' } ]; var regenerator, nodent; function setupAsync(opts, required) { if (required !== false) required = true; var async = opts.async , transpile = opts.transpile , check; switch (typeof transpile) { case 'string': var get = TRANSPILE[transpile]; if (!get) throw new Error('bad transpiler: ' + transpile); return (opts._transpileFunc = get(opts, required)); case 'undefined': case 'boolean': if (typeof async == 'string') { check = ASYNC[async]; if (!check) throw new Error('bad async mode: ' + async); return (opts.transpile = check(opts, required)); } for (var i=0; i