UNPKG

requisite

Version:

A cosmic javascript bundler.

253 lines (234 loc) 6.12 kB
// Generated by CoffeeScript 1.10.0 var SourceMapConsumer, acorn, convert, escodegen, fs, guessMinifier, os, path, traverse, walk; fs = require('fs'); os = require('os'); path = require('path'); acorn = require('acorn'); convert = require('convert-source-map'); escodegen = require('escodegen'); SourceMapConsumer = require('source-map').SourceMapConsumer; traverse = require('estraverse').traverse; exports.formatDate = function(date) { if (date == null) { date = new Date; } return (/\d{2}:\d{2}:\d{2}/.exec(date))[0]; }; exports.parse = function(source, opts) { var _opts, ast, comments, tokens; if (opts == null) { opts = {}; } comments = []; tokens = []; _opts = { ranges: true, onComment: comments, onToken: tokens, locations: true, sourceFile: opts.filename }; ast = acorn.parse(source, _opts); escodegen.attachComments(ast, comments, tokens); return ast; }; guessMinifier = function() { var err, error, error1; try { if (require.resolve('uglify-js')) { return 'uglifyjs'; } } catch (error) { err = error; } try { require.resolve('esmangle'); } catch (error1) { err = error1; throw new Error('Unable to determine minifier to use'); } return 'esmangle'; }; exports.codegen = function(ast, opts) { var _opts, code, map, minifier, minify, output, ref, ref1; if (opts == null) { opts = {}; } if (opts.minify) { minifier = (ref = opts.minifier) != null ? ref : guessMinifier(); if (/uglify/.test(minifier)) { minifier = 'uglifyjs'; } minify = require('./minify'); return minify[minifier](ast, opts); } _opts = { comment: true, format: { indent: { style: ' ', base: 0 }, compact: false, escapeless: true, parentheses: false, quotes: 'auto', semicolons: false } }; if (!opts.sourceMap) { return escodegen.generate(ast, _opts); } _opts.sourceMap = true; _opts.sourceMapWithCode = true; _opts.sourceMapRoot = (ref1 = opts.sourceMapRoot) != null ? ref1 : ""; output = escodegen.generate(ast, _opts); code = output.code; map = output.map; if (opts.onlySourceMap) { return convert.fromObject(map).toJSON(); } else { return code + convert.fromObject(map).toComment(); } }; exports.walk = walk = function(node, visitor) { var el, i, k, len, results, results1, v; if ((node != null) && typeof node === 'object') { if (!visitor(node)) { results = []; for (k in node) { v = node[k]; results.push(walk(v, visitor)); } return results; } } else if (Array.isArray(node)) { results1 = []; for (i = 0, len = node.length; i < len; i++) { el = node[i]; results1.push(walk(el, visitor)); } return results1; } }; exports.graph = function(mod) { var depth, i, idx, len, line, lines, nextDepth, nextLine, ref, ref1, seen, walkdeps; seen = {}; walkdeps = function(mod, fn, depth) { var k, ref, results, v; if (depth == null) { depth = 0; } if (seen[mod.requireAs]) { fn(mod, depth, true); return; } seen[mod.requireAs] = true; depth += 1; ref = mod.dependencies; results = []; for (k in ref) { v = ref[k]; if ((fn(v, depth)) !== false) { results.push(walkdeps(v, fn, depth)); } else { results.push(void 0); } } return results; }; console.log(mod.requireAs); lines = []; walkdeps(mod, function(mod, depth, seen) { var line; if (seen) { lines.pop(); return; } line = '├─' + mod.requireAs; if (depth > 0) { line = (new Array(depth * 2)).join(' ') + line; } return lines.push([line, depth]); }); for (idx = i = 0, len = lines.length; i < len; idx = ++i) { ref = lines[idx], line = ref[0], depth = ref[1]; if (lines[idx + 1] == null) { lines[idx][0] = line.replace('├─', '└─'); } else { ref1 = lines[idx + 1], nextLine = ref1[0], nextDepth = ref1[1]; if ((nextLine != null) && depth !== nextDepth) { lines[idx][0] = line.replace('├─', '└─'); } } } return console.log(((function() { var j, len1, results; results = []; for (j = 0, len1 = lines.length; j < len1; j++) { line = lines[j]; results.push(line[0]); } return results; })()).join('\n')); }; exports.requireTry = function(pkg) { var err, error; try { return require(pkg); } catch (error) { err = error; console.error("Unable to require '" + pkg + "'. Try `npm install -g " + pkg + "`."); throw new Error("Missing compiler"); } }; exports.normalizePath = function(absolutePath, basePath) { var normalizedPath, start; if ((absolutePath.indexOf(basePath)) !== -1) { normalizedPath = absolutePath.replace(basePath, ''); } else { start = absolutePath.indexOf('node_modules'); normalizedPath = absolutePath.substring(start, absolutePath.length); } if (os.platform() === 'win32') { return normalizedPath.replace(/^\\+/, ''); } else { return normalizedPath.replace(/^\/+/, ''); } }; exports.sourceMapToAst = function(ast, map) { map = new SourceMapConsumer(map); traverse(ast, { enter: function(node) { var origEnd, origStart; if (!(node.type && node.loc)) { return; } origStart = map.originalPositionFor(node.loc.start); if (!origStart.line) { delete node.loc; return; } origEnd = map.originalPositionFor(node.loc.end); if (origEnd.line && (origEnd.line < origStart.line || origEnd.column < origStart.column)) { origEnd.line = null; } node.loc = { start: { line: origStart.line, column: origStart.column }, source: origStart.source, name: origStart.name }; if (origEnd.line) { node.loc.end = { line: origEnd.line, column: origEnd.column }; } } }); return ast; }; //# sourceMappingURL=utils.js.map