| require! { | 
|   '../library/fn/promise': Promise | 
|   './config': {list, experimental, libraryBlacklist, es5SpecialCase, banner} | 
|   fs: {readFile, writeFile, unlink} | 
|   path: {basename, dirname, join} | 
|   webpack, temp | 
| } | 
|   | 
| module.exports = ({modules = [], blacklist = [], library = no, umd = on})-> | 
|   resolve, reject <~! new Promise _ | 
|   let @ = modules.reduce ((memo, it)-> memo[it] = on; memo), {} | 
|     if @exp => for experimental => @[..] = on | 
|     if @es5 => for es5SpecialCase => @[..] = on | 
|     for ns of @ | 
|       if @[ns] | 
|         for name in list | 
|           if name.indexOf("#ns.") is 0 and name not in experimental | 
|             @[name] = on | 
|   | 
|     if library => blacklist ++= libraryBlacklist | 
|     for ns in blacklist | 
|       for name in list | 
|         if name is ns or name.indexOf("#ns.") is 0 | 
|           @[name] = no | 
|   | 
|     TARGET = temp.path {suffix: '.js'} | 
|   | 
|     err, info <~! webpack do | 
|       entry: list.filter(~> @[it]).map ~> | 
|         if library => join __dirname, '..', 'library', 'modules', it | 
|         else join __dirname, '..', 'modules', it | 
|       output: | 
|         path: dirname TARGET | 
|         filename: basename "./#TARGET" | 
|     if err => return reject err | 
|   | 
|     err, script <~! readFile TARGET | 
|     if err => return reject err | 
|   | 
|     err <~! unlink TARGET | 
|     if err => return reject err | 
|   | 
|     if umd | 
|       exportScript = """ | 
|         // CommonJS export | 
|         if (typeof module != 'undefined' && module.exports) module.exports = __e; | 
|         // RequireJS export | 
|         else if (typeof define == 'function' && define.amd) define(function () { return __e; }); | 
|         // Export to global object | 
|         else __g.core = __e; | 
|         """ | 
|     else | 
|       exportScript = "" | 
|   | 
|     resolve """ | 
|       #banner | 
|       !function(__e, __g, undefined){ | 
|       'use strict'; | 
|       #script | 
|       #exportScript | 
|       }(1, 1); | 
|       """ |