redbox-react
Version:
A redbox (rsod) component to display your errors.
1,104 lines (911 loc) • 33.4 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("react"));
else if(typeof define === 'function' && define.amd)
define(["react"], factory);
else if(typeof exports === 'object')
exports["redbox"] = factory(require("react"));
else
root["redbox"] = factory(root["React"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_6__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
exports.__esModule = true;
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var _react = __webpack_require__(6);
var _react2 = _interopRequireDefault(_react);
var _styleJs = __webpack_require__(2);
var _styleJs2 = _interopRequireDefault(_styleJs);
var _errorStackParser = __webpack_require__(3);
var _errorStackParser2 = _interopRequireDefault(_errorStackParser);
var _objectAssign = __webpack_require__(5);
var _objectAssign2 = _interopRequireDefault(_objectAssign);
var _lib = __webpack_require__(1);
var __$Getters__ = [];
var __$Setters__ = [];
var __$Resetters__ = [];
function __GetDependency__(name) {
return __$Getters__[name]();
}
function __Rewire__(name, value) {
__$Setters__[name](value);
}
function __ResetDependency__(name) {
__$Resetters__[name]();
}
var __RewireAPI__ = {
'__GetDependency__': __GetDependency__,
'__get__': __GetDependency__,
'__Rewire__': __Rewire__,
'__set__': __Rewire__,
'__ResetDependency__': __ResetDependency__
};
var React = _react2['default'];
var Component = _react.Component;
var PropTypes = _react.PropTypes;
__$Getters__['React'] = function () {
return React;
};
__$Setters__['React'] = function (value) {
React = value;
};
__$Resetters__['React'] = function () {
React = _react2['default'];
};
__$Getters__['Component'] = function () {
return Component;
};
__$Setters__['Component'] = function (value) {
Component = value;
};
__$Resetters__['Component'] = function () {
Component = _react.Component;
};
__$Getters__['PropTypes'] = function () {
return PropTypes;
};
__$Setters__['PropTypes'] = function (value) {
PropTypes = value;
};
__$Resetters__['PropTypes'] = function () {
PropTypes = _react.PropTypes;
};
var style = _styleJs2['default'];
__$Getters__['style'] = function () {
return style;
};
__$Setters__['style'] = function (value) {
style = value;
};
__$Resetters__['style'] = function () {
style = _styleJs2['default'];
};
var ErrorStackParser = _errorStackParser2['default'];
__$Getters__['ErrorStackParser'] = function () {
return ErrorStackParser;
};
__$Setters__['ErrorStackParser'] = function (value) {
ErrorStackParser = value;
};
__$Resetters__['ErrorStackParser'] = function () {
ErrorStackParser = _errorStackParser2['default'];
};
var assign = _objectAssign2['default'];
__$Getters__['assign'] = function () {
return assign;
};
__$Setters__['assign'] = function (value) {
assign = value;
};
__$Resetters__['assign'] = function () {
assign = _objectAssign2['default'];
};
var isFilenameAbsolute = _lib.isFilenameAbsolute;
var makeUrl = _lib.makeUrl;
var makeLinkText = _lib.makeLinkText;
__$Getters__['isFilenameAbsolute'] = function () {
return isFilenameAbsolute;
};
__$Setters__['isFilenameAbsolute'] = function (value) {
isFilenameAbsolute = value;
};
__$Resetters__['isFilenameAbsolute'] = function () {
isFilenameAbsolute = _lib.isFilenameAbsolute;
};
__$Getters__['makeUrl'] = function () {
return makeUrl;
};
__$Setters__['makeUrl'] = function (value) {
makeUrl = value;
};
__$Resetters__['makeUrl'] = function () {
makeUrl = _lib.makeUrl;
};
__$Getters__['makeLinkText'] = function () {
return makeLinkText;
};
__$Setters__['makeLinkText'] = function (value) {
makeLinkText = value;
};
__$Resetters__['makeLinkText'] = function () {
makeLinkText = _lib.makeLinkText;
};
var RedBox = (function (_Component) {
_inherits(RedBox, _Component);
function RedBox() {
_classCallCheck(this, RedBox);
_Component.apply(this, arguments);
}
RedBox.prototype.render = function render() {
var _props = this.props;
var error = _props.error;
var filename = _props.filename;
var editorScheme = _props.editorScheme;
var useLines = _props.useLines;
var useColumns = _props.useColumns;
var _assign = assign({}, style, this.props.style);
var redbox = _assign.redbox;
var message = _assign.message;
var stack = _assign.stack;
var frame = _assign.frame;
var file = _assign.file;
var linkToFile = _assign.linkToFile;
var frames = ErrorStackParser.parse(error).map(function (f, index) {
var text = undefined;
var url = undefined;
if (index === 0 && filename && !isFilenameAbsolute(f.fileName)) {
url = makeUrl(filename, editorScheme);
text = makeLinkText(filename);
} else {
var lines = useLines ? f.lineNumber : null;
var columns = useColumns ? f.columnNumber : null;
url = makeUrl(f.fileName, editorScheme, lines, columns);
text = makeLinkText(f.fileName, lines, columns);
}
return React.createElement(
'div',
{ style: frame, key: index },
React.createElement(
'div',
null,
f.functionName
),
React.createElement(
'div',
{ style: file },
React.createElement(
'a',
{ href: url, style: linkToFile },
text
)
)
);
});
return React.createElement(
'div',
{ style: redbox },
React.createElement(
'div',
{ style: message },
error.name,
': ',
error.message
),
React.createElement(
'div',
{ style: stack },
frames
)
);
};
_createClass(RedBox, null, [{
key: 'propTypes',
value: {
error: PropTypes.instanceOf(Error).isRequired,
filename: PropTypes.string,
editorScheme: PropTypes.string,
useLines: PropTypes.bool,
useColumns: PropTypes.bool,
style: PropTypes.object
},
enumerable: true
}, {
key: 'displayName',
value: 'RedBox',
enumerable: true
}, {
key: 'defaultProps',
value: {
useLines: true,
useColumns: true
},
enumerable: true
}]);
return RedBox;
})(Component);
var _defaultExport = RedBox;
if (typeof _defaultExport === 'object' || typeof _defaultExport === 'function') {
Object.defineProperty(_defaultExport, '__Rewire__', {
'value': __Rewire__,
'enumberable': false
});
Object.defineProperty(_defaultExport, '__set__', {
'value': __Rewire__,
'enumberable': false
});
Object.defineProperty(_defaultExport, '__ResetDependency__', {
'value': __ResetDependency__,
'enumberable': false
});
Object.defineProperty(_defaultExport, '__GetDependency__', {
'value': __GetDependency__,
'enumberable': false
});
Object.defineProperty(_defaultExport, '__get__', {
'value': __GetDependency__,
'enumberable': false
});
Object.defineProperty(_defaultExport, '__RewireAPI__', {
'value': __RewireAPI__,
'enumberable': false
});
}
exports['default'] = _defaultExport;
exports.__GetDependency__ = __GetDependency__;
exports.__get__ = __GetDependency__;
exports.__Rewire__ = __Rewire__;
exports.__set__ = __Rewire__;
exports.__ResetDependency__ = __ResetDependency__;
exports.__RewireAPI__ = __RewireAPI__;
module.exports = exports['default'];
/***/ },
/* 1 */
/***/ function(module, exports) {
'use strict';
exports.__esModule = true;
var __$Getters__ = [];
var __$Setters__ = [];
var __$Resetters__ = [];
function __GetDependency__(name) {
return __$Getters__[name]();
}
function __Rewire__(name, value) {
__$Setters__[name](value);
}
function __ResetDependency__(name) {
__$Resetters__[name]();
}
var __RewireAPI__ = {
'__GetDependency__': __GetDependency__,
'__get__': __GetDependency__,
'__Rewire__': __Rewire__,
'__set__': __Rewire__,
'__ResetDependency__': __ResetDependency__
};
var filenameWithoutLoaders = function filenameWithoutLoaders() {
var filename = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];
var index = filename.lastIndexOf('!');
return index < 0 ? filename : filename.substr(index + 1);
};
var _filenameWithoutLoaders = filenameWithoutLoaders;
__$Getters__['filenameWithoutLoaders'] = function () {
return filenameWithoutLoaders;
};
__$Setters__['filenameWithoutLoaders'] = function (value) {
exports.filenameWithoutLoaders = filenameWithoutLoaders = value;
};
__$Resetters__['filenameWithoutLoaders'] = function () {
exports.filenameWithoutLoaders = filenameWithoutLoaders = _filenameWithoutLoaders;
};
exports.filenameWithoutLoaders = _filenameWithoutLoaders;
var filenameHasLoaders = function filenameHasLoaders(filename) {
var actualFilename = filenameWithoutLoaders(filename);
return actualFilename !== filename;
};
var _filenameHasLoaders = filenameHasLoaders;
__$Getters__['filenameHasLoaders'] = function () {
return filenameHasLoaders;
};
__$Setters__['filenameHasLoaders'] = function (value) {
exports.filenameHasLoaders = filenameHasLoaders = value;
};
__$Resetters__['filenameHasLoaders'] = function () {
exports.filenameHasLoaders = filenameHasLoaders = _filenameHasLoaders;
};
exports.filenameHasLoaders = _filenameHasLoaders;
var filenameHasSchema = function filenameHasSchema(filename) {
return (/^[\w]+\:/.test(filename)
);
};
var _filenameHasSchema = filenameHasSchema;
__$Getters__['filenameHasSchema'] = function () {
return filenameHasSchema;
};
__$Setters__['filenameHasSchema'] = function (value) {
exports.filenameHasSchema = filenameHasSchema = value;
};
__$Resetters__['filenameHasSchema'] = function () {
exports.filenameHasSchema = filenameHasSchema = _filenameHasSchema;
};
exports.filenameHasSchema = _filenameHasSchema;
var isFilenameAbsolute = function isFilenameAbsolute(filename) {
var actualFilename = filenameWithoutLoaders(filename);
if (actualFilename.indexOf('/') === 0) {
return true;
}
return false;
};
var _isFilenameAbsolute = isFilenameAbsolute;
__$Getters__['isFilenameAbsolute'] = function () {
return isFilenameAbsolute;
};
__$Setters__['isFilenameAbsolute'] = function (value) {
exports.isFilenameAbsolute = isFilenameAbsolute = value;
};
__$Resetters__['isFilenameAbsolute'] = function () {
exports.isFilenameAbsolute = isFilenameAbsolute = _isFilenameAbsolute;
};
exports.isFilenameAbsolute = _isFilenameAbsolute;
var makeUrl = function makeUrl(filename, scheme, line, column) {
var actualFilename = filenameWithoutLoaders(filename);
if (filenameHasSchema(filename)) {
return actualFilename;
}
var url = 'file://' + actualFilename;
if (scheme) {
url = scheme + '://open?url=' + url;
if (line && actualFilename === filename) {
url = url + '&line=' + line;
if (column) {
url = url + '&column=' + column;
}
}
}
return url;
};
var _makeUrl = makeUrl;
__$Getters__['makeUrl'] = function () {
return makeUrl;
};
__$Setters__['makeUrl'] = function (value) {
exports.makeUrl = makeUrl = value;
};
__$Resetters__['makeUrl'] = function () {
exports.makeUrl = makeUrl = _makeUrl;
};
exports.makeUrl = _makeUrl;
var makeLinkText = function makeLinkText(filename, line, column) {
var text = filenameWithoutLoaders(filename);
if (line && text === filename) {
text = text + ':' + line;
if (column) {
text = text + ':' + column;
}
}
return text;
};
var _makeLinkText = makeLinkText;
__$Getters__['makeLinkText'] = function () {
return makeLinkText;
};
__$Setters__['makeLinkText'] = function (value) {
exports.makeLinkText = makeLinkText = value;
};
__$Resetters__['makeLinkText'] = function () {
exports.makeLinkText = makeLinkText = _makeLinkText;
};
exports.makeLinkText = _makeLinkText;
exports.__GetDependency__ = __GetDependency__;
exports.__get__ = __GetDependency__;
exports.__Rewire__ = __Rewire__;
exports.__set__ = __Rewire__;
exports.__ResetDependency__ = __ResetDependency__;
exports.__RewireAPI__ = __RewireAPI__;
exports['default'] = __RewireAPI__;
/***/ },
/* 2 */
/***/ function(module, exports) {
'use strict';
exports.__esModule = true;
var __$Getters__ = [];
var __$Setters__ = [];
var __$Resetters__ = [];
function __GetDependency__(name) {
return __$Getters__[name]();
}
function __Rewire__(name, value) {
__$Setters__[name](value);
}
function __ResetDependency__(name) {
__$Resetters__[name]();
}
var __RewireAPI__ = {
'__GetDependency__': __GetDependency__,
'__get__': __GetDependency__,
'__Rewire__': __Rewire__,
'__set__': __Rewire__,
'__ResetDependency__': __ResetDependency__
};
var _defaultExport = {
redbox: {
boxSizing: 'border-box',
fontFamily: 'sans-serif',
position: 'fixed',
padding: 10,
top: '0px',
left: '0px',
bottom: '0px',
right: '0px',
width: '100%',
background: 'rgb(204, 0, 0)',
color: 'white',
zIndex: 9999,
textAlign: 'left',
fontSize: '16px',
lineHeight: 1.2
},
message: {
fontWeight: 'bold'
},
stack: {
fontFamily: 'monospace',
marginTop: '2em'
},
frame: {
marginTop: '1em'
},
file: {
fontSize: '0.8em',
color: 'rgba(255, 255, 255, 0.7)'
},
linkToFile: {
textDecoration: 'none',
color: 'rgba(255, 255, 255, 0.7)'
}
};
if (typeof _defaultExport === 'object' || typeof _defaultExport === 'function') {
Object.defineProperty(_defaultExport, '__Rewire__', {
'value': __Rewire__,
'enumberable': false
});
Object.defineProperty(_defaultExport, '__set__', {
'value': __Rewire__,
'enumberable': false
});
Object.defineProperty(_defaultExport, '__ResetDependency__', {
'value': __ResetDependency__,
'enumberable': false
});
Object.defineProperty(_defaultExport, '__GetDependency__', {
'value': __GetDependency__,
'enumberable': false
});
Object.defineProperty(_defaultExport, '__get__', {
'value': __GetDependency__,
'enumberable': false
});
Object.defineProperty(_defaultExport, '__RewireAPI__', {
'value': __RewireAPI__,
'enumberable': false
});
}
exports['default'] = _defaultExport;
exports.__GetDependency__ = __GetDependency__;
exports.__get__ = __GetDependency__;
exports.__Rewire__ = __Rewire__;
exports.__set__ = __Rewire__;
exports.__ResetDependency__ = __ResetDependency__;
exports.__RewireAPI__ = __RewireAPI__;
module.exports = exports['default'];
/***/ },
/* 3 */
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(root, factory) {
'use strict';
// Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.
/* istanbul ignore next */
if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(4)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else if (typeof exports === 'object') {
module.exports = factory(require('stackframe'));
} else {
root.ErrorStackParser = factory(root.StackFrame);
}
}(this, function ErrorStackParser(StackFrame) {
'use strict';
var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\S+\:\d+/;
var CHROME_IE_STACK_REGEXP = /^\s*at .*(\S+\:\d+|\(native\))/m;
var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\[native code\])?$/;
function _map(array, fn, thisArg) {
if (typeof Array.prototype.map === 'function') {
return array.map(fn, thisArg);
} else {
var output = new Array(array.length);
for (var i = 0; i < array.length; i++) {
output[i] = fn.call(thisArg, array[i]);
}
return output;
}
}
function _filter(array, fn, thisArg) {
if (typeof Array.prototype.filter === 'function') {
return array.filter(fn, thisArg);
} else {
var output = [];
for (var i = 0; i < array.length; i++) {
if (fn.call(thisArg, array[i])) {
output.push(array[i]);
}
}
return output;
}
}
return {
/**
* Given an Error object, extract the most information from it.
*
* @param {Error} error object
* @return {Array} of StackFrames
*/
parse: function ErrorStackParser$$parse(error) {
if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {
return this.parseOpera(error);
} else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {
return this.parseV8OrIE(error);
} else if (error.stack) {
return this.parseFFOrSafari(error);
} else {
throw new Error('Cannot parse given Error object');
}
},
/**
* Separate line and column numbers from a URL-like string.
*
* @param {String} urlLike
* @return {Array} 3-tuple of URL, Line Number, and Column Number
*/
extractLocation: function ErrorStackParser$$extractLocation(urlLike) {
// Fail-fast but return locations like "(native)"
if (urlLike.indexOf(':') === -1) {
return [urlLike];
}
var locationParts = urlLike.replace(/[\(\)\s]/g, '').split(':');
var lastNumber = locationParts.pop();
var possibleNumber = locationParts[locationParts.length - 1];
if (!isNaN(parseFloat(possibleNumber)) && isFinite(possibleNumber)) {
var lineNumber = locationParts.pop();
return [locationParts.join(':'), lineNumber, lastNumber];
} else {
return [locationParts.join(':'), lastNumber, undefined];
}
},
parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {
var filtered = _filter(error.stack.split('\n'), function(line) {
return !!line.match(CHROME_IE_STACK_REGEXP);
}, this);
return _map(filtered, function(line) {
if (line.indexOf('(eval ') > -1) {
// Throw away eval information until we implement stacktrace.js/stackframe#8
line = line.replace(/eval code/g, 'eval').replace(/(\(eval at [^\()]*)|(\)\,.*$)/g, '');
}
var tokens = line.replace(/^\s+/, '').replace(/\(eval code/g, '(').split(/\s+/).slice(1);
var locationParts = this.extractLocation(tokens.pop());
var functionName = tokens.join(' ') || undefined;
var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];
return new StackFrame(functionName, undefined, fileName, locationParts[1], locationParts[2], line);
}, this);
},
parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {
var filtered = _filter(error.stack.split('\n'), function(line) {
return !line.match(SAFARI_NATIVE_CODE_REGEXP);
}, this);
return _map(filtered, function(line) {
// Throw away eval information until we implement stacktrace.js/stackframe#8
if (line.indexOf(' > eval') > -1) {
line = line.replace(/ line (\d+)(?: > eval line \d+)* > eval\:\d+\:\d+/g, ':$1');
}
if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {
// Safari eval frames only have function names and nothing else
return new StackFrame(line);
} else {
var tokens = line.split('@');
var locationParts = this.extractLocation(tokens.pop());
var functionName = tokens.join('@') || undefined;
return new StackFrame(functionName,
undefined,
locationParts[0],
locationParts[1],
locationParts[2],
line);
}
}, this);
},
parseOpera: function ErrorStackParser$$parseOpera(e) {
if (!e.stacktrace || (e.message.indexOf('\n') > -1 &&
e.message.split('\n').length > e.stacktrace.split('\n').length)) {
return this.parseOpera9(e);
} else if (!e.stack) {
return this.parseOpera10(e);
} else {
return this.parseOpera11(e);
}
},
parseOpera9: function ErrorStackParser$$parseOpera9(e) {
var lineRE = /Line (\d+).*script (?:in )?(\S+)/i;
var lines = e.message.split('\n');
var result = [];
for (var i = 2, len = lines.length; i < len; i += 2) {
var match = lineRE.exec(lines[i]);
if (match) {
result.push(new StackFrame(undefined, undefined, match[2], match[1], undefined, lines[i]));
}
}
return result;
},
parseOpera10: function ErrorStackParser$$parseOpera10(e) {
var lineRE = /Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i;
var lines = e.stacktrace.split('\n');
var result = [];
for (var i = 0, len = lines.length; i < len; i += 2) {
var match = lineRE.exec(lines[i]);
if (match) {
result.push(
new StackFrame(
match[3] || undefined,
undefined,
match[2],
match[1],
undefined,
lines[i]
)
);
}
}
return result;
},
// Opera 10.65+ Error.stack very similar to FF/Safari
parseOpera11: function ErrorStackParser$$parseOpera11(error) {
var filtered = _filter(error.stack.split('\n'), function(line) {
return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);
}, this);
return _map(filtered, function(line) {
var tokens = line.split('@');
var locationParts = this.extractLocation(tokens.pop());
var functionCall = (tokens.shift() || '');
var functionName = functionCall
.replace(/<anonymous function(: (\w+))?>/, '$2')
.replace(/\([^\)]*\)/g, '') || undefined;
var argsRaw;
if (functionCall.match(/\(([^\)]*)\)/)) {
argsRaw = functionCall.replace(/^[^\(]+\(([^\)]*)\)$/, '$1');
}
var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?
undefined : argsRaw.split(',');
return new StackFrame(
functionName,
args,
locationParts[0],
locationParts[1],
locationParts[2],
line);
}, this);
}
};
}));
/***/ },
/* 4 */
/***/ function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (root, factory) {
'use strict';
// Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.
/* istanbul ignore next */
if (true) {
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
root.StackFrame = factory();
}
}(this, function () {
'use strict';
function _isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
function StackFrame(functionName, args, fileName, lineNumber, columnNumber, source) {
if (functionName !== undefined) {
this.setFunctionName(functionName);
}
if (args !== undefined) {
this.setArgs(args);
}
if (fileName !== undefined) {
this.setFileName(fileName);
}
if (lineNumber !== undefined) {
this.setLineNumber(lineNumber);
}
if (columnNumber !== undefined) {
this.setColumnNumber(columnNumber);
}
if (source !== undefined) {
this.setSource(source);
}
}
StackFrame.prototype = {
getFunctionName: function () {
return this.functionName;
},
setFunctionName: function (v) {
this.functionName = String(v);
},
getArgs: function () {
return this.args;
},
setArgs: function (v) {
if (Object.prototype.toString.call(v) !== '[object Array]') {
throw new TypeError('Args must be an Array');
}
this.args = v;
},
// NOTE: Property name may be misleading as it includes the path,
// but it somewhat mirrors V8's JavaScriptStackTraceApi
// https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi and Gecko's
// http://mxr.mozilla.org/mozilla-central/source/xpcom/base/nsIException.idl#14
getFileName: function () {
return this.fileName;
},
setFileName: function (v) {
this.fileName = String(v);
},
getLineNumber: function () {
return this.lineNumber;
},
setLineNumber: function (v) {
if (!_isNumber(v)) {
throw new TypeError('Line Number must be a Number');
}
this.lineNumber = Number(v);
},
getColumnNumber: function () {
return this.columnNumber;
},
setColumnNumber: function (v) {
if (!_isNumber(v)) {
throw new TypeError('Column Number must be a Number');
}
this.columnNumber = Number(v);
},
getSource: function () {
return this.source;
},
setSource: function (v) {
this.source = String(v);
},
toString: function() {
var functionName = this.getFunctionName() || '{anonymous}';
var args = '(' + (this.getArgs() || []).join(',') + ')';
var fileName = this.getFileName() ? ('@' + this.getFileName()) : '';
var lineNumber = _isNumber(this.getLineNumber()) ? (':' + this.getLineNumber()) : '';
var columnNumber = _isNumber(this.getColumnNumber()) ? (':' + this.getColumnNumber()) : '';
return functionName + args + fileName + lineNumber + columnNumber;
}
};
return StackFrame;
}));
/***/ },
/* 5 */
/***/ function(module, exports) {
'use strict';
/* eslint-disable no-unused-vars */
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
function toObject(val) {
if (val === null || val === undefined) {
throw new TypeError('Object.assign cannot be called with null or undefined');
}
return Object(val);
}
function shouldUseNative() {
try {
if (!Object.assign) {
return false;
}
// Detect buggy property enumeration order in older V8 versions.
// https://bugs.chromium.org/p/v8/issues/detail?id=4118
var test1 = new String('abc'); // eslint-disable-line
test1[5] = 'de';
if (Object.getOwnPropertyNames(test1)[0] === '5') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test2 = {};
for (var i = 0; i < 10; i++) {
test2['_' + String.fromCharCode(i)] = i;
}
var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
return test2[n];
});
if (order2.join('') !== '0123456789') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test3 = {};
'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
test3[letter] = letter;
});
if (Object.keys(Object.assign({}, test3)).join('') !==
'abcdefghijklmnopqrst') {
return false;
}
return true;
} catch (e) {
// We don't expect any of the above to throw, but better to be safe.
return false;
}
}
module.exports = shouldUseNative() ? Object.assign : function (target, source) {
var from;
var to = toObject(target);
var symbols;
for (var s = 1; s < arguments.length; s++) {
from = Object(arguments[s]);
for (var key in from) {
if (hasOwnProperty.call(from, key)) {
to[key] = from[key];
}
}
if (Object.getOwnPropertySymbols) {
symbols = Object.getOwnPropertySymbols(from);
for (var i = 0; i < symbols.length; i++) {
if (propIsEnumerable.call(from, symbols[i])) {
to[symbols[i]] = from[symbols[i]];
}
}
}
}
return to;
};
/***/ },
/* 6 */
/***/ function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_6__;
/***/ }
/******/ ])
});
;