UNPKG

motion

Version:

motion - moving development forward

129 lines (108 loc) 3.94 kB
Object.defineProperty(exports, '__esModule', { value: true }); var browser = window._DT; exports.browser = browser; var isLive = function isLive() { return browser.editor && browser.editor.live; }; exports.isLive = isLive; var split = function split(s, i) { return [s.substring(0, i), s.substring(i, i + 1), s.substring(i + 1)]; }; function showMotionErrorDiv() { setTimeout(function () { // avoid showing if error fixed in meantime if (!browser.curError) return; var errors = document.querySelectorAll('.__motionError'); if (!errors.length) return; // add active class to show them [].forEach.call(errors, function (error) { if (error.className.indexOf('active') == -1) error.className += ' active'; }); }, isLive() ? 1000 : 100); } exports.showMotionErrorDiv = showMotionErrorDiv; function niceRuntimeError(err) { if (err.file) err.file = err.file.replace(new RegExp('.*' + window.location.origin + '(\/[_]+\/)?'), ''); if (err.file && err.file === 'motion.dev.js') { err.file = 'Motion'; err.line = null; } if (err.file && err.file.indexOf('internals.js') >= 0) { if (err.message && err.message.indexOf('Cannot find module') == 0) { var badModule = err.message.match(/(fs|path)/); if (badModule && badModule.length) { err.file = 'imported module:'; err.message = 'Cannot import node-only module: ' + badModule[0]; } } else { err.message = 'Error in a locally required file. ' + err.message; } } if (err.message) err.niceMessage = err.message.replace(/Uncaught .*Error:\s*/, ''); return err; } exports.niceRuntimeError = niceRuntimeError; function niceNpmError(_ref) { var msg = _ref.msg; var name = _ref.name; if (msg) msg = msg.replace(/(npm WARN.*\n|ERR\!)/g, '').replace(/npm argv.*\n/g, '').replace(/npm node v.*\n/g, '').replace(/npm npm.*\n/g, '').replace(/npm code.*\n/g, '').replace(/npm peerinvalid /g, '').replace(/npm 404 /g, ''); return { msg: msg, name: name }; } exports.niceNpmError = niceNpmError; var niceCompilerError = function niceCompilerError(err) { return niceCompilerMessage(fullStack(niceStack(err))); }; exports.niceCompilerError = niceCompilerError; var replaceCompilerMsg = function replaceCompilerMsg(msg) { if (!msg) return ''; return msg.replace(/.*\.js\:/, '').replace(/\([0-9]+\:[0-9]+\)/, '').replace(/Line [0-9]+\:\s*/, ''); }; var niceCompilerMessage = function niceCompilerMessage(err) { err.niceMessage = replaceCompilerMsg(err.message, err.fileName); return err; }; exports.niceCompilerMessage = niceCompilerMessage; var matchErrorLine = /\>?\s*([0-9]*)\s*\|(.*)/g; var indicator = /\s*\|\s*\^\s*$/g; function fullStack(err) { if (!err) return; if (err.stack) { (function () { err.fullStack = ['', '', '']; var index = 0; err.stack.split("\n").forEach(function (line) { if (indicator.test(line)) return; if (!matchErrorLine.test(line)) return; var isLine = line[0] === '>'; if (isLine) index = 1; if (!isLine && index === 1) index = 2; var result = line.replace(matchErrorLine, '$1$2').replace(/^(\s*[0-9]+\s*)[;]/, '$1 '); err.fullStack[index] += result + "\n"; }); })(); } return err; } function niceStack(err) { if (!err) return; if (err.stack) { err.stack.split("\n").map(function (line) { if (line[0] === '>') { var result = line; if (!result) return; // remove the babel " > |" before the line result = result.replace(/\>\s*[0-9]+\s*\|\s*/, ''); result = replaceCompilerMsg(result); var colIndex = err.loc.column - 4; // 4 because we remove babel prefix err.niceStack = split(result, colIndex); } }); } return err; } var log = function log() { if (localStorage.getItem('motiondebug')) console.log.apply(console, arguments); }; exports.log = log;