export default function getGlobals ( imports, { globals, onerror, onwarn } ) { const globalFn = getGlobalFn( globals ); return imports.map( x => { let name = globalFn( x.source.value ); if ( !name ) { if ( x.name.startsWith( '__import' ) ) { const error = new Error( `Could not determine name for imported module '${x.source.value}' – use options.globals` ); if ( onerror ) { onerror( error ); } else { throw error; } } else { const warning = { message: `No name was supplied for imported module '${x.source.value}'. Guessing '${x.name}', but you should use options.globals` }; if ( onwarn ) { onwarn( warning ); } else { console.warn( warning ); // eslint-disable-line no-console } } name = x.name; } return name; }); } function getGlobalFn ( globals ) { if ( typeof globals === 'function' ) return globals; if ( typeof globals === 'object' ) { return id => globals[ id ]; } return () => undefined; }