123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426 |
- // Generated by CoffeeScript 1.12.6
- (function() {
- var Lexer, SourceMap, base64encode, compile, ext, fn1, formatSourcePosition, fs, getSourceMap, helpers, i, len, lexer, packageJson, parser, path, ref, sourceMaps, sources, vm, withPrettyErrors,
- hasProp = {}.hasOwnProperty;
- fs = require('fs');
- vm = require('vm');
- path = require('path');
- Lexer = require('./lexer').Lexer;
- parser = require('./parser').parser;
- helpers = require('./helpers');
- SourceMap = require('./sourcemap');
- packageJson = require('../../package.json');
- exports.VERSION = packageJson.version;
- exports.FILE_EXTENSIONS = ['.coffee', '.litcoffee', '.coffee.md'];
- exports.helpers = helpers;
- base64encode = function(src) {
- switch (false) {
- case typeof Buffer !== 'function':
- return new Buffer(src).toString('base64');
- case typeof btoa !== 'function':
- return btoa(encodeURIComponent(src).replace(/%([0-9A-F]{2})/g, function(match, p1) {
- return String.fromCharCode('0x' + p1);
- }));
- default:
- throw new Error('Unable to base64 encode inline sourcemap.');
- }
- };
- withPrettyErrors = function(fn) {
- return function(code, options) {
- var err;
- if (options == null) {
- options = {};
- }
- try {
- return fn.call(this, code, options);
- } catch (error) {
- err = error;
- if (typeof code !== 'string') {
- throw err;
- }
- throw helpers.updateSyntaxError(err, code, options.filename);
- }
- };
- };
- sources = {};
- sourceMaps = {};
- exports.compile = compile = withPrettyErrors(function(code, options) {
- var currentColumn, currentLine, encoded, extend, filename, fragment, fragments, generateSourceMap, header, i, j, js, len, len1, map, merge, newLines, ref, ref1, sourceMapDataURI, sourceURL, token, tokens, v3SourceMap;
- merge = helpers.merge, extend = helpers.extend;
- options = extend({}, options);
- generateSourceMap = options.sourceMap || options.inlineMap || (options.filename == null);
- filename = options.filename || '<anonymous>';
- sources[filename] = code;
- if (generateSourceMap) {
- map = new SourceMap;
- }
- tokens = lexer.tokenize(code, options);
- options.referencedVars = (function() {
- var i, len, results;
- results = [];
- for (i = 0, len = tokens.length; i < len; i++) {
- token = tokens[i];
- if (token[0] === 'IDENTIFIER') {
- results.push(token[1]);
- }
- }
- return results;
- })();
- if (!((options.bare != null) && options.bare === true)) {
- for (i = 0, len = tokens.length; i < len; i++) {
- token = tokens[i];
- if ((ref = token[0]) === 'IMPORT' || ref === 'EXPORT') {
- options.bare = true;
- break;
- }
- }
- }
- fragments = parser.parse(tokens).compileToFragments(options);
- currentLine = 0;
- if (options.header) {
- currentLine += 1;
- }
- if (options.shiftLine) {
- currentLine += 1;
- }
- currentColumn = 0;
- js = "";
- for (j = 0, len1 = fragments.length; j < len1; j++) {
- fragment = fragments[j];
- if (generateSourceMap) {
- if (fragment.locationData && !/^[;\s]*$/.test(fragment.code)) {
- map.add([fragment.locationData.first_line, fragment.locationData.first_column], [currentLine, currentColumn], {
- noReplace: true
- });
- }
- newLines = helpers.count(fragment.code, "\n");
- currentLine += newLines;
- if (newLines) {
- currentColumn = fragment.code.length - (fragment.code.lastIndexOf("\n") + 1);
- } else {
- currentColumn += fragment.code.length;
- }
- }
- js += fragment.code;
- }
- if (options.header) {
- header = "Generated by CoffeeScript " + this.VERSION;
- js = "// " + header + "\n" + js;
- }
- if (generateSourceMap) {
- v3SourceMap = map.generate(options, code);
- sourceMaps[filename] = map;
- }
- if (options.inlineMap) {
- encoded = base64encode(JSON.stringify(v3SourceMap));
- sourceMapDataURI = "//# sourceMappingURL=data:application/json;base64," + encoded;
- sourceURL = "//# sourceURL=" + ((ref1 = options.filename) != null ? ref1 : 'coffeescript');
- js = js + "\n" + sourceMapDataURI + "\n" + sourceURL;
- }
- if (options.sourceMap) {
- return {
- js: js,
- sourceMap: map,
- v3SourceMap: JSON.stringify(v3SourceMap, null, 2)
- };
- } else {
- return js;
- }
- });
- exports.tokens = withPrettyErrors(function(code, options) {
- return lexer.tokenize(code, options);
- });
- exports.nodes = withPrettyErrors(function(source, options) {
- if (typeof source === 'string') {
- return parser.parse(lexer.tokenize(source, options));
- } else {
- return parser.parse(source);
- }
- });
- exports.run = function(code, options) {
- var answer, dir, mainModule, ref;
- if (options == null) {
- options = {};
- }
- mainModule = require.main;
- mainModule.filename = process.argv[1] = options.filename ? fs.realpathSync(options.filename) : '<anonymous>';
- mainModule.moduleCache && (mainModule.moduleCache = {});
- dir = options.filename != null ? path.dirname(fs.realpathSync(options.filename)) : fs.realpathSync('.');
- mainModule.paths = require('module')._nodeModulePaths(dir);
- if (!helpers.isCoffee(mainModule.filename) || require.extensions) {
- answer = compile(code, options);
- code = (ref = answer.js) != null ? ref : answer;
- }
- return mainModule._compile(code, mainModule.filename);
- };
- exports["eval"] = function(code, options) {
- var Module, _module, _require, createContext, i, isContext, js, k, len, o, r, ref, ref1, ref2, ref3, sandbox, v;
- if (options == null) {
- options = {};
- }
- if (!(code = code.trim())) {
- return;
- }
- createContext = (ref = vm.Script.createContext) != null ? ref : vm.createContext;
- isContext = (ref1 = vm.isContext) != null ? ref1 : function(ctx) {
- return options.sandbox instanceof createContext().constructor;
- };
- if (createContext) {
- if (options.sandbox != null) {
- if (isContext(options.sandbox)) {
- sandbox = options.sandbox;
- } else {
- sandbox = createContext();
- ref2 = options.sandbox;
- for (k in ref2) {
- if (!hasProp.call(ref2, k)) continue;
- v = ref2[k];
- sandbox[k] = v;
- }
- }
- sandbox.global = sandbox.root = sandbox.GLOBAL = sandbox;
- } else {
- sandbox = global;
- }
- sandbox.__filename = options.filename || 'eval';
- sandbox.__dirname = path.dirname(sandbox.__filename);
- if (!(sandbox !== global || sandbox.module || sandbox.require)) {
- Module = require('module');
- sandbox.module = _module = new Module(options.modulename || 'eval');
- sandbox.require = _require = function(path) {
- return Module._load(path, _module, true);
- };
- _module.filename = sandbox.__filename;
- ref3 = Object.getOwnPropertyNames(require);
- for (i = 0, len = ref3.length; i < len; i++) {
- r = ref3[i];
- if (r !== 'paths' && r !== 'arguments' && r !== 'caller') {
- _require[r] = require[r];
- }
- }
- _require.paths = _module.paths = Module._nodeModulePaths(process.cwd());
- _require.resolve = function(request) {
- return Module._resolveFilename(request, _module);
- };
- }
- }
- o = {};
- for (k in options) {
- if (!hasProp.call(options, k)) continue;
- v = options[k];
- o[k] = v;
- }
- o.bare = true;
- js = compile(code, o);
- if (sandbox === global) {
- return vm.runInThisContext(js);
- } else {
- return vm.runInContext(js, sandbox);
- }
- };
- exports.register = function() {
- return require('./register');
- };
- if (require.extensions) {
- ref = this.FILE_EXTENSIONS;
- fn1 = function(ext) {
- var base;
- return (base = require.extensions)[ext] != null ? base[ext] : base[ext] = function() {
- throw new Error("Use CoffeeScript.register() or require the coffee-script/register module to require " + ext + " files.");
- };
- };
- for (i = 0, len = ref.length; i < len; i++) {
- ext = ref[i];
- fn1(ext);
- }
- }
- exports._compileFile = function(filename, sourceMap, inlineMap) {
- var answer, err, raw, stripped;
- if (sourceMap == null) {
- sourceMap = false;
- }
- if (inlineMap == null) {
- inlineMap = false;
- }
- raw = fs.readFileSync(filename, 'utf8');
- stripped = raw.charCodeAt(0) === 0xFEFF ? raw.substring(1) : raw;
- try {
- answer = compile(stripped, {
- filename: filename,
- sourceMap: sourceMap,
- inlineMap: inlineMap,
- sourceFiles: [filename],
- literate: helpers.isLiterate(filename)
- });
- } catch (error) {
- err = error;
- throw helpers.updateSyntaxError(err, stripped, filename);
- }
- return answer;
- };
- lexer = new Lexer;
- parser.lexer = {
- lex: function() {
- var tag, token;
- token = parser.tokens[this.pos++];
- if (token) {
- tag = token[0], this.yytext = token[1], this.yylloc = token[2];
- parser.errorToken = token.origin || token;
- this.yylineno = this.yylloc.first_line;
- } else {
- tag = '';
- }
- return tag;
- },
- setInput: function(tokens) {
- parser.tokens = tokens;
- return this.pos = 0;
- },
- upcomingInput: function() {
- return "";
- }
- };
- parser.yy = require('./nodes');
- parser.yy.parseError = function(message, arg) {
- var errorLoc, errorTag, errorText, errorToken, token, tokens;
- token = arg.token;
- errorToken = parser.errorToken, tokens = parser.tokens;
- errorTag = errorToken[0], errorText = errorToken[1], errorLoc = errorToken[2];
- errorText = (function() {
- switch (false) {
- case errorToken !== tokens[tokens.length - 1]:
- return 'end of input';
- case errorTag !== 'INDENT' && errorTag !== 'OUTDENT':
- return 'indentation';
- case errorTag !== 'IDENTIFIER' && errorTag !== 'NUMBER' && errorTag !== 'INFINITY' && errorTag !== 'STRING' && errorTag !== 'STRING_START' && errorTag !== 'REGEX' && errorTag !== 'REGEX_START':
- return errorTag.replace(/_START$/, '').toLowerCase();
- default:
- return helpers.nameWhitespaceCharacter(errorText);
- }
- })();
- return helpers.throwSyntaxError("unexpected " + errorText, errorLoc);
- };
- formatSourcePosition = function(frame, getSourceMapping) {
- var as, column, fileLocation, filename, functionName, isConstructor, isMethodCall, line, methodName, source, tp, typeName;
- filename = void 0;
- fileLocation = '';
- if (frame.isNative()) {
- fileLocation = "native";
- } else {
- if (frame.isEval()) {
- filename = frame.getScriptNameOrSourceURL();
- if (!filename) {
- fileLocation = (frame.getEvalOrigin()) + ", ";
- }
- } else {
- filename = frame.getFileName();
- }
- filename || (filename = "<anonymous>");
- line = frame.getLineNumber();
- column = frame.getColumnNumber();
- source = getSourceMapping(filename, line, column);
- fileLocation = source ? filename + ":" + source[0] + ":" + source[1] : filename + ":" + line + ":" + column;
- }
- functionName = frame.getFunctionName();
- isConstructor = frame.isConstructor();
- isMethodCall = !(frame.isToplevel() || isConstructor);
- if (isMethodCall) {
- methodName = frame.getMethodName();
- typeName = frame.getTypeName();
- if (functionName) {
- tp = as = '';
- if (typeName && functionName.indexOf(typeName)) {
- tp = typeName + ".";
- }
- if (methodName && functionName.indexOf("." + methodName) !== functionName.length - methodName.length - 1) {
- as = " [as " + methodName + "]";
- }
- return "" + tp + functionName + as + " (" + fileLocation + ")";
- } else {
- return typeName + "." + (methodName || '<anonymous>') + " (" + fileLocation + ")";
- }
- } else if (isConstructor) {
- return "new " + (functionName || '<anonymous>') + " (" + fileLocation + ")";
- } else if (functionName) {
- return functionName + " (" + fileLocation + ")";
- } else {
- return fileLocation;
- }
- };
- getSourceMap = function(filename) {
- var answer;
- if (sourceMaps[filename] != null) {
- return sourceMaps[filename];
- } else if (sourceMaps['<anonymous>'] != null) {
- return sourceMaps['<anonymous>'];
- } else if (sources[filename] != null) {
- answer = compile(sources[filename], {
- filename: filename,
- sourceMap: true,
- literate: helpers.isLiterate(filename)
- });
- return answer.sourceMap;
- } else {
- return null;
- }
- };
- Error.prepareStackTrace = function(err, stack) {
- var frame, frames, getSourceMapping;
- getSourceMapping = function(filename, line, column) {
- var answer, sourceMap;
- sourceMap = getSourceMap(filename);
- if (sourceMap != null) {
- answer = sourceMap.sourceLocation([line - 1, column - 1]);
- }
- if (answer != null) {
- return [answer[0] + 1, answer[1] + 1];
- } else {
- return null;
- }
- };
- frames = (function() {
- var j, len1, results;
- results = [];
- for (j = 0, len1 = stack.length; j < len1; j++) {
- frame = stack[j];
- if (frame.getFunction() === exports.run) {
- break;
- }
- results.push(" at " + (formatSourcePosition(frame, getSourceMapping)));
- }
- return results;
- })();
- return (err.toString()) + "\n" + (frames.join('\n')) + "\n";
- };
- }).call(this);
|