motion
Version:
motion - moving development forward
129 lines (108 loc) • 3.94 kB
JavaScript
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;