requisite
Version:
A cosmic javascript bundler.
105 lines (95 loc) • 2.8 kB
JavaScript
// Generated by CoffeeScript 1.12.4
var Module, Prelude, Promise, createWrapper, isFunction, path, toRegex;
Promise = require('broken');
path = require('path');
toRegex = require('to-regexp');
Module = require('./module');
Prelude = require('./wrapper').Prelude;
isFunction = require('./utils').isFunction;
createWrapper = function(opts) {
return new Prelude({
bare: opts.bare,
globalRequire: opts.globalRequire,
prelude: opts.prelude,
preludeAsync: opts.preludeAsync,
includeAsync: opts.includeAsync
});
};
module.exports = function(opts, cb) {
var p, ref;
if (opts == null) {
opts = {};
}
if (cb == null) {
cb = function() {};
}
if (isFunction(opts)) {
ref = [opts, {}], cb = ref[0], opts = ref[1];
}
p = new Promise(function(resolve, reject) {
var basePath, exclude, include, mod, ref1, ref2, ref3, ref4, ref5, ref6, resolved, skip, sourceMapRoot;
if (opts.preludeOnly) {
if (!opts.bare) {
opts.globalRequire = true;
}
return resolve(createWrapper(opts));
}
basePath = (ref1 = opts.base) != null ? ref1 : opts.src;
sourceMapRoot = basePath != null ? basePath : '/' + (path.relative(process.cwd(), path.dirname(opts.entry)));
exclude = toRegex(opts.exclude);
skip = toRegex(opts.skip);
include = (ref2 = opts.include) != null ? ref2 : {};
resolved = (ref3 = opts.resolved) != null ? ref3 : {};
if (!(Object.keys(include)).length) {
include = null;
}
if (!(Object.keys(resolve)).length) {
resolved = null;
}
mod = new Module(opts.entry, {
basePath: basePath,
compilers: opts.compilers,
exclude: exclude,
exported: opts.exported,
include: include,
moduleCache: opts.moduleCache,
naked: opts.naked,
paths: (ref4 = opts.paths) != null ? ref4 : [],
required: opts.required,
resolved: resolved,
skip: skip,
sourceMap: (ref5 = opts.sourceMap) != null ? ref5 : true,
sourceMapRoot: (ref6 = opts.sourceMapRoot) != null ? ref6 : sourceMapRoot,
strict: opts.strict,
urlRoot: opts.urlRoot
});
return mod.parse(function(err) {
var k, ref7, v;
if (err != null) {
return reject(err);
}
if ((opts.async != null) && opts.async) {
mod.async = true;
} else {
ref7 = mod.moduleCache;
for (k in ref7) {
v = ref7[k];
if (v.async) {
opts.includeAsync = true;
break;
}
}
}
if (!opts.bare) {
mod.toplevel = createWrapper(opts);
}
if (opts.requireAs != null) {
mod.requireAs = opts.requireAs;
}
return resolve(mod);
});
});
p.callback(cb);
return p;
};
//# sourceMappingURL=bundle.js.map