UNPKG

131 kBSource Map (JSON)View Raw
1{"version":3,"file":"rollup.js","sources":["../.gobble-build/01-rollup/1/rollup.js"],"sourcesContent":["'use strict';\n\nvar sander = require('sander');\nvar MagicString = require('magic-string');\nMagicString = 'default' in MagicString ? MagicString['default'] : MagicString;\nvar acorn = require('acorn');\n\n// TODO does this all work on windows?\n\nconst absolutePath = /^(?:\\/|(?:[A-Za-z]:)?\\\\)/;\n\nfunction isAbsolute ( path ) {\n\treturn absolutePath.test( path );\n}\n\nfunction basename ( path ) {\n\treturn path.split( /(\\/|\\\\)/ ).pop();\n}\n\nfunction dirname ( path ) {\n\tconst match = /(\\/|\\\\)[^\\/\\\\]*$/.exec( path );\n\tif ( !match ) return '.';\n\n\tconst dir = path.slice( 0, -match[0].length );\n\n\t// If `dir` is the empty string, we're at root.\n\treturn dir ? dir : '/';\n}\n\nfunction extname ( path ) {\n\tconst match = /\\.[^\\.]+$/.exec( path );\n\tif ( !match ) return '';\n\treturn match[0];\n}\n\nfunction resolve ( ...paths ) {\n\tlet resolvedParts = paths.shift().split( /[\\/\\\\]/ );\n\n\tpaths.forEach( path => {\n\t\tif ( isAbsolute( path ) ) {\n\t\t\tresolvedParts = path.split( /[\\/\\\\]/ );\n\t\t} else {\n\t\t\tconst parts = path.split( /[\\/\\\\]/ );\n\n\t\t\twhile ( parts[0] && parts[0][0] === '.' ) {\n\t\t\t\tconst part = parts.shift();\n\t\t\t\tif ( part === '..' ) {\n\t\t\t\t\tresolvedParts.pop();\n\t\t\t\t} else if ( part !== '.' ) {\n\t\t\t\t\tthrow new Error( `Unexpected path part (${part})` );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresolvedParts.push.apply( resolvedParts, parts );\n\t\t}\n\t});\n\n\treturn resolvedParts.join( '/' ); // TODO windows...\n}\n\nconst keys = Object.keys;\n\nfunction blank () {\n\treturn Object.create( null );\n}\n\nfunction unixizePath( path ) {\n return path.split( /[\\/\\\\]/ ).join( '/' );\n}\n\nfunction getIndentString ( magicString, options ) {\n\tif ( !( 'indent' in options ) || options.indent === true ) {\n\t\treturn magicString.getIndentString();\n\t}\n\n\treturn options.indent || '';\n}\n\nfunction badExports ( option, keys ) {\n\tthrow new Error( `'${option}' was specified for options.exports, but entry module has following exports: ${keys.join(', ')}` );\n}\n\nfunction getExportMode ( bundle, exportMode ) {\n\tconst exportKeys = keys( bundle.entryModule.exports );\n\n\tif ( exportMode === 'default' ) {\n\t\tif ( exportKeys.length !== 1 || exportKeys[0] !== 'default' ) {\n\t\t\tbadExports( 'default', exportKeys );\n\t\t}\n\t} else if ( exportMode === 'none' && exportKeys.length ) {\n\t\tbadExports( 'none', exportKeys );\n\t}\n\n\tif ( !exportMode || exportMode === 'auto' ) {\n\t\tif ( exportKeys.length === 0 ) {\n\t\t\texportMode = 'none';\n\t\t} else if ( exportKeys.length === 1 && exportKeys[0] === 'default' ) {\n\t\t\texportMode = 'default';\n\t\t} else {\n\t\t\texportMode = 'named';\n\t\t}\n\t}\n\n\tif ( !/(?:default|named|none)/.test( exportMode ) ) {\n\t\tthrow new Error( `options.exports must be 'default', 'named', 'none', 'auto', or left unspecified (defaults to 'auto')` );\n\t}\n\n\treturn exportMode;\n}\n\nfunction getInteropBlock ( bundle ) {\n\treturn bundle.externalModules\n\t\t.filter( module => module.needsDefault && module.needsNamed )\n\t\t.map( module => `var ${module.name}__default = 'default' in ${module.name} ? ${module.name}['default'] : ${module.name};` )\n\t\t.join( '\\n' );\n}\n\nfunction getName ( x ) {\n\treturn x.name;\n}\n\nfunction quoteId ( x ) {\n\treturn `'${x.id}'`;\n}\n\nfunction req ( x ) {\n\treturn `require('${x.id}')`;\n}\n\nfunction umd ( bundle, magicString, { exportMode, indentString }, options ) {\n\tif ( exportMode !== 'none' && !options.moduleName ) {\n\t\tthrow new Error( 'You must supply options.moduleName for UMD bundles' );\n\t}\n\n\tconst globalNames = options.globals || blank();\n\n\tlet amdDeps = bundle.externalModules.map( quoteId );\n\tlet cjsDeps = bundle.externalModules.map( req );\n\tlet globalDeps = bundle.externalModules.map( module => {\n\t\treturn 'global.' + (globalNames[ module.id ] || module.name);\n\t});\n\n\tlet args = bundle.externalModules.map( getName );\n\n\tif ( exportMode === 'named' ) {\n\t\tamdDeps.unshift( `'exports'` );\n\t\tcjsDeps.unshift( `exports` );\n\t\tglobalDeps.unshift( `(global.${options.moduleName} = {})` );\n\n\t\targs.unshift( 'exports' );\n\t}\n\n\tconst amdParams =\n\t\t( options.moduleId ? `['${options.moduleId}'], ` : `` ) +\n\t\t( amdDeps.length ? `[${amdDeps.join( ', ' )}], ` : `` );\n\n\tconst cjsExport = exportMode === 'default' ? `module.exports = ` : ``;\n\tconst defaultExport = exportMode === 'default' ? `global.${options.moduleName} = ` : '';\n\n\tconst intro =\n\t\t`(function (global, factory) {\n\t\t\ttypeof exports === 'object' && typeof module !== 'undefined' ? ${cjsExport}factory(${cjsDeps.join( ', ' )}) :\n\t\t\ttypeof define === 'function' && define.amd ? define(${amdParams}factory) :\n\t\t\t${defaultExport}factory(${globalDeps});\n\t\t}(this, function (${args}) { 'use strict';\n\n\t\t`.replace( /^\\t\\t/gm, '' ).replace( /^\\t/gm, magicString.getIndentString() );\n\n\t// var foo__default = 'default' in foo ? foo['default'] : foo;\n\tconst interopBlock = getInteropBlock( bundle );\n\tif ( interopBlock ) magicString.prepend( interopBlock + '\\n\\n' );\n\n\tconst exports = bundle.entryModule.exports;\n\n\tlet exportBlock;\n\n\tif ( exportMode === 'default' ) {\n\t\tconst canonicalName = bundle.entryModule.getCanonicalName( 'default' );\n\t\texportBlock = `return ${canonicalName};`;\n\t} else {\n\t\texportBlock = bundle.toExport.map( name => {\n\t\t\tconst canonicalName = bundle.entryModule.getCanonicalName( exports[ name ].localName );\n\t\t\treturn `exports.${name} = ${canonicalName};`;\n\t\t}).join( '\\n' );\n\t}\n\n\tif ( exportBlock ) {\n\t\tmagicString.append( '\\n\\n' + exportBlock );\n\t}\n\n\treturn magicString\n\t\t.trim()\n\t\t.indent( indentString )\n\t\t.append( '\\n\\n}));' )\n\t\t.prepend( intro );\n}\n\nfunction iife ( bundle, magicString, { exportMode, indentString }, options ) {\n\tconst globalNames = options.globals || blank();\n\n\tlet dependencies = bundle.externalModules.map( module => {\n\t\treturn globalNames[ module.id ] || module.name;\n\t});\n\n\tlet args = bundle.externalModules.map( getName );\n\n\tif ( exportMode !== 'none' && !options.moduleName ) {\n\t\tthrow new Error( 'You must supply options.moduleName for IIFE bundles' );\n\t}\n\n\tif ( exportMode === 'named' ) {\n\t\tdependencies.unshift( `(this.${options.moduleName} = {})` );\n\t\targs.unshift( 'exports' );\n\t}\n\n\tlet intro = `(function (${args}) { 'use strict';\\n\\n`;\n\tlet outro = `\\n\\n})(${dependencies});`;\n\n\t// var foo__default = 'default' in foo ? foo['default'] : foo;\n\tconst interopBlock = getInteropBlock( bundle );\n\tif ( interopBlock ) magicString.prepend( interopBlock + '\\n\\n' );\n\n\tif ( exportMode === 'default' ) {\n\t\tintro = `var ${options.moduleName} = ${intro}`;\n\t\tmagicString.append( `\\n\\nreturn ${bundle.entryModule.getCanonicalName('default')};` );\n\t}\n\n\t// TODO named exports\n\n\treturn magicString\n\t\t.indent( indentString )\n\t\t.prepend( intro )\n\t\t.append( outro );\n}\n\nfunction es6 ( bundle, magicString, { exportMode }, options ) {\n\tconst importBlock = bundle.externalModules\n\t\t.map( module => {\n\t\t\tconst specifiers = [];\n\n\t\t\tif ( module.needsDefault ) {\n\t\t\t\tspecifiers.push( module.importedByBundle.filter( declaration =>\n\t\t\t\t\tdeclaration.name === 'default' )[0].localName );\n\t\t\t}\n\n\t\t\tif ( module.needsAll ) {\n\t\t\t\tspecifiers.push( '* as ' + module.importedByBundle.filter( declaration =>\n\t\t\t\t\tdeclaration.name === '*' )[0].localName );\n\t\t\t}\n\n\t\t\tif ( module.needsNamed ) {\n\t\t\t\tspecifiers.push( '{ ' + module.importedByBundle\n\t\t\t\t\t.filter( declaration => !/^(default|\\*)$/.test( declaration.name ) )\n\t\t\t\t\t.map( ({ name, localName }) =>\n\t\t\t\t\t\tname === localName ? name : `${name} as ${localName}` )\n\t\t\t\t\t.join( ', ' ) + ' }' );\n\t\t\t}\n\n\t\t\treturn specifiers.length ?\n\t\t\t\t`import ${specifiers.join( ', ' )} from '${module.id}';` :\n\t\t\t\t`import '${module.id}';`;\n\t\t})\n\t\t.join( '\\n' );\n\n\tif ( importBlock ) {\n\t\tmagicString.prepend( importBlock + '\\n\\n' );\n\t}\n\n\tconst exports = bundle.entryModule.exports;\n\tconst exportBlock = keys( exports ).map( exportedName => {\n\t\tconst specifier = exports[ exportedName ];\n\n\t\tconst canonicalName = bundle.entryModule.getCanonicalName( specifier.localName );\n\n\t\tif ( exportedName === 'default' ) {\n\t\t\treturn `export default ${canonicalName};`;\n\t\t}\n\n\t\treturn exportedName === canonicalName ?\n\t\t\t`export { ${exportedName} };` :\n\t\t\t`export { ${canonicalName} as ${exportedName} };`;\n\t}).join( '\\n' );\n\n\tif ( exportBlock ) {\n\t\tmagicString.append( '\\n\\n' + exportBlock );\n\t}\n\n\treturn magicString.trim();\n}\n\nfunction cjs ( bundle, magicString, { exportMode }) {\n\tlet intro = `'use strict';\\n\\n`;\n\n\t// TODO handle empty imports, once they're supported\n\tconst importBlock = bundle.externalModules\n\t\t.map( module => {\n\t\t\tlet requireStatement = `var ${module.name} = require('${module.id}');`;\n\n\t\t\tif ( module.needsDefault ) {\n\t\t\t\trequireStatement += '\\n' + ( module.needsNamed ? `var ${module.name}__default = ` : `${module.name} = ` ) +\n\t\t\t\t\t`'default' in ${module.name} ? ${module.name}['default'] : ${module.name};`;\n\t\t\t}\n\n\t\t\treturn requireStatement;\n\t\t})\n\t\t.join( '\\n' );\n\n\tif ( importBlock ) {\n\t\tintro += importBlock + '\\n\\n';\n\t}\n\n\tmagicString.prepend( intro );\n\n\tlet exportBlock;\n\tif ( exportMode === 'default' && bundle.entryModule.exports.default ) {\n\t\texportBlock = `module.exports = ${bundle.entryModule.getCanonicalName('default')};`;\n\t} else if ( exportMode === 'named' ) {\n\t\texportBlock = bundle.toExport\n\t\t\t.map( key => {\n\t\t\t\tconst specifier = bundle.entryModule.exports[ key ];\n\t\t\t\tconst name = bundle.entryModule.getCanonicalName( specifier.localName );\n\n\t\t\t\treturn `exports.${key} = ${name};`;\n\t\t\t})\n\t\t\t.join( '\\n' );\n\t}\n\n\tif ( exportBlock ) {\n\t\tmagicString.append( '\\n\\n' + exportBlock );\n\t}\n\n\treturn magicString;\n}\n\nfunction amd ( bundle, magicString, { exportMode, indentString }, options ) {\n\tlet deps = bundle.externalModules.map( quoteId );\n\tlet args = bundle.externalModules.map( getName );\n\n\tif ( exportMode === 'named' ) {\n\t\targs.unshift( `exports` );\n\t\tdeps.unshift( `'exports'` );\n\t}\n\n\tconst params =\n\t\t( options.moduleId ? `['${options.moduleId}'], ` : `` ) +\n\t\t( deps.length ? `[${deps.join( ', ' )}], ` : `` );\n\n\tconst intro = `define(${params}function (${args.join( ', ' )}) { 'use strict';\\n\\n`;\n\n\t// var foo__default = 'default' in foo ? foo['default'] : foo;\n\tconst interopBlock = getInteropBlock( bundle );\n\tif ( interopBlock ) magicString.prepend( interopBlock + '\\n\\n' );\n\n\tconst exports = bundle.entryModule.exports;\n\n\tlet exportBlock;\n\n\tif ( exportMode === 'default' ) {\n\t\texportBlock = `return ${bundle.entryModule.getCanonicalName('default')};`;\n\t} else {\n\t\texportBlock = bundle.toExport.map( name => {\n\t\t\treturn `exports.${name} = ${exports[name].localName};`;\n\t\t}).join( '\\n' );\n\t}\n\n\tif ( exportBlock ) magicString.append( '\\n\\n' + exportBlock );\n\n\treturn magicString\n\t\t.indent( indentString )\n\t\t.append( '\\n\\n});' )\n\t\t.prepend( intro );\n}\n\nvar finalisers = { amd, cjs, es6, iife, umd };\n\nconst reservedWords = 'break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public'.split( ' ' );\nconst builtins = 'Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl'.split( ' ' );\n\nlet blacklisted = blank();\nreservedWords.concat( builtins ).forEach( word => blacklisted[ word ] = true );\n\n\nfunction makeLegalIdentifier ( str ) {\n\tstr = str.replace( /[^$_a-zA-Z0-9]/g, '_' );\n\tif ( /\\d/.test( str[0] ) || blacklisted[ str ] ) str = `_${str}`;\n\n\treturn str;\n}\n\nlet shouldSkip;\nlet shouldAbort;\n\nfunction walk ( ast, { enter, leave }) {\n\tshouldAbort = false;\n\tvisit( ast, null, enter, leave );\n}\n\nlet context = {\n\tskip: () => shouldSkip = true,\n\tabort: () => shouldAbort = true\n};\n\nlet childKeys = blank();\n\nlet toString = Object.prototype.toString;\n\nfunction isArray ( thing ) {\n\treturn toString.call( thing ) === '[object Array]';\n}\n\nfunction visit ( node, parent, enter, leave ) {\n\tif ( !node || shouldAbort ) return;\n\n\tif ( enter ) {\n\t\tshouldSkip = false;\n\t\tenter.call( context, node, parent );\n\t\tif ( shouldSkip || shouldAbort ) return;\n\t}\n\n\tlet keys = childKeys[ node.type ] || (\n\t\tchildKeys[ node.type ] = Object.keys( node ).filter( key => typeof node[ key ] === 'object' )\n\t);\n\n\tlet key, value, i, j;\n\n\ti = keys.length;\n\twhile ( i-- ) {\n\t\tkey = keys[i];\n\t\tvalue = node[ key ];\n\n\t\tif ( isArray( value ) ) {\n\t\t\tj = value.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\tvisit( value[j], node, enter, leave );\n\t\t\t}\n\t\t}\n\n\t\telse if ( value && value.type ) {\n\t\t\tvisit( value, node, enter, leave );\n\t\t}\n\t}\n\n\tif ( leave && !shouldAbort ) {\n\t\tleave( node, parent );\n\t}\n}\n\nfunction sequence ( arr, callback ) {\n\tconst len = arr.length;\n\tlet results = new Array( len );\n\n\tlet promise = sander.Promise.resolve();\n\n\tfunction next ( i ) {\n\t\treturn promise\n\t\t\t.then( () => callback( arr[i], i ) )\n\t\t\t.then( result => results[i] = result );\n\t}\n\n\tlet i;\n\n\tfor ( i = 0; i < len; i += 1 ) {\n\t\tpromise = next( i );\n\t}\n\n\treturn promise.then( () => results );\n}\n\n\nfunction first ( arr, fail, callback ) {\n\tconst len = arr.length;\n\n\tlet promise = sander.Promise.reject( fail );\n\n\tfunction next ( i ) {\n\t\treturn promise\n\t\t\t.catch(() => callback( arr[i], i ));\n\t}\n\n\tlet i;\n\n\tfor ( i = 0; i < len; i += 1 ) {\n\t\tpromise = next( i );\n\t}\n\n\treturn promise;\n}\n\nfunction getLocation ( source, charIndex ) {\n\tconst lines = source.split( '\\n' );\n\tconst len = lines.length;\n\n\tlet lineStart = 0;\n\tlet i;\n\n\tfor ( i = 0; i < len; i += 1 ) {\n\t\tconst line = lines[i];\n\t\tconst lineEnd = lineStart + line.length + 1; // +1 for newline\n\n\t\tif ( lineEnd > charIndex ) {\n\t\t\treturn { line: i + 1, column: charIndex - lineStart };\n\t\t}\n\n\t\tlineStart = lineEnd;\n\t}\n\n\tthrow new Error( 'Could not determine location of character' );\n}\n\nconst blockDeclarations = {\n\t'const': true,\n\t'let': true\n};\n\nclass Scope {\n\tconstructor ( options ) {\n\t\toptions = options || {};\n\n\t\tthis.parent = options.parent;\n\t\tthis.depth = this.parent ? this.parent.depth + 1 : 0;\n\t\tthis.declarations = blank();\n\t\tthis.isBlockScope = !!options.block;\n\n\t\tif ( options.params ) {\n\t\t\toptions.params.forEach( param => {\n\t\t\t\tthis.declarations[ param.name ] = param;\n\t\t\t});\n\t\t}\n\t}\n\n\t// add ( name, isBlockDeclaration ) {\n\t// \tif ( !isBlockDeclaration && this.isBlockScope ) {\n\t// \t\t// it's a `var` or function declaration, and this\n\t// \t\t// is a block scope, so we need to go up\n\t// \t\tthis.parent.add( name, isBlockDeclaration );\n\t// \t} else {\n\t// \t\tthis.names.push( name );\n\t// \t}\n\t// }\n\n\taddDeclaration ( name, declaration ) {\n\t\tconst isBlockDeclaration = declaration.type === 'VariableDeclaration' && blockDeclarations[ declaration.kind ];\n\n\t\tif ( !isBlockDeclaration && this.isBlockScope ) {\n\t\t\t// it's a `var` or function declaration, and this\n\t\t\t// is a block scope, so we need to go up\n\t\t\tthis.parent.addDeclaration( name, declaration );\n\t\t} else {\n\t\t\tthis.declarations[ name ] = declaration;\n\t\t}\n\t}\n\n\tcontains ( name ) {\n\t\treturn !!this.getDeclaration( name );\n\t}\n\n\tfindDefiningScope ( name ) {\n\t\tif ( !!this.declarations[ name ] ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( this.parent ) {\n\t\t\treturn this.parent.findDefiningScope( name );\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetDeclaration ( name ) {\n\t\treturn this.declarations[ name ] ||\n\t\t this.parent && this.parent.getDeclaration( name );\n\t}\n}\n\nfunction isIife ( node, parent ) {\n\treturn parent && parent.type === 'CallExpression' && node === parent.callee;\n}\n\nclass Statement {\n\tconstructor ( node, module, start, end ) {\n\t\tthis.node = node;\n\t\tthis.module = module;\n\t\tthis.start = start;\n\t\tthis.end = end;\n\t\tthis.next = null; // filled in later\n\n\t\tthis.scope = new Scope();\n\t\tthis.defines = blank();\n\t\tthis.modifies = blank();\n\t\tthis.dependsOn = blank();\n\t\tthis.stronglyDependsOn = blank();\n\n\t\tthis.isIncluded = false;\n\n\t\tthis.isImportDeclaration = node.type === 'ImportDeclaration';\n\t\tthis.isExportDeclaration = /^Export/.test( node.type );\n\t}\n\n\tanalyse () {\n\t\tif ( this.isImportDeclaration ) return; // nothing to analyse\n\n\t\tlet scope = this.scope;\n\n\t\twalk( this.node, {\n\t\t\tenter ( node, parent ) {\n\t\t\t\tlet newScope;\n\n\t\t\t\tswitch ( node.type ) {\n\t\t\t\t\tcase 'FunctionExpression':\n\t\t\t\t\tcase 'FunctionDeclaration':\n\t\t\t\t\tcase 'ArrowFunctionExpression':\n\t\t\t\t\t\tif ( node.type === 'FunctionDeclaration' ) {\n\t\t\t\t\t\t\tscope.addDeclaration( node.id.name, node );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnewScope = new Scope({\n\t\t\t\t\t\t\tparent: scope,\n\t\t\t\t\t\t\tparams: node.params, // TODO rest params?\n\t\t\t\t\t\t\tblock: false\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// named function expressions - the name is considered\n\t\t\t\t\t\t// part of the function's scope\n\t\t\t\t\t\tif ( node.type === 'FunctionExpression' && node.id ) {\n\t\t\t\t\t\t\tnewScope.addDeclaration( node.id.name, node );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'BlockStatement':\n\t\t\t\t\t\tif ( !/Function/.test( parent.type ) ) {\n\t\t\t\t\t\t\tnewScope = new Scope({\n\t\t\t\t\t\t\t\tparent: scope,\n\t\t\t\t\t\t\t\tblock: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'CatchClause':\n\t\t\t\t\t\tnewScope = new Scope({\n\t\t\t\t\t\t\tparent: scope,\n\t\t\t\t\t\t\tparams: [ node.param ],\n\t\t\t\t\t\t\tblock: true\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'VariableDeclaration':\n\t\t\t\t\t\tnode.declarations.forEach( declarator => {\n\t\t\t\t\t\t\tscope.addDeclaration( declarator.id.name, node );\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'ClassDeclaration':\n\t\t\t\t\t\tscope.addDeclaration( node.id.name, node );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif ( newScope ) {\n\t\t\t\t\tObject.defineProperty( node, '_scope', { value: newScope });\n\t\t\t\t\tscope = newScope;\n\t\t\t\t}\n\t\t\t},\n\t\t\tleave ( node ) {\n\t\t\t\tif ( node._scope ) {\n\t\t\t\t\tscope = scope.parent;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// This allows us to track whether we're looking at code that will\n\t\t// be executed immediately (either outside a function, or immediately\n\t\t// inside an IIFE), for the purposes of determining whether dependencies\n\t\t// are strong or weak. It's not bulletproof, since it wouldn't catch...\n\t\t//\n\t\t// var calledImmediately = function () {\n\t\t// doSomethingWith( strongDependency );\n\t\t// }\n\t\t// calledImmediately();\n\t\t//\n\t\t// ...but it's better than nothing\n\t\tlet depth = 0;\n\n\t\tif ( !this.isImportDeclaration ) {\n\t\t\twalk( this.node, {\n\t\t\t\tenter: ( node, parent ) => {\n\t\t\t\t\tif ( node._scope ) {\n\t\t\t\t\t\tif ( !scope.isBlockScope && !isIife( node, parent ) ) depth += 1;\n\t\t\t\t\t\tscope = node._scope;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.checkForReads( scope, node, parent, !depth );\n\t\t\t\t\tthis.checkForWrites( scope, node );\n\t\t\t\t},\n\t\t\t\tleave: ( node, parent ) => {\n\t\t\t\t\tif ( node._scope ) {\n\t\t\t\t\t\tif ( !scope.isBlockScope && !isIife( node, parent ) ) depth -= 1;\n\t\t\t\t\t\tscope = scope.parent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tkeys( scope.declarations ).forEach( name => {\n\t\t\tthis.defines[ name ] = true;\n\t\t});\n\t}\n\n\tcheckForReads ( scope, node, parent, strong ) {\n\t\tif ( node.type === 'Identifier' ) {\n\t\t\t// disregard the `bar` in `foo.bar` - these appear as Identifier nodes\n\t\t\tif ( parent.type === 'MemberExpression' && !parent.computed && node !== parent.object ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// disregard the `bar` in { bar: foo }\n\t\t\tif ( parent.type === 'Property' && node !== parent.value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// disregard the `bar` in `class Foo { bar () {...} }`\n\t\t\tif ( parent.type === 'MethodDefinition' ) return;\n\n\t\t\tconst definingScope = scope.findDefiningScope( node.name );\n\n\t\t\tif ( ( !definingScope || definingScope.depth === 0 ) && !this.defines[ node.name ] ) {\n\t\t\t\tthis.dependsOn[ node.name ] = true;\n\t\t\t\tif ( strong ) this.stronglyDependsOn[ node.name ] = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tcheckForWrites ( scope, node ) {\n\t\tconst addNode = ( node, isAssignment ) => {\n\t\t\tlet depth = 0; // determine whether we're illegally modifying a binding or namespace\n\n\t\t\twhile ( node.type === 'MemberExpression' ) {\n\t\t\t\tnode = node.object;\n\t\t\t\tdepth += 1;\n\t\t\t}\n\n\t\t\t// disallow assignments/updates to imported bindings and namespaces\n\t\t\tif ( isAssignment ) {\n\t\t\t\tconst importSpecifier = this.module.imports[ node.name ];\n\n\t\t\t\tif ( importSpecifier && !scope.contains( node.name ) ) {\n\t\t\t\t\tconst minDepth = importSpecifier.name === '*' ?\n\t\t\t\t\t\t2 : // cannot do e.g. `namespace.foo = bar`\n\t\t\t\t\t\t1; // cannot do e.g. `foo = bar`, but `foo.bar = bar` is fine\n\n\t\t\t\t\tif ( depth < minDepth ) {\n\t\t\t\t\t\tconst err = new Error( `Illegal reassignment to import '${node.name}'` );\n\t\t\t\t\t\terr.file = this.module.id;\n\t\t\t\t\t\terr.loc = getLocation( this.module.magicString.toString(), node.start );\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// special case = `export default foo; foo += 1;` - we'll\n\t\t\t\t// need to assign a new variable so that the exported\n\t\t\t\t// value is not updated by the second statement\n\t\t\t\tif ( this.module.exports.default && depth === 0 && this.module.exports.default.identifier === node.name ) {\n\t\t\t\t\t// but only if this is a) inside a function body or\n\t\t\t\t\t// b) after the export declaration\n\t\t\t\t\tif ( !!scope.parent || node.start > this.module.exports.default.statement.node.start ) {\n\t\t\t\t\t\tthis.module.exports.default.isModified = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( node.type === 'Identifier' ) {\n\t\t\t\tthis.modifies[ node.name ] = true;\n\t\t\t}\n\t\t};\n\n\t\tif ( node.type === 'AssignmentExpression' ) {\n\t\t\taddNode( node.left, true );\n\t\t}\n\n\t\telse if ( node.type === 'UpdateExpression' ) {\n\t\t\taddNode( node.argument, true );\n\t\t}\n\n\t\telse if ( node.type === 'CallExpression' ) {\n\t\t\tnode.arguments.forEach( arg => addNode( arg, false ) );\n\n\t\t\t// `foo.bar()` is assumed to mutate foo\n\t\t\tif ( node.callee.type === 'MemberExpression' ) {\n\t\t\t\taddNode( node.callee );\n\t\t\t}\n\t\t}\n\t}\n\n\tmark () {\n\t\tif ( this.isIncluded ) return; // prevent infinite loops\n\t\tthis.isIncluded = true;\n\n\t\tconst dependencies = Object.keys( this.dependsOn );\n\n\t\treturn sequence( dependencies, name => {\n\t\t\tif ( this.defines[ name ] ) return; // TODO maybe exclude from `this.dependsOn` in the first place?\n\t\t\treturn this.module.mark( name );\n\t\t});\n\t}\n\n\treplaceIdentifiers ( magicString, names, bundleExports ) {\n\t\tconst replacementStack = [ names ];\n\t\tconst nameList = keys( names );\n\n\t\tlet deshadowList = [];\n\t\tnameList.forEach( name => {\n\t\t\tconst replacement = names[ name ];\n\t\t\tdeshadowList.push( replacement.split( '.' )[0] );\n\t\t});\n\n\t\tlet topLevel = true;\n\t\tlet depth = 0;\n\n\t\twalk( this.node, {\n\t\t\tenter ( node, parent ) {\n\t\t\t\tif ( node._skip ) return this.skip();\n\n\t\t\t\tif ( /^Function/.test( node.type ) ) depth += 1;\n\n\t\t\t\t// `this` is undefined at the top level of ES6 modules\n\t\t\t\tif ( node.type === 'ThisExpression' && depth === 0 ) {\n\t\t\t\t\tmagicString.overwrite( node.start, node.end, 'undefined' );\n\t\t\t\t}\n\n\t\t\t\t// special case - variable declarations that need to be rewritten\n\t\t\t\t// as bundle exports\n\t\t\t\tif ( topLevel ) {\n\t\t\t\t\tif ( node.type === 'VariableDeclaration' ) {\n\t\t\t\t\t\t// if this contains a single declarator, and it's one that\n\t\t\t\t\t\t// needs to be rewritten, we replace the whole lot\n\t\t\t\t\t\tconst name = node.declarations[0].id.name;\n\t\t\t\t\t\tif ( node.declarations.length === 1 && bundleExports[ name ] ) {\n\t\t\t\t\t\t\tmagicString.overwrite( node.start, node.declarations[0].id.end, bundleExports[ name ] );\n\t\t\t\t\t\t\tnode.declarations[0].id._skip = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// otherwise, we insert the `exports.foo = foo` after the declaration\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst exportInitialisers = node.declarations\n\t\t\t\t\t\t\t\t.map( declarator => declarator.id.name )\n\t\t\t\t\t\t\t\t.filter( name => !!bundleExports[ name ] )\n\t\t\t\t\t\t\t\t.map( name => `\\n${bundleExports[name]} = ${name};` )\n\t\t\t\t\t\t\t\t.join( '' );\n\n\t\t\t\t\t\t\tif ( exportInitialisers ) {\n\t\t\t\t\t\t\t\t// TODO clean this up\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tmagicString.insert( node.end, exportInitialisers );\n\t\t\t\t\t\t\t\t} catch ( err ) {\n\t\t\t\t\t\t\t\t\tmagicString.append( exportInitialisers );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst scope = node._scope;\n\n\t\t\t\tif ( scope ) {\n\t\t\t\t\ttopLevel = false;\n\n\t\t\t\t\tlet newNames = blank();\n\t\t\t\t\tlet hasReplacements;\n\n\t\t\t\t\t// special case = function foo ( foo ) {...}\n\t\t\t\t\tif ( node.id && names[ node.id.name ] && scope.declarations[ node.id.name ] ) {\n\t\t\t\t\t\tmagicString.overwrite( node.id.start, node.id.end, names[ node.id.name ] );\n\t\t\t\t\t}\n\n\t\t\t\t\tkeys( names ).forEach( name => {\n\t\t\t\t\t\tif ( !scope.declarations[ name ] ) {\n\t\t\t\t\t\t\tnewNames[ name ] = names[ name ];\n\t\t\t\t\t\t\thasReplacements = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tdeshadowList.forEach( name => {\n\t\t\t\t\t\tif ( ~scope.declarations[ name ] ) { // TODO is this right? no indexOf?\n\t\t\t\t\t\t\tnewNames[ name ] = name + '$$'; // TODO better mechanism\n\t\t\t\t\t\t\thasReplacements = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tif ( !hasReplacements && depth > 0 ) {\n\t\t\t\t\t\treturn this.skip();\n\t\t\t\t\t}\n\n\t\t\t\t\tnames = newNames;\n\t\t\t\t\treplacementStack.push( newNames );\n\t\t\t\t}\n\n\t\t\t\tif ( node.type !== 'Identifier' ) return;\n\n\t\t\t\t// if there's no replacement, or it's the same, there's nothing more to do\n\t\t\t\tconst name = names[ node.name ];\n\t\t\t\tif ( !name || name === node.name ) return;\n\n\t\t\t\t// shorthand properties (`obj = { foo }`) need to be expanded\n\t\t\t\tif ( parent.type === 'Property' && parent.shorthand ) {\n\t\t\t\t\tmagicString.insert( node.end, `: ${name}` );\n\t\t\t\t\tparent.key._skip = true;\n\t\t\t\t\tparent.value._skip = true; // redundant, but defensive\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// property names etc can be disregarded\n\t\t\t\tif ( parent.type === 'MemberExpression' && !parent.computed && node !== parent.object ) return;\n\t\t\t\tif ( parent.type === 'Property' && node !== parent.value ) return;\n\t\t\t\tif ( parent.type === 'MethodDefinition' && node === parent.key ) return;\n\t\t\t\t// TODO others...?\n\n\t\t\t\t// all other identifiers should be overwritten\n\t\t\t\tmagicString.overwrite( node.start, node.end, name );\n\t\t\t},\n\n\t\t\tleave ( node ) {\n\t\t\t\tif ( /^Function/.test( node.type ) ) depth -= 1;\n\n\t\t\t\tif ( node._scope ) {\n\t\t\t\t\treplacementStack.pop();\n\t\t\t\t\tnames = replacementStack[ replacementStack.length - 1 ];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn magicString;\n\t}\n}\n\nconst emptyArrayPromise = sander.Promise.resolve([]);\n\nfunction deconflict ( name, names ) {\n\twhile ( name in names ) {\n\t\tname = `_${name}`;\n\t}\n\n\treturn name;\n}\n\nfunction isEmptyExportedVarDeclaration ( node, module, allBundleExports, es6 ) {\n\tif ( node.type !== 'VariableDeclaration' || node.declarations[0].init ) return false;\n\n\tconst name = node.declarations[0].id.name;\n\tconst canonicalName = module.getCanonicalName( name, es6 );\n\n\treturn canonicalName in allBundleExports;\n}\n\nclass Module {\n\tconstructor ({ id, source, bundle }) {\n\t\tthis.source = source;\n\n\t\tthis.bundle = bundle;\n\t\tthis.id = id;\n\n\t\t// By default, `id` is the filename. Custom resolvers and loaders\n\t\t// can change that, but it makes sense to use it for the source filename\n\t\tthis.magicString = new MagicString( source, {\n\t\t\tfilename: id\n\t\t});\n\n\t\tthis.suggestedNames = blank();\n\t\tthis.comments = [];\n\n\t\tthis.statements = this._parse();\n\n\t\t// imports and exports, indexed by ID\n\t\tthis.imports = blank();\n\t\tthis.exports = blank();\n\n\t\tthis.exportAlls = blank();\n\n\t\t// array of all-export sources\n\t\tthis.exportDelegates = [];\n\n\t\tthis.canonicalNames = blank();\n\n\t\tthis.definitions = blank();\n\t\tthis.definitionPromises = blank();\n\t\tthis.modifications = blank();\n\n\t\tthis.analyse();\n\t}\n\n\taddExport ( statement ) {\n\t\tconst node = statement.node;\n\t\tconst source = node.source && node.source.value;\n\n\t\t// export default function foo () {}\n\t\t// export default foo;\n\t\t// export default 42;\n\t\tif ( node.type === 'ExportDefaultDeclaration' ) {\n\t\t\tconst isDeclaration = /Declaration$/.test( node.declaration.type );\n\t\t\tconst isAnonymous = /(?:Class|Function)Expression$/.test( node.declaration.type );\n\n\t\t\tconst declaredName = isDeclaration && node.declaration.id.name;\n\t\t\tconst identifier = node.declaration.type === 'Identifier' && node.declaration.name;\n\n\t\t\tthis.exports.default = {\n\t\t\t\tstatement,\n\t\t\t\tname: 'default',\n\t\t\t\tlocalName: declaredName || 'default',\n\t\t\t\tdeclaredName,\n\t\t\t\tidentifier,\n\t\t\t\tisDeclaration,\n\t\t\t\tisAnonymous,\n\t\t\t\tisModified: false // in case of `export default foo; foo = somethingElse`\n\t\t\t};\n\t\t}\n\n\t\t// export { foo, bar, baz }\n\t\t// export var foo = 42;\n\t\t// export function foo () {}\n\t\telse if ( node.type === 'ExportNamedDeclaration' ) {\n\t\t\tif ( node.specifiers.length ) {\n\t\t\t\t// export { foo, bar, baz }\n\t\t\t\tnode.specifiers.forEach( specifier => {\n\t\t\t\t\tconst localName = specifier.local.name;\n\t\t\t\t\tconst exportedName = specifier.exported.name;\n\n\t\t\t\t\tthis.exports[ exportedName ] = {\n\t\t\t\t\t\tlocalName,\n\t\t\t\t\t\texportedName\n\t\t\t\t\t};\n\n\t\t\t\t\t// export { foo } from './foo';\n\t\t\t\t\tif ( source ) {\n\t\t\t\t\t\tthis.imports[ localName ] = {\n\t\t\t\t\t\t\tsource,\n\t\t\t\t\t\t\tlocalName,\n\t\t\t\t\t\t\tname: localName\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\tlet declaration = node.declaration;\n\n\t\t\t\tlet name;\n\n\t\t\t\tif ( declaration.type === 'VariableDeclaration' ) {\n\t\t\t\t\t// export var foo = 42\n\t\t\t\t\tname = declaration.declarations[0].id.name;\n\t\t\t\t} else {\n\t\t\t\t\t// export function foo () {}\n\t\t\t\t\tname = declaration.id.name;\n\t\t\t\t}\n\n\t\t\t\tthis.exports[ name ] = {\n\t\t\t\t\tstatement,\n\t\t\t\t\tlocalName: name,\n\t\t\t\t\texpression: declaration\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Store `export * from '...'` statements in an array of delegates.\n\t\t// When an unknown import is encountered, we see if one of them can satisfy it.\n\t\telse {\n\t\t\tthis.exportDelegates.push({\n\t\t\t\tstatement,\n\t\t\t\tsource\n\t\t\t});\n\t\t}\n\t}\n\n\taddImport ( statement ) {\n\t\tconst node = statement.node;\n\t\tconst source = node.source.value;\n\n\t\tnode.specifiers.forEach( specifier => {\n\t\t\tconst isDefault = specifier.type === 'ImportDefaultSpecifier';\n\t\t\tconst isNamespace = specifier.type === 'ImportNamespaceSpecifier';\n\n\t\t\tconst localName = specifier.local.name;\n\t\t\tconst name = isDefault ? 'default' : isNamespace ? '*' : specifier.imported.name;\n\n\t\t\tif ( this.imports[ localName ] ) {\n\t\t\t\tconst err = new Error( `Duplicated import '${localName}'` );\n\t\t\t\terr.file = this.id;\n\t\t\t\terr.loc = getLocation( this.source, specifier.start );\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\tthis.imports[ localName ] = {\n\t\t\t\tsource,\n\t\t\t\tname,\n\t\t\t\tlocalName\n\t\t\t};\n\t\t});\n\t}\n\n\tanalyse () {\n\t\t// discover this module's imports and exports\n\t\tthis.statements.forEach( statement => {\n\t\t\tif ( statement.isImportDeclaration ) this.addImport( statement );\n\t\t\telse if ( statement.isExportDeclaration ) this.addExport( statement );\n\n\t\t\tstatement.analyse();\n\n\t\t\t// consolidate names that are defined/modified in this module\n\t\t\tkeys( statement.defines ).forEach( name => {\n\t\t\t\tthis.definitions[ name ] = statement;\n\t\t\t});\n\n\t\t\tkeys( statement.modifies ).forEach( name => {\n\t\t\t\t( this.modifications[ name ] || ( this.modifications[ name ] = [] ) ).push( statement );\n\t\t\t});\n\t\t});\n\n\t\t// if names are referenced that are neither defined nor imported\n\t\t// in this module, we assume that they're globals\n\t\tthis.statements.forEach( statement => {\n\t\t\tkeys( statement.dependsOn ).forEach( name => {\n\t\t\t\tif ( !this.definitions[ name ] && !this.imports[ name ] ) {\n\t\t\t\t\tthis.bundle.assumedGlobals[ name ] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tconsolidateDependencies () {\n\t\tlet strongDependencies = blank();\n\n\t\tthis.statements.forEach( statement => {\n\t\t\tif ( statement.isImportDeclaration && !statement.node.specifiers.length && !statement.module.isExternal ) {\n\t\t\t\t// include module for its side-effects\n\t\t\t\tstrongDependencies[ statement.module.id ] = statement.module; // TODO is this right? `statement.module` should be `this`, surely?\n\t\t\t}\n\n\t\t\tkeys( statement.stronglyDependsOn ).forEach( name => {\n\t\t\t\tif ( statement.defines[ name ] ) return;\n\n\t\t\t\tconst exportAllDeclaration = this.exportAlls[ name ];\n\n\t\t\t\tif ( exportAllDeclaration && exportAllDeclaration.module && !exportAllDeclaration.module.isExternal ) {\n\t\t\t\t\tstrongDependencies[ exportAllDeclaration.module.id ] = exportAllDeclaration.module;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst importDeclaration = this.imports[ name ];\n\n\t\t\t\tif ( importDeclaration && importDeclaration.module && !importDeclaration.module.isExternal ) {\n\t\t\t\t\tstrongDependencies[ importDeclaration.module.id ] = importDeclaration.module;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tlet weakDependencies = blank();\n\n\t\tthis.statements.forEach( statement => {\n\t\t\tkeys( statement.dependsOn ).forEach( name => {\n\t\t\t\tif ( statement.defines[ name ] ) return;\n\n\t\t\t\tconst importDeclaration = this.imports[ name ];\n\n\t\t\t\tif ( importDeclaration && importDeclaration.module && !importDeclaration.module.isExternal ) {\n\t\t\t\t\tweakDependencies[ importDeclaration.module.id ] = importDeclaration.module;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn { strongDependencies, weakDependencies };\n\t}\n\n\tfindDefiningStatement ( name ) {\n\t\tif ( this.definitions[ name ] ) return this.definitions[ name ];\n\n\t\t// TODO what about `default`/`*`?\n\n\t\tconst importDeclaration = this.imports[ name ];\n\t\tif ( !importDeclaration ) return null;\n\n\t\treturn sander.Promise.resolve( importDeclaration.module || this.bundle.fetchModule( importDeclaration.source, this.id ) )\n\t\t\t.then( module => {\n\t\t\t\timportDeclaration.module = module;\n\t\t\t\treturn module.findDefiningStatement( name );\n\t\t\t});\n\t}\n\n\tfindDeclaration ( localName ) {\n\t\tconst importDeclaration = this.imports[ localName ];\n\n\t\t// name was defined by another module\n\t\tif ( importDeclaration ) {\n\t\t\tconst module = importDeclaration.module;\n\n\t\t\tif ( module.isExternal ) return null;\n\n\t\t\tconst exportDeclaration = module.exports[ importDeclaration.name ];\n\t\t\treturn module.findDeclaration( exportDeclaration.localName );\n\t\t}\n\n\t\t// name was defined by this module, if any\n\t\tlet i = this.statements.length;\n\t\twhile ( i-- ) {\n\t\t\tconst declaration = this.statements[i].scope.declarations[ localName ];\n\t\t\tif ( declaration ) {\n\t\t\t\treturn declaration;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetCanonicalName ( localName, es6 ) {\n\t\t// Special case\n\t\tif ( localName === 'default' && ( this.exports.default.isModified || !this.suggestedNames.default ) ) {\n\t\t\tlet canonicalName = makeLegalIdentifier( this.id.replace( dirname( this.bundle.entryModule.id ) + '/', '' ).replace( /\\.js$/, '' ) );\n\t\t\treturn deconflict( canonicalName, this.definitions );\n\t\t}\n\n\t\tif ( this.suggestedNames[ localName ] ) {\n\t\t\tlocalName = this.suggestedNames[ localName ];\n\t\t}\n\n\t\tconst id = localName + ( es6 ? '-es6' : '' ); // TODO ugh this seems like a terrible hack\n\n\t\tif ( !this.canonicalNames[ id ] ) {\n\t\t\tlet canonicalName;\n\n\t\t\tif ( this.imports[ localName ] ) {\n\t\t\t\tconst importDeclaration = this.imports[ localName ];\n\t\t\t\tconst module = importDeclaration.module;\n\n\t\t\t\tif ( importDeclaration.name === '*' ) {\n\t\t\t\t\tcanonicalName = module.suggestedNames[ '*' ];\n\t\t\t\t} else {\n\t\t\t\t\tlet exporterLocalName;\n\n\t\t\t\t\tif ( module.isExternal ) {\n\t\t\t\t\t\texporterLocalName = importDeclaration.name;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst exportDeclaration = module.exports[ importDeclaration.name ];\n\n\t\t\t\t\t\t// The export declaration of the particular name is known.\n\t\t\t\t\t\tif (exportDeclaration) {\n\t\t\t\t\t\t\texporterLocalName = exportDeclaration.localName;\n\t\t\t\t\t\t} else { // export * from '...'\n\t\t\t\t\t\t\texporterLocalName = importDeclaration.name;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcanonicalName = module.getCanonicalName( exporterLocalName, es6 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\tcanonicalName = localName;\n\t\t\t}\n\n\t\t\tthis.canonicalNames[ id ] = canonicalName;\n\t\t}\n\n\t\treturn this.canonicalNames[ id ];\n\t}\n\n\tmark ( name ) {\n\t\t// shortcut cycles. TODO this won't work everywhere...\n\t\tif ( this.definitionPromises[ name ] ) {\n\t\t\treturn emptyArrayPromise;\n\t\t}\n\n\t\tlet promise;\n\n\t\t// The definition for this name is in a different module\n\t\tif ( this.imports[ name ] ) {\n\t\t\tconst importDeclaration = this.imports[ name ];\n\n\t\t\tpromise = this.bundle.fetchModule( importDeclaration.source, this.id )\n\t\t\t\t.then( module => {\n\t\t\t\t\timportDeclaration.module = module;\n\n\t\t\t\t\t// suggest names. TODO should this apply to non default/* imports?\n\t\t\t\t\tif ( importDeclaration.name === 'default' ) {\n\t\t\t\t\t\t// TODO this seems ropey\n\t\t\t\t\t\tconst localName = importDeclaration.localName;\n\t\t\t\t\t\tlet suggestion = this.suggestedNames[ localName ] || localName;\n\n\t\t\t\t\t\t// special case - the module has its own import by this name\n\t\t\t\t\t\twhile ( !module.isExternal && module.imports[ suggestion ] ) {\n\t\t\t\t\t\t\tsuggestion = `_${suggestion}`;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmodule.suggestName( 'default', suggestion );\n\t\t\t\t\t} else if ( importDeclaration.name === '*' ) {\n\t\t\t\t\t\tconst localName = importDeclaration.localName;\n\t\t\t\t\t\tconst suggestion = this.suggestedNames[ localName ] || localName;\n\t\t\t\t\t\tmodule.suggestName( '*', suggestion );\n\t\t\t\t\t\tmodule.suggestName( 'default', `${suggestion}__default` );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( module.isExternal ) {\n\t\t\t\t\t\tif ( importDeclaration.name === 'default' ) {\n\t\t\t\t\t\t\tmodule.needsDefault = true;\n\t\t\t\t\t\t} else if ( importDeclaration.name === '*' ) {\n\t\t\t\t\t\t\tmodule.needsAll = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmodule.needsNamed = true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmodule.importedByBundle.push( importDeclaration );\n\t\t\t\t\t\treturn emptyArrayPromise;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( importDeclaration.name === '*' ) {\n\t\t\t\t\t\t// we need to create an internal namespace\n\t\t\t\t\t\tif ( !~this.bundle.internalNamespaceModules.indexOf( module ) ) {\n\t\t\t\t\t\t\tthis.bundle.internalNamespaceModules.push( module );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn module.markAllStatements();\n\t\t\t\t\t}\n\n\t\t\t\t\tconst exportDeclaration = module.exports[ importDeclaration.name ];\n\n\t\t\t\t\tif ( !exportDeclaration ) {\n\t\t\t\t\t\tconst noExport = new Error( `Module ${module.id} does not export ${importDeclaration.name} (imported by ${this.id})` );\n\n\t\t\t\t\t\t// See if there exists an export delegate that defines `name`.\n\t\t\t\t\t\treturn first( module.exportDelegates, noExport, declaration => {\n\t\t\t\t\t\t\treturn module.bundle.fetchModule( declaration.source, module.id ).then( submodule => {\n\t\t\t\t\t\t\t\tdeclaration.module = submodule;\n\n\t\t\t\t\t\t\t\treturn submodule.mark( name ).then( result => {\n\t\t\t\t\t\t\t\t\tif ( !result.length ) throw noExport;\n\n\t\t\t\t\t\t\t\t\t// It's found! This module exports `name` through declaration.\n\t\t\t\t\t\t\t\t\t// It is however not imported into this scope.\n\t\t\t\t\t\t\t\t\tmodule.exportAlls[ name ] = declaration;\n\n\t\t\t\t\t\t\t\t\tdeclaration.statement.dependsOn[ name ] =\n\t\t\t\t\t\t\t\t\tdeclaration.statement.stronglyDependsOn[ name ] = result;\n\n\t\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\texportDeclaration.isUsed = true;\n\t\t\t\t\treturn module.mark( exportDeclaration.localName );\n\t\t\t\t});\n\t\t}\n\n\t\t// The definition is in this module\n\t\telse if ( name === 'default' && this.exports.default.isDeclaration ) {\n\t\t\t// We have something like `export default foo` - so we just start again,\n\t\t\t// searching for `foo` instead of default\n\t\t\tpromise = this.mark( this.exports.default.name );\n\t\t}\n\n\t\telse {\n\t\t\tlet statement;\n\n\t\t\tstatement = name === 'default' ? this.exports.default.statement : this.definitions[ name ];\n\t\t\tpromise = statement && !statement.isIncluded ? statement.mark() : emptyArrayPromise;\n\n\t\t\t// Special case - `export default foo; foo += 1` - need to be\n\t\t\t// vigilant about maintaining the correct order of the export\n\t\t\t// declaration. Otherwise, the export declaration will always\n\t\t\t// go at the end of the expansion, because the expansion of\n\t\t\t// `foo` will include statements *after* the declaration\n\t\t\tif ( name === 'default' && this.exports.default.identifier && this.exports.default.isModified ) {\n\t\t\t\tconst defaultExportStatement = this.exports.default.statement;\n\t\t\t\tpromise = promise.then( statements => {\n\t\t\t\t\t// remove the default export statement...\n\t\t\t\t\t// TODO could this be statements.pop()?\n\t\t\t\t\tstatements.splice( statements.indexOf( defaultExportStatement ), 1 );\n\n\t\t\t\t\tlet i = statements.length;\n\t\t\t\t\tlet inserted = false;\n\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( statements[i].module === this && statements[i].index < defaultExportStatement.index ) {\n\t\t\t\t\t\t\tstatements.splice( i + 1, 0, defaultExportStatement );\n\t\t\t\t\t\t\tinserted = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !inserted ) statements.push( statement );\n\t\t\t\t\treturn statements;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.definitionPromises[ name ] = promise || emptyArrayPromise;\n\t\treturn this.definitionPromises[ name ];\n\t}\n\n\tmarkAllStatements ( isEntryModule ) {\n\t\treturn sequence( this.statements, statement => {\n\t\t\tif ( statement.isIncluded ) return; // TODO can this happen? probably not...\n\n\t\t\t// skip import declarations...\n\t\t\tif ( statement.isImportDeclaration ) {\n\t\t\t\t// ...unless they're empty, in which case assume we're importing them for the side-effects\n\t\t\t\t// THIS IS NOT FOOLPROOF. Probably need /*rollup: include */ or similar\n\t\t\t\tif ( !statement.node.specifiers.length ) {\n\t\t\t\t\treturn this.bundle.fetchModule( statement.node.source.value, this.id )\n\t\t\t\t\t\t.then( module => {\n\t\t\t\t\t\t\tstatement.module = module;\n\t\t\t\t\t\t\tif ( module.isExternal ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn module.markAllStatements();\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// skip `export { foo, bar, baz }`...\n\t\t\tif ( statement.node.type === 'ExportNamedDeclaration' && statement.node.specifiers.length ) {\n\t\t\t\t// ...but ensure they are defined, if this is the entry module\n\t\t\t\tif ( isEntryModule ) {\n\t\t\t\t\treturn statement.mark();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// include everything else\n\t\t\treturn statement.mark();\n\t\t});\n\t}\n\n\t// TODO rename this to parse, once https://github.com/rollup/rollup/issues/42 is fixed\n\t_parse () {\n\t\t// Try to extract a list of top-level statements/declarations. If\n\t\t// the parse fails, attach file info and abort\n\t\tlet ast;\n\n\t\ttry {\n\t\t\tast = acorn.parse( this.source, {\n\t\t\t\tecmaVersion: 6,\n\t\t\t\tsourceType: 'module',\n\t\t\t\tonComment: ( block, text, start, end ) => this.comments.push({ block, text, start, end })\n\t\t\t});\n\t\t} catch ( err ) {\n\t\t\terr.code = 'PARSE_ERROR';\n\t\t\terr.file = this.id; // see above - not necessarily true, but true enough\n\t\t\tthrow err;\n\t\t}\n\n\t\twalk( ast, {\n\t\t\tenter: node => {\n\t\t\t\tthis.magicString.addSourcemapLocation( node.start );\n\t\t\t\tthis.magicString.addSourcemapLocation( node.end );\n\t\t\t}\n\t\t});\n\n\t\tlet statements = [];\n\t\tlet lastChar = 0;\n\t\tlet commentIndex = 0;\n\n\t\tast.body.forEach( node => {\n\t\t\t// special case - top-level var declarations with multiple declarators\n\t\t\t// should be split up. Otherwise, we may end up including code we\n\t\t\t// don't need, just because an unwanted declarator is included\n\t\t\tif ( node.type === 'VariableDeclaration' && node.declarations.length > 1 ) {\n\t\t\t\t// remove the leading var/let/const\n\t\t\t\tthis.magicString.remove( node.start, node.declarations[0].start );\n\n\t\t\t\tnode.declarations.forEach( ( declarator, i ) => {\n\t\t\t\t\tconst { start, end } = declarator;\n\n\t\t\t\t\tconst syntheticNode = {\n\t\t\t\t\t\ttype: 'VariableDeclaration',\n\t\t\t\t\t\tkind: node.kind,\n\t\t\t\t\t\tstart,\n\t\t\t\t\t\tend,\n\t\t\t\t\t\tdeclarations: [ declarator ],\n\t\t\t\t\t\tisSynthetic: true\n\t\t\t\t\t};\n\n\t\t\t\t\tconst statement = new Statement( syntheticNode, this, start, end );\n\t\t\t\t\tstatements.push( statement );\n\t\t\t\t});\n\n\t\t\t\tlastChar = node.end; // TODO account for trailing line comment\n\t\t\t}\n\n\t\t\telse {\n\t\t\t\tlet comment;\n\t\t\t\tdo {\n\t\t\t\t\tcomment = this.comments[ commentIndex ];\n\t\t\t\t\tif ( !comment ) break;\n\t\t\t\t\tif ( comment.start > node.start ) break;\n\t\t\t\t\tcommentIndex += 1;\n\t\t\t\t} while ( comment.end < lastChar );\n\n\t\t\t\tconst start = comment ? Math.min( comment.start, node.start ) : node.start;\n\t\t\t\tconst end = node.end; // TODO account for trailing line comment\n\n\t\t\t\tconst statement = new Statement( node, this, start, end );\n\t\t\t\tstatements.push( statement );\n\n\t\t\t\tlastChar = end;\n\t\t\t}\n\t\t});\n\n\t\tstatements.forEach( ( statement, i ) => {\n\t\t\tconst nextStatement = statements[ i + 1 ];\n\t\t\tstatement.next = nextStatement ? nextStatement.start : statement.end;\n\t\t});\n\n\t\treturn statements;\n\t}\n\n\trename ( name, replacement ) {\n\t\t// TODO again, hacky...\n\t\tthis.canonicalNames[ name ] = this.canonicalNames[ name + '-es6' ] = replacement;\n\t}\n\n\trender ( allBundleExports, format ) {\n\t\tlet magicString = this.magicString.clone();\n\n\t\tlet previousIndex = -1;\n\t\tlet previousMargin = 0;\n\n\t\tthis.statements.forEach( ( statement, i ) => {\n\t\t\tif ( !statement.isIncluded ) {\n\t\t\t\tmagicString.remove( statement.start, statement.next );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// skip `export { foo, bar, baz }`\n\t\t\tif ( statement.node.type === 'ExportNamedDeclaration' ) {\n\t\t\t\t// skip `export { foo, bar, baz }`\n\t\t\t\tif ( statement.node.specifiers.length ) {\n\t\t\t\t\tmagicString.remove( statement.start, statement.next );\n\t\t\t\t\treturn;\n\t\t\t\t};\n\n\t\t\t\t// skip `export var foo;` if foo is exported\n\t\t\t\tif ( isEmptyExportedVarDeclaration( statement.node.declaration, statement.module, allBundleExports, format === 'es6' ) ) {\n\t\t\t\t\tmagicString.remove( statement.start, statement.next );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// skip empty var declarations for exported bindings\n\t\t\t// (otherwise we're left with `exports.foo;`, which is useless)\n\t\t\tif ( isEmptyExportedVarDeclaration( statement.node, statement.module, allBundleExports, format === 'es6' ) ) {\n\t\t\t\tmagicString.remove( statement.start, statement.next );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// split up/remove var declarations as necessary\n\t\t\tif ( statement.node.isSynthetic ) {\n\t\t\t\tmagicString.insert( statement.start, `${statement.node.kind} ` );\n\t\t\t\tmagicString.overwrite( statement.end, statement.next, ';\\n' ); // TODO account for trailing newlines\n\t\t\t}\n\n\t\t\tlet replacements = blank();\n\t\t\tlet bundleExports = blank();\n\n\t\t\tkeys( statement.dependsOn )\n\t\t\t\t.concat( keys( statement.defines ) )\n\t\t\t\t.forEach( name => {\n\t\t\t\t\tconst canonicalName = statement.module.getCanonicalName( name, format === 'es6' );\n\n\t\t\t\t\tif ( allBundleExports[ canonicalName ] ) {\n\t\t\t\t\t\tbundleExports[ name ] = replacements[ name ] = allBundleExports[ canonicalName ];\n\t\t\t\t\t} else if ( name !== canonicalName ) {\n\t\t\t\t\t\treplacements[ name ] = canonicalName;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tstatement.replaceIdentifiers( magicString, replacements, bundleExports );\n\n\t\t\t// modify exports as necessary\n\t\t\tif ( statement.isExportDeclaration ) {\n\t\t\t\t// remove `export` from `export var foo = 42`\n\t\t\t\tif ( statement.node.type === 'ExportNamedDeclaration' && statement.node.declaration.type === 'VariableDeclaration' ) {\n\t\t\t\t\tmagicString.remove( statement.node.start, statement.node.declaration.start );\n\t\t\t\t}\n\n\t\t\t\t// remove `export` from `export class Foo {...}` or `export default Foo`\n\t\t\t\t// TODO default exports need different treatment\n\t\t\t\telse if ( statement.node.declaration.id ) {\n\t\t\t\t\tmagicString.remove( statement.node.start, statement.node.declaration.start );\n\t\t\t\t}\n\n\t\t\t\telse if ( statement.node.type === 'ExportDefaultDeclaration' ) {\n\t\t\t\t\tconst module = statement.module;\n\t\t\t\t\tconst canonicalName = module.getCanonicalName( 'default', format === 'es6' );\n\n\t\t\t\t\tif ( statement.node.declaration.type === 'Identifier' && canonicalName === module.getCanonicalName( statement.node.declaration.name, format === 'es6' ) ) {\n\t\t\t\t\t\tmagicString.remove( statement.start, statement.next );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// anonymous functions should be converted into declarations\n\t\t\t\t\tif ( statement.node.declaration.type === 'FunctionExpression' ) {\n\t\t\t\t\t\tmagicString.overwrite( statement.node.start, statement.node.declaration.start + 8, `function ${canonicalName}` );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmagicString.overwrite( statement.node.start, statement.node.declaration.start, `var ${canonicalName} = ` );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\tthrow new Error( 'Unhandled export' );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn magicString.trim();\n\t}\n\n\tsuggestName ( defaultOrBatch, suggestion ) {\n\t\t// deconflict anonymous default exports with this module's definitions\n\t\tconst shouldDeconflict = this.exports.default && this.exports.default.isAnonymous;\n\n\t\tif ( shouldDeconflict ) suggestion = deconflict( suggestion, this.definitions );\n\n\t\tif ( !this.suggestedNames[ defaultOrBatch ] ) {\n\t\t\tthis.suggestedNames[ defaultOrBatch ] = makeLegalIdentifier( suggestion );\n\t\t}\n\t}\n}\n\nclass ExternalModule {\n\tconstructor ( id ) {\n\t\tthis.id = id;\n\t\tthis.name = null;\n\n\t\tthis.isExternal = true;\n\t\tthis.importedByBundle = [];\n\n\t\tthis.canonicalNames = blank();\n\t\tthis.suggestedNames = blank();\n\n\t\tthis.needsDefault = false;\n\n\t\t// Invariant: needsNamed and needsAll are never both true at once.\n\t\t// Because an import with both a namespace and named import is invalid:\n\t\t//\n\t\t// \t\timport * as ns, { a } from '...'\n\t\t//\n\t\tthis.needsNamed = false;\n\t\tthis.needsAll = false;\n\t}\n\n\tfindDefiningStatement () {\n\t\treturn null;\n\t}\n\n\tgetCanonicalName ( name, es6 ) {\n\t\tif ( name === 'default' ) {\n\t\t\treturn this.needsNamed && !es6 ? `${this.name}__default` : this.name;\n\t\t}\n\n\t\tif ( name === '*' ) {\n\t\t\treturn this.name; // TODO is this correct in ES6?\n\t\t}\n\n\t\treturn es6 ? ( this.canonicalNames[ name ] || name ) : `${this.name}.${name}`;\n\t}\n\n\trename ( name, replacement ) {\n\t\tthis.canonicalNames[ name ] = replacement;\n\t}\n\n\tsuggestName ( exportName, suggestion ) {\n\t\tif ( !this.suggestedNames[ exportName ] ) {\n\t\t\tthis.suggestedNames[ exportName ] = suggestion;\n\t\t}\n\t}\n}\n\nfunction ensureArray ( thing ) {\n\tif ( Array.isArray( thing ) ) return thing;\n\tif ( thing == undefined ) return [];\n\treturn [ thing ];\n}\n\nfunction defaultResolver ( importee, importer, options ) {\n\t// absolute paths are left untouched\n\tif ( isAbsolute( importee ) ) return importee;\n\n\t// if this is the entry point, resolve against cwd\n\tif ( importer === undefined ) return resolve( process.cwd(), importee );\n\n\t// we try to resolve external modules\n\tif ( importee[0] !== '.' ) {\n\t\t// unless we want to keep it external, that is\n\t\tif ( ~options.external.indexOf( importee ) ) return null;\n\n\t\treturn options.resolveExternal( importee, importer, options );\n\t}\n\n\treturn resolve( dirname( importer ), importee ).replace( /\\.js$/, '' ) + '.js';\n}\n\nfunction defaultExternalResolver ( id, importer ) {\n\t// for now, only node_modules is supported, and only jsnext:main\n\tconst root = absolutePath.exec( importer )[0];\n\tlet dir = dirname( importer );\n\n\twhile ( dir !== root ) {\n\t\tconst pkgPath = resolve( dir, 'node_modules', id, 'package.json' );\n\t\tlet pkgJson;\n\n\t\ttry {\n\t\t\tpkgJson = sander.readFileSync( pkgPath ).toString();\n\t\t} catch ( err ) {\n\t\t\t// noop\n\t\t}\n\n\t\tif ( pkgJson ) {\n\t\t\tlet pkg;\n\n\t\t\ttry {\n\t\t\t\tpkg = JSON.parse( pkgJson );\n\t\t\t} catch ( err ) {\n\t\t\t\tthrow new Error( `Malformed JSON: ${pkgPath}` );\n\t\t\t}\n\n\t\t\tconst main = pkg[ 'jsnext:main' ];\n\n\t\t\tif ( !main ) {\n\t\t\t\tthrow new Error( `Package ${id} does not have a jsnext:main field, and so cannot be included in your rollup. Try adding it as an external module instead (e.g. options.external = ['${id}']). See https://github.com/rollup/rollup/wiki/jsnext:main for more info` );\n\t\t\t}\n\n\t\t\treturn resolve( dirname( pkgPath ), main ).replace( /\\.js$/, '' ) + '.js';\n\t\t}\n\n\t\tdir = dirname( dir );\n\t}\n\n\tthrow new Error( `Could not find package ${id} (required by ${importer})` );\n}\n\nfunction defaultLoader ( id, options ) {\n\t// TODO support plugins e.g. !css and !json?\n\tconst source = sander.readFileSync( id, { encoding: 'utf-8' });\n\n\treturn options.transform.reduce( ( source, transformer ) => {\n\t\treturn transformer( source, id );\n\t}, source );\n}\n\nclass Bundle {\n\tconstructor ( options ) {\n\t\tthis.entry = options.entry;\n\t\tthis.entryModule = null;\n\n\t\tthis.resolveId = options.resolveId || defaultResolver;\n\t\tthis.load = options.load || defaultLoader;\n\n\t\tthis.resolveOptions = {\n\t\t\texternal: ensureArray( options.external ),\n\t\t\tresolveExternal: options.resolveExternal || defaultExternalResolver\n\t\t};\n\n\t\tthis.loadOptions = {\n\t\t\ttransform: ensureArray( options.transform )\n\t\t};\n\n\t\tthis.varExports = blank();\n\t\tthis.toExport = null;\n\n\t\tthis.modulePromises = blank();\n\t\tthis.modules = [];\n\n\t\tthis.statements = null;\n\t\tthis.externalModules = [];\n\t\tthis.internalNamespaceModules = [];\n\t\tthis.assumedGlobals = blank();\n\t}\n\n\tbuild () {\n\t\treturn this.fetchModule( this.entry, undefined )\n\t\t\t.then( entryModule => {\n\t\t\t\tconst defaultExport = entryModule.exports.default;\n\n\t\t\t\tthis.entryModule = entryModule;\n\n\t\t\t\tif ( defaultExport ) {\n\t\t\t\t\t// `export default function foo () {...}` -\n\t\t\t\t\t// use the declared name for the export\n\t\t\t\t\tif ( defaultExport.declaredName ) {\n\t\t\t\t\t\tentryModule.suggestName( 'default', defaultExport.declaredName );\n\t\t\t\t\t}\n\n\t\t\t\t\t// `export default a + b` - generate an export name\n\t\t\t\t\t// based on the id of the entry module\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet defaultExportName = makeLegalIdentifier( basename( this.entryModule.id ).slice( 0, -extname( this.entryModule.id ).length ) );\n\n\t\t\t\t\t\t// deconflict\n\t\t\t\t\t\tlet topLevelNames = [];\n\t\t\t\t\t\tentryModule.statements.forEach( statement => {\n\t\t\t\t\t\t\tkeys( statement.defines ).forEach( name => topLevelNames.push( name ) );\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\twhile ( ~topLevelNames.indexOf( defaultExportName ) ) {\n\t\t\t\t\t\t\tdefaultExportName = `_${defaultExportName}`;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tentryModule.suggestName( 'default', defaultExportName );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn entryModule.markAllStatements( true );\n\t\t\t})\n\t\t\t.then( () => {\n\t\t\t\treturn this.markAllModifierStatements();\n\t\t\t})\n\t\t\t.then( () => {\n\t\t\t\tthis.orderedModules = this.sort();\n\t\t\t});\n\t}\n\n\tdeconflict ( es6 ) {\n\t\tlet definers = blank();\n\t\tlet conflicts = blank();\n\n\t\t// Assign names to external modules\n\t\tthis.externalModules.forEach( module => {\n\t\t\t// TODO is this right?\n\t\t\tlet name = makeLegalIdentifier( module.suggestedNames['*'] || module.suggestedNames.default || module.id );\n\n\t\t\tif ( definers[ name ] ) {\n\t\t\t\tconflicts[ name ] = true;\n\t\t\t} else {\n\t\t\t\tdefiners[ name ] = [];\n\t\t\t}\n\n\t\t\tdefiners[ name ].push( module );\n\t\t\tmodule.name = name;\n\t\t\tthis.assumedGlobals[ name ] = true;\n\t\t});\n\n\t\t// Discover conflicts (i.e. two statements in separate modules both define `foo`)\n\t\tthis.orderedModules.forEach( module => {\n\t\t\tmodule.statements.forEach( statement => {\n\t\t\t\tconst names = keys( statement.defines );\n\n\t\t\t\t// with default exports that are expressions (`export default 42`),\n\t\t\t\t// we need to ensure that the name chosen for the expression does\n\t\t\t\t// not conflict\n\t\t\t\tif ( statement.node.type === 'ExportDefaultDeclaration' ) {\n\t\t\t\t\tconst name = module.getCanonicalName( 'default', es6 );\n\n\t\t\t\t\tconst isProxy = statement.node.declaration && statement.node.declaration.type === 'Identifier';\n\t\t\t\t\tconst shouldDeconflict = !isProxy || ( module.getCanonicalName( statement.node.declaration.name, es6 ) !== name );\n\n\t\t\t\t\tif ( shouldDeconflict && !~names.indexOf( name ) ) {\n\t\t\t\t\t\tnames.push( name );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnames.forEach( name => {\n\t\t\t\t\tif ( definers[ name ] ) {\n\t\t\t\t\t\tconflicts[ name ] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdefiners[ name ] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\t// TODO in good js, there shouldn't be duplicate definitions\n\t\t\t\t\t// per module... but some people write bad js\n\t\t\t\t\tdefiners[ name ].push( module );\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\t// Ensure we don't conflict with globals\n\t\tkeys( this.assumedGlobals ).forEach( name => {\n\t\t\tif ( definers[ name ] ) {\n\t\t\t\tconflicts[ name ] = true;\n\t\t\t}\n\t\t});\n\n\t\t// Rename conflicting identifiers so they can live in the same scope\n\t\tkeys( conflicts ).forEach( name => {\n\t\t\tconst modules = definers[ name ];\n\n\t\t\tif ( !this.assumedGlobals[ name ] ) {\n\t\t\t\t// the module closest to the entryModule gets away with\n\t\t\t\t// keeping things as they are, unless we have a conflict\n\t\t\t\t// with a global name\n\t\t\t\tmodules.pop();\n\t\t\t}\n\n\t\t\tmodules.forEach( module => {\n\t\t\t\tconst replacement = getSafeName( name );\n\t\t\t\tmodule.rename( name, replacement );\n\t\t\t});\n\t\t});\n\n\t\tfunction getSafeName ( name ) {\n\t\t\twhile ( conflicts[ name ] ) {\n\t\t\t\tname = `_${name}`;\n\t\t\t}\n\n\t\t\tconflicts[ name ] = true;\n\t\t\treturn name;\n\t\t}\n\t}\n\n\tfetchModule ( importee, importer ) {\n\t\treturn sander.Promise.resolve( this.resolveId( importee, importer, this.resolveOptions ) )\n\t\t\t.then( id => {\n\t\t\t\tif ( !id ) {\n\t\t\t\t\t// external module\n\t\t\t\t\tif ( !this.modulePromises[ importee ] ) {\n\t\t\t\t\t\tconst module = new ExternalModule( importee );\n\t\t\t\t\t\tthis.externalModules.push( module );\n\t\t\t\t\t\tthis.modulePromises[ importee ] = sander.Promise.resolve( module );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this.modulePromises[ importee ];\n\t\t\t\t}\n\n\t\t\t\tif ( !this.modulePromises[ id ] ) {\n\t\t\t\t\tthis.modulePromises[ id ] = sander.Promise.resolve( this.load( id, this.loadOptions ) )\n\t\t\t\t\t\t.then( source => {\n\t\t\t\t\t\t\tconst module = new Module({\n\t\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\t\tsource,\n\t\t\t\t\t\t\t\tbundle: this\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tthis.modules.push( module );\n\n\t\t\t\t\t\t\treturn module;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn this.modulePromises[ id ];\n\t\t\t});\n\t}\n\n\tmarkAllModifierStatements () {\n\t\tlet settled = true;\n\t\tlet promises = [];\n\n\t\tthis.modules.forEach( module => {\n\t\t\tmodule.statements.forEach( statement => {\n\t\t\t\tif ( statement.isIncluded ) return;\n\n\t\t\t\tkeys( statement.modifies ).forEach( name => {\n\t\t\t\t\tconst definingStatement = module.definitions[ name ];\n\t\t\t\t\tconst exportDeclaration = module.exports[ name ] || (\n\t\t\t\t\t\tmodule.exports.default && module.exports.default.identifier === name && module.exports.default\n\t\t\t\t\t);\n\n\t\t\t\t\tconst shouldMark = ( definingStatement && definingStatement.isIncluded ) ||\n\t\t\t\t\t ( exportDeclaration && exportDeclaration.isUsed );\n\n\t\t\t\t\tif ( shouldMark ) {\n\t\t\t\t\t\tsettled = false;\n\t\t\t\t\t\tpromises.push( statement.mark() );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// special case - https://github.com/rollup/rollup/pull/40\n\t\t\t\t\tconst importDeclaration = module.imports[ name ];\n\t\t\t\t\tif ( !importDeclaration ) return;\n\n\t\t\t\t\tconst promise = sander.Promise.resolve( importDeclaration.module || this.fetchModule( importDeclaration.source, module.id ) )\n\t\t\t\t\t\t.then( module => {\n\t\t\t\t\t\t\timportDeclaration.module = module;\n\t\t\t\t\t\t\tconst exportDeclaration = module.exports[ importDeclaration.name ];\n\t\t\t\t\t\t\t// TODO things like `export default a + b` don't apply here... right?\n\t\t\t\t\t\t\treturn module.findDefiningStatement( exportDeclaration.localName );\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then( definingStatement => {\n\t\t\t\t\t\t\tif ( !definingStatement ) return;\n\n\t\t\t\t\t\t\tsettled = false;\n\t\t\t\t\t\t\treturn statement.mark();\n\t\t\t\t\t\t});\n\n\t\t\t\t\tpromises.push( promise );\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\treturn sander.Promise.all( promises ).then( () => {\n\t\t\tif ( !settled ) return this.markAllModifierStatements();\n\t\t});\n\t}\n\n\trender ( options = {} ) {\n\t\tconst format = options.format || 'es6';\n\t\tthis.deconflict( format === 'es6' );\n\n\t\t// If we have named exports from the bundle, and those exports\n\t\t// are assigned to *within* the bundle, we may need to rewrite e.g.\n\t\t//\n\t\t// export let count = 0;\n\t\t// export function incr () { count++ }\n\t\t//\n\t\t// might become...\n\t\t//\n\t\t// exports.count = 0;\n\t\t// function incr () {\n\t\t// exports.count += 1;\n\t\t// }\n\t\t// exports.incr = incr;\n\t\t//\n\t\t// This doesn't apply if the bundle is exported as ES6!\n\t\tlet allBundleExports = blank();\n\n\t\tif ( format !== 'es6' ) {\n\t\t\tkeys( this.entryModule.exports ).forEach( key => {\n\t\t\t\tconst exportDeclaration = this.entryModule.exports[ key ];\n\n\t\t\t\tconst originalDeclaration = this.entryModule.findDeclaration( exportDeclaration.localName );\n\n\t\t\t\tif ( originalDeclaration && originalDeclaration.type === 'VariableDeclaration' ) {\n\t\t\t\t\tconst canonicalName = this.entryModule.getCanonicalName( exportDeclaration.localName, false );\n\n\t\t\t\t\tallBundleExports[ canonicalName ] = `exports.${key}`;\n\t\t\t\t\tthis.varExports[ key ] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// since we're rewriting variable exports, we want to\n\t\t// ensure we don't try and export them again at the bottom\n\t\tthis.toExport = keys( this.entryModule.exports )\n\t\t\t.filter( key => !this.varExports[ key ] );\n\n\n\t\tlet magicString = new MagicString.Bundle({ separator: '\\n\\n' });\n\n\t\tthis.orderedModules.forEach( module => {\n\t\t\tconst source = module.render( allBundleExports, format );\n\t\t\tif ( source.toString().length ) {\n\t\t\t\tmagicString.addSource( source );\n\t\t\t}\n\t\t});\n\n\t\t// prepend bundle with internal namespaces\n\t\tconst indentString = magicString.getIndentString();\n\t\tconst namespaceBlock = this.internalNamespaceModules.map( module => {\n\t\t\tconst exportKeys = keys( module.exports );\n\n\t\t\treturn `var ${module.getCanonicalName('*', format === 'es6')} = {\\n` +\n\t\t\t\texportKeys.map( key => `${indentString}get ${key} () { return ${module.getCanonicalName(key, format === 'es6')}; }` ).join( ',\\n' ) +\n\t\t\t`\\n};\\n\\n`;\n\t\t}).join( '' );\n\n\t\tmagicString.prepend( namespaceBlock );\n\n\t\tconst finalise = finalisers[ format ];\n\n\t\tif ( !finalise ) {\n\t\t\tthrow new Error( `You must specify an output type - valid options are ${keys( finalisers ).join( ', ' )}` );\n\t\t}\n\n\t\tmagicString = finalise( this, magicString.trim(), {\n\t\t\t// Determine export mode - 'default', 'named', 'none'\n\t\t\texportMode: getExportMode( this, options.exports ),\n\n\t\t\t// Determine indentation\n\t\t\tindentString: getIndentString( magicString, options )\n\t\t}, options );\n\n\t\tconst code = magicString.toString();\n\t\tlet map = null;\n\n\t\tif ( options.sourceMap ) {\n\t\t\tconst file = options.sourceMapFile || options.dest;\n\t\t\tmap = magicString.generateMap({\n\t\t\t\tincludeContent: true,\n\t\t\t\tfile\n\t\t\t\t// TODO\n\t\t\t});\n\n\t\t\tmap.sources = map.sources.map( unixizePath );\n\t\t}\n\n\t\treturn { code, map };\n\t}\n\n\tsort () {\n\t\tlet seen = {};\n\t\tlet ordered = [];\n\t\tlet hasCycles;\n\n\t\tlet strongDeps = {};\n\t\tlet stronglyDependsOn = {};\n\n\t\tfunction visit ( module ) {\n\t\t\tseen[ module.id ] = true;\n\n\t\t\tconst { strongDependencies, weakDependencies } = module.consolidateDependencies();\n\n\t\t\tstrongDeps[ module.id ] = [];\n\t\t\tstronglyDependsOn[ module.id ] = {};\n\n\t\t\tkeys( strongDependencies ).forEach( id => {\n\t\t\t\tconst imported = strongDependencies[ id ];\n\n\t\t\t\tstrongDeps[ module.id ].push( imported );\n\n\t\t\t\tif ( seen[ id ] ) {\n\t\t\t\t\t// we need to prevent an infinite loop, and note that\n\t\t\t\t\t// we need to check for strong/weak dependency relationships\n\t\t\t\t\thasCycles = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvisit( imported );\n\t\t\t});\n\n\t\t\tkeys( weakDependencies ).forEach( id => {\n\t\t\t\tconst imported = weakDependencies[ id ];\n\n\t\t\t\tif ( seen[ id ] ) {\n\t\t\t\t\t// we need to prevent an infinite loop, and note that\n\t\t\t\t\t// we need to check for strong/weak dependency relationships\n\t\t\t\t\thasCycles = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvisit( imported );\n\t\t\t});\n\n\t\t\t// add second (and third...) order dependencies\n\t\t\tfunction addStrongDependencies ( dependency ) {\n\t\t\t\tif ( stronglyDependsOn[ module.id ][ dependency.id ] ) return;\n\n\t\t\t\tstronglyDependsOn[ module.id ][ dependency.id ] = true;\n\t\t\t\tstrongDeps[ dependency.id ].forEach( addStrongDependencies );\n\t\t\t}\n\n\t\t\tstrongDeps[ module.id ].forEach( addStrongDependencies );\n\n\t\t\tordered.push( module );\n\t\t}\n\n\t\tvisit( this.entryModule );\n\n\t\tif ( hasCycles ) {\n\t\t\tlet unordered = ordered;\n\t\t\tordered = [];\n\n\t\t\t// unordered is actually semi-ordered, as [ fewer dependencies ... more dependencies ]\n\t\t\tunordered.forEach( module => {\n\t\t\t\t// ensure strong dependencies of `module` that don't strongly depend on `module` go first\n\t\t\t\tstrongDeps[ module.id ].forEach( place );\n\n\t\t\t\tfunction place ( dep ) {\n\t\t\t\t\tif ( !stronglyDependsOn[ dep.id ][ module.id ] && !~ordered.indexOf( dep ) ) {\n\t\t\t\t\t\tstrongDeps[ dep.id ].forEach( place );\n\t\t\t\t\t\tordered.push( dep );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( !~ordered.indexOf( module ) ) {\n\t\t\t\t\tordered.push( module );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn ordered;\n\t}\n}\n\nlet SOURCEMAPPING_URL = 'sourceMa';\nSOURCEMAPPING_URL += 'ppingURL';\n\nfunction rollup ( options ) {\n\tif ( !options || !options.entry ) {\n\t\tthrow new Error( 'You must supply options.entry to rollup' );\n\t}\n\n\tconst bundle = new Bundle( options );\n\n\treturn bundle.build().then( () => {\n\t\treturn {\n\t\t\tgenerate: options => bundle.render( options ),\n\t\t\twrite: options => {\n\t\t\t\tif ( !options || !options.dest ) {\n\t\t\t\t\tthrow new Error( 'You must supply options.dest to bundle.write' );\n\t\t\t\t}\n\n\t\t\t\tconst dest = options.dest;\n\t\t\t\tlet { code, map } = bundle.render( options );\n\n\t\t\t\tlet promises = [];\n\n\t\t\t\tif ( options.sourceMap ) {\n\t\t\t\t\tlet url;\n\n\t\t\t\t\tif ( options.sourceMap === 'inline' ) {\n\t\t\t\t\t\turl = map.toUrl();\n\t\t\t\t\t} else {\n\t\t\t\t\t\turl = `${basename( dest )}.map`;\n\t\t\t\t\t\tpromises.push( sander.writeFile( dest + '.map', map.toString() ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tcode += `\\n//# ${SOURCEMAPPING_URL}=${url}`;\n\t\t\t\t}\n\n\t\t\t\tpromises.push( sander.writeFile( dest, code ) );\n\t\t\t\treturn Promise.all( promises );\n\t\t\t}\n\t\t};\n\t});\n}\n\nexports.rollup = rollup;"],"names":[],"mappings":"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"}
\No newline at end of file