react / react-0.13.3 / examples / basic-commonjs / node_modules / browserify / node_modules / browser-pack / index.js
80711 viewsvar JSONStream = require('JSONStream');1var defined = require('defined');2var through = require('through2');3var umd = require('umd');45var fs = require('fs');6var path = require('path');78var combineSourceMap = require('combine-source-map');910var defaultPreludePath = path.join(__dirname, '_prelude.js');11var defaultPrelude = fs.readFileSync(defaultPreludePath, 'utf8');1213function newlinesIn(src) {14if (!src) return 0;15var newlines = src.match(/\n/g);1617return newlines ? newlines.length : 0;18}1920module.exports = function (opts) {21if (!opts) opts = {};22var parser = opts.raw ? through.obj() : JSONStream.parse([ true ]);23var stream = through.obj(24function (buf, enc, next) { parser.write(buf); next() },25function () { parser.end() }26);27parser.pipe(through.obj(write, end));28stream.standaloneModule = opts.standaloneModule;29stream.hasExports = opts.hasExports;3031var first = true;32var entries = [];33var basedir = defined(opts.basedir, process.cwd());34var prelude = opts.prelude || defaultPrelude;35var preludePath = opts.preludePath || path.relative(basedir, defaultPreludePath);3637var lineno = 1 + newlinesIn(prelude);38var sourcemap;3940return stream;4142function write (row, enc, next) {43if (first && opts.standalone) {44var pre = umd.prelude(opts.standalone).trim();45stream.push(Buffer(pre + 'return '));46}47else if (first && stream.hasExports) {48var pre = opts.externalRequireName || 'require';49stream.push(Buffer(pre + '='));50}51if (first) stream.push(Buffer(prelude + '({'));5253if (row.sourceFile && !row.nomap) {54if (!sourcemap) {55sourcemap = combineSourceMap.create();56sourcemap.addFile(57{ sourceFile: preludePath, source: prelude },58{ line: 0 }59);60}61sourcemap.addFile(62{ sourceFile: row.sourceFile, source: row.source },63{ line: lineno }64);65}6667var wrappedSource = [68(first ? '' : ','),69JSON.stringify(row.id),70':[',71'function(require,module,exports){\n',72combineSourceMap.removeComments(row.source),73'\n},',74'{' + Object.keys(row.deps || {}).sort().map(function (key) {75return JSON.stringify(key) + ':'76+ JSON.stringify(row.deps[key])77;78}).join(',') + '}',79']'80].join('');8182stream.push(Buffer(wrappedSource));83lineno += newlinesIn(wrappedSource);8485first = false;86if (row.entry && row.order !== undefined) {87entries[row.order] = row.id;88}89else if (row.entry) entries.push(row.id);90next();91}9293function end () {94if (first) stream.push(Buffer(prelude + '({'));95entries = entries.filter(function (x) { return x !== undefined });9697stream.push(Buffer('},{},' + JSON.stringify(entries) + ')'));9899if (opts.standalone) {100stream.push(Buffer(101'(' + JSON.stringify(stream.standaloneModule) + ')'102+ umd.postlude(opts.standalone)103));104}105106if (sourcemap) {107var comment = sourcemap.comment();108if (opts.sourceMapPrefix) {109comment = comment.replace(110/^\/\/#/, function () { return opts.sourceMapPrefix }111)112}113stream.push(Buffer('\n' + comment + '\n'));114}115if (!sourcemap && !opts.standalone) stream.push(Buffer(';\n'));116117stream.push(null);118}119};120121122