UNPKG

3.9 kBJavaScriptView Raw
1// Generated by CoffeeScript 2.0.0-beta6
2void function () {
3 var canonicalise, esprima, PRELUDE, PRELUDE_NODE, wrapFile;
4 esprima = require('esprima');
5 canonicalise = require('./canonicalise');
6 PRELUDE_NODE = "\nvar process = function(){\n var cwd = '/';\n return {\n title: 'browser',\n version: '" + process.version + "',\n browser: true,\n env: {},\n argv: [],\n nextTick: global.setImmediate || function(fn){ setTimeout(fn, 0); },\n cwd: function(){ return cwd; },\n chdir: function(dir){ cwd = dir; }\n };\n}();";
7 PRELUDE = "\nfunction require(file, parentModule){\n if({}.hasOwnProperty.call(require.cache, file))\n return require.cache[file];\n\n var resolved = require.resolve(file);\n if(!resolved) throw new Error('Failed to resolve module ' + file);\n\n var module$ = {\n id: file,\n require: require,\n filename: file,\n exports: {},\n loaded: false,\n parent: parentModule,\n children: []\n };\n if(parentModule) parentModule.children.push(module$);\n var dirname = file.slice(0, file.lastIndexOf('/') + 1);\n\n require.cache[file] = module$.exports;\n resolved.call(module$.exports, module$, module$.exports, dirname, file);\n module$.loaded = true;\n return require.cache[file] = module$.exports;\n}\n\nrequire.modules = {};\nrequire.cache = {};\n\nrequire.resolve = function(file){\n return {}.hasOwnProperty.call(require.modules, file) ? require.modules[file] : void 0;\n};\nrequire.define = function(file, fn){ require.modules[file] = fn; };";
8 wrapFile = function (name, program) {
9 var wrapper, wrapperProgram;
10 wrapperProgram = esprima.parse('require.define(0, function(module, exports, __dirname, __filename){});');
11 wrapper = wrapperProgram.body[0];
12 wrapper.expression['arguments'][0] = {
13 type: 'Literal',
14 value: name
15 };
16 wrapper.expression['arguments'][1].body.body = program.body;
17 return wrapper;
18 };
19 module.exports = function (processed, entryPoint, root, options) {
20 var ast, exportExpression, filename, iife, lhsExpression, prelude, program, requireEntryPoint;
21 prelude = (null != options.node ? options.node : true) ? '' + PRELUDE + '\n' + PRELUDE_NODE : PRELUDE;
22 program = esprima.parse(prelude);
23 for (filename in processed) {
24 if (!isOwn$(processed, filename))
25 continue;
26 ast = processed[filename].ast;
27 program.body.push(wrapFile(ast.loc.source, ast));
28 }
29 requireEntryPoint = {
30 type: 'CallExpression',
31 callee: {
32 type: 'Identifier',
33 name: 'require'
34 },
35 'arguments': [{
36 type: 'Literal',
37 value: canonicalise(root, entryPoint)
38 }]
39 };
40 if (null != options['export']) {
41 exportExpression = esprima.parse(options['export']).body[0].expression;
42 lhsExpression = exportExpression.type === 'Identifier' ? {
43 type: 'MemberExpression',
44 computed: false,
45 object: {
46 type: 'Identifier',
47 name: 'global'
48 },
49 property: {
50 type: 'Identifier',
51 name: exportExpression.name
52 }
53 } : exportExpression;
54 program.body.push({
55 type: 'ExpressionStatement',
56 expression: {
57 type: 'AssignmentExpression',
58 operator: '=',
59 left: lhsExpression,
60 right: requireEntryPoint
61 }
62 });
63 } else {
64 program.body.push({
65 type: 'ExpressionStatement',
66 expression: requireEntryPoint
67 });
68 }
69 iife = esprima.parse('(function(global){}).call(this, this);');
70 iife.body[0].expression.callee.object.body.body = program.body;
71 iife.leadingComments = [{
72 type: 'Line',
73 value: ' Generated by CommonJS Everywhere ' + require('../package.json').version
74 }];
75 return iife;
76 };
77 function isOwn$(o, p) {
78 return {}.hasOwnProperty.call(o, p);
79 }
80}.call(this);