UNPKG

12.2 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.__RewireAPI__ = exports.__ResetDependency__ = exports.__set__ = exports.__Rewire__ = exports.__GetDependency__ = exports.__get__ = exports.RedBoxError = undefined;
7
8var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
9
10var _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; }; }();
11
12var _react = require('react');
13
14var _react2 = _interopRequireDefault(_react);
15
16var _reactDom = require('react-dom');
17
18var _reactDom2 = _interopRequireDefault(_reactDom);
19
20var _style = require('./style.js');
21
22var _style2 = _interopRequireDefault(_style);
23
24var _errorStackParser = require('error-stack-parser');
25
26var _errorStackParser2 = _interopRequireDefault(_errorStackParser);
27
28var _objectAssign = require('object-assign');
29
30var _objectAssign2 = _interopRequireDefault(_objectAssign);
31
32var _lib = require('./lib');
33
34function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
36function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
37
38function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
39
40function _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; }
41
42var RedBoxError = exports.RedBoxError = function (_get__2) {
43 _inherits(RedBoxError, _get__2);
44
45 function RedBoxError() {
46 _classCallCheck(this, RedBoxError);
47
48 return _possibleConstructorReturn(this, (RedBoxError.__proto__ || Object.getPrototypeOf(RedBoxError)).apply(this, arguments));
49 }
50
51 _createClass(RedBoxError, [{
52 key: 'renderFrames',
53 value: function renderFrames(frames) {
54 var _props = this.props,
55 filename = _props.filename,
56 editorScheme = _props.editorScheme,
57 useLines = _props.useLines,
58 useColumns = _props.useColumns;
59
60 var _get__3 = _get__('assign')({}, _get__('style'), this.props.style),
61 frame = _get__3.frame,
62 file = _get__3.file,
63 linkToFile = _get__3.linkToFile;
64
65 return frames.map(function (f, index) {
66 var text = void 0;
67 var url = void 0;
68
69 if (index === 0 && filename && !_get__('isFilenameAbsolute')(f.fileName)) {
70 url = _get__('makeUrl')(filename, editorScheme);
71 text = _get__('makeLinkText')(filename);
72 } else {
73 var lines = useLines ? f.lineNumber : null;
74 var columns = useColumns ? f.columnNumber : null;
75 url = _get__('makeUrl')(f.fileName, editorScheme, lines, columns);
76 text = _get__('makeLinkText')(f.fileName, lines, columns);
77 }
78
79 return _get__('React').createElement(
80 'div',
81 { style: frame, key: index },
82 _get__('React').createElement(
83 'div',
84 null,
85 f.functionName
86 ),
87 _get__('React').createElement(
88 'div',
89 { style: file },
90 _get__('React').createElement(
91 'a',
92 { href: url, style: linkToFile },
93 text
94 )
95 )
96 );
97 });
98 }
99 }, {
100 key: 'render',
101 value: function render() {
102 var _props2 = this.props,
103 error = _props2.error,
104 className = _props2.className;
105
106 var _get__4 = _get__('assign')({}, _get__('style'), this.props.style),
107 redbox = _get__4.redbox,
108 message = _get__4.message,
109 stack = _get__4.stack,
110 frame = _get__4.frame;
111
112 var frames = void 0;
113 var parseError = void 0;
114 try {
115 frames = _get__('ErrorStackParser').parse(error);
116 } catch (e) {
117 parseError = new Error('Failed to parse stack trace. Stack trace information unavailable.');
118 }
119
120 if (parseError) {
121 frames = _get__('React').createElement(
122 'div',
123 { style: frame, key: 0 },
124 _get__('React').createElement(
125 'div',
126 null,
127 parseError.message
128 )
129 );
130 } else {
131 frames = this.renderFrames(frames);
132 }
133
134 return _get__('React').createElement(
135 'div',
136 { style: redbox, className: className },
137 _get__('React').createElement(
138 'div',
139 { style: message },
140 error.name,
141 ': ',
142 error.message
143 ),
144 _get__('React').createElement(
145 'div',
146 { style: stack },
147 frames
148 )
149 );
150 }
151 }]);
152
153 return RedBoxError;
154}(_get__('Component'));
155
156// "Portal" component for actual RedBoxError component to
157// render to (directly under body). Prevents bugs as in #27.
158
159
160RedBoxError.propTypes = {
161 error: _get__('PropTypes').instanceOf(Error).isRequired,
162 filename: _get__('PropTypes').string,
163 editorScheme: _get__('PropTypes').string,
164 useLines: _get__('PropTypes').bool,
165 useColumns: _get__('PropTypes').bool,
166 style: _get__('PropTypes').object,
167 className: _get__('PropTypes').string
168};
169RedBoxError.displayName = 'RedBoxError';
170RedBoxError.defaultProps = {
171 useLines: true,
172 useColumns: true
173};
174
175var RedBox = function (_get__5) {
176 _inherits(RedBox, _get__5);
177
178 function RedBox() {
179 _classCallCheck(this, RedBox);
180
181 return _possibleConstructorReturn(this, (RedBox.__proto__ || Object.getPrototypeOf(RedBox)).apply(this, arguments));
182 }
183
184 _createClass(RedBox, [{
185 key: 'componentDidMount',
186 value: function componentDidMount() {
187 this.el = document.createElement('div');
188 document.body.appendChild(this.el);
189 this.renderRedBoxError();
190 }
191 }, {
192 key: 'componentDidUpdate',
193 value: function componentDidUpdate() {
194 this.renderRedBoxError();
195 }
196 }, {
197 key: 'componentWillUnmount',
198 value: function componentWillUnmount() {
199 _get__('ReactDOM').unmountComponentAtNode(this.el);
200 document.body.removeChild(this.el);
201 this.el = null;
202 }
203 }, {
204 key: 'renderRedBoxError',
205 value: function renderRedBoxError() {
206 _get__('ReactDOM').render(_get__('React').createElement(_get__('RedBoxError'), this.props), this.el);
207 }
208 }, {
209 key: 'render',
210 value: function render() {
211 return null;
212 }
213 }]);
214
215 return RedBox;
216}(_get__('Component'));
217
218RedBox.propTypes = {
219 error: _get__('PropTypes').instanceOf(Error).isRequired
220};
221RedBox.displayName = 'RedBox';
222exports.default = RedBox;
223
224var _RewiredData__ = Object.create(null);
225
226var INTENTIONAL_UNDEFINED = '__INTENTIONAL_UNDEFINED__';
227var _RewireAPI__ = {};
228
229(function () {
230 function addPropertyToAPIObject(name, value) {
231 Object.defineProperty(_RewireAPI__, name, {
232 value: value,
233 enumerable: false,
234 configurable: true
235 });
236 }
237
238 addPropertyToAPIObject('__get__', _get__);
239 addPropertyToAPIObject('__GetDependency__', _get__);
240 addPropertyToAPIObject('__Rewire__', _set__);
241 addPropertyToAPIObject('__set__', _set__);
242 addPropertyToAPIObject('__reset__', _reset__);
243 addPropertyToAPIObject('__ResetDependency__', _reset__);
244 addPropertyToAPIObject('__with__', _with__);
245})();
246
247function _get__(variableName) {
248 if (_RewiredData__ === undefined || _RewiredData__[variableName] === undefined) {
249 return _get_original__(variableName);
250 } else {
251 var value = _RewiredData__[variableName];
252
253 if (value === INTENTIONAL_UNDEFINED) {
254 return undefined;
255 } else {
256 return value;
257 }
258 }
259}
260
261function _get_original__(variableName) {
262 switch (variableName) {
263 case 'PropTypes':
264 return _react.PropTypes;
265
266 case 'assign':
267 return _objectAssign2.default;
268
269 case 'style':
270 return _style2.default;
271
272 case 'isFilenameAbsolute':
273 return _lib.isFilenameAbsolute;
274
275 case 'makeUrl':
276 return _lib.makeUrl;
277
278 case 'makeLinkText':
279 return _lib.makeLinkText;
280
281 case 'ErrorStackParser':
282 return _errorStackParser2.default;
283
284 case 'Component':
285 return _react.Component;
286
287 case 'ReactDOM':
288 return _reactDom2.default;
289
290 case 'React':
291 return _react2.default;
292
293 case 'RedBoxError':
294 return RedBoxError;
295 }
296
297 return undefined;
298}
299
300function _assign__(variableName, value) {
301 if (_RewiredData__ === undefined || _RewiredData__[variableName] === undefined) {
302 return _set_original__(variableName, value);
303 } else {
304 return _RewiredData__[variableName] = value;
305 }
306}
307
308function _set_original__(variableName, _value) {
309 switch (variableName) {}
310
311 return undefined;
312}
313
314function _update_operation__(operation, variableName, prefix) {
315 var oldValue = _get__(variableName);
316
317 var newValue = operation === '++' ? oldValue + 1 : oldValue - 1;
318
319 _assign__(variableName, newValue);
320
321 return prefix ? newValue : oldValue;
322}
323
324function _set__(variableName, value) {
325 if ((typeof variableName === 'undefined' ? 'undefined' : _typeof(variableName)) === 'object') {
326 Object.keys(variableName).forEach(function (name) {
327 _RewiredData__[name] = variableName[name];
328 });
329 } else {
330 if (value === undefined) {
331 _RewiredData__[variableName] = INTENTIONAL_UNDEFINED;
332 } else {
333 _RewiredData__[variableName] = value;
334 }
335
336 return function () {
337 _reset__(variableName);
338 };
339 }
340}
341
342function _reset__(variableName) {
343 delete _RewiredData__[variableName];
344}
345
346function _with__(object) {
347 var rewiredVariableNames = Object.keys(object);
348 var previousValues = {};
349
350 function reset() {
351 rewiredVariableNames.forEach(function (variableName) {
352 _RewiredData__[variableName] = previousValues[variableName];
353 });
354 }
355
356 return function (callback) {
357 rewiredVariableNames.forEach(function (variableName) {
358 previousValues[variableName] = _RewiredData__[variableName];
359 _RewiredData__[variableName] = object[variableName];
360 });
361 var result = callback();
362
363 if (!!result && typeof result.then == 'function') {
364 result.then(reset).catch(reset);
365 } else {
366 reset();
367 }
368
369 return result;
370 };
371}
372
373var _typeOfOriginalExport = typeof RedBox === 'undefined' ? 'undefined' : _typeof(RedBox);
374
375function addNonEnumerableProperty(name, value) {
376 Object.defineProperty(RedBox, name, {
377 value: value,
378 enumerable: false,
379 configurable: true
380 });
381}
382
383if ((_typeOfOriginalExport === 'object' || _typeOfOriginalExport === 'function') && Object.isExtensible(RedBox)) {
384 addNonEnumerableProperty('__get__', _get__);
385 addNonEnumerableProperty('__GetDependency__', _get__);
386 addNonEnumerableProperty('__Rewire__', _set__);
387 addNonEnumerableProperty('__set__', _set__);
388 addNonEnumerableProperty('__reset__', _reset__);
389 addNonEnumerableProperty('__ResetDependency__', _reset__);
390 addNonEnumerableProperty('__with__', _with__);
391 addNonEnumerableProperty('__RewireAPI__', _RewireAPI__);
392}
393
394exports.__get__ = _get__;
395exports.__GetDependency__ = _get__;
396exports.__Rewire__ = _set__;
397exports.__set__ = _set__;
398exports.__ResetDependency__ = _reset__;
399exports.__RewireAPI__ = _RewireAPI__;
\No newline at end of file