1
1
import loopProtect from 'loop-protect' ;
2
2
import { Hook , Decode , Encode } from 'console-feed' ;
3
3
import evaluateExpression from './evaluateExpression' ;
4
- import { EXTERNAL_LINK_REGEX } from '../../server/utils/fileUtils' ;
5
4
6
5
// should postMessage user the dispatcher? does the parent window need to
7
6
// be registered as a frame? or a just a listener?
@@ -10,6 +9,7 @@ import { EXTERNAL_LINK_REGEX } from '../../server/utils/fileUtils';
10
9
// const { editor } = window;
11
10
const editor = window . parent . parent ;
12
11
const { editorOrigin } = window ;
12
+ const htmlOffset = 12 ;
13
13
// const editorOrigin = '*';
14
14
// const editorOrigin = 'http://localhost:8000';
15
15
// so this works??
@@ -77,12 +77,16 @@ function getScriptOff(line) {
77
77
// catch reference errors, via http://stackoverflow.com/a/12747364/2994108
78
78
window . onerror = function onError ( msg , source , lineNumber , columnNo , error ) {
79
79
const urls = Object . keys ( window . objectUrls ) ;
80
- let data = '' ;
80
+ let data = error . stack ;
81
81
urls . forEach ( ( url ) => {
82
82
if ( error . stack . match ( url ) ) {
83
83
data = error . stack . replaceAll ( url , window . objectUrls [ url ] ) ;
84
84
}
85
85
} ) ;
86
+ if ( data . match ( 'about:srcdoc' ) ) {
87
+ data = data . replaceAll ( 'about:srcdoc' , 'index.html' ) ;
88
+ data = data . replace ( `:${ lineNumber } :` , `:${ lineNumber - htmlOffset } :` ) ;
89
+ }
86
90
editor . postMessage (
87
91
{
88
92
source : 'sketch' ,
@@ -106,12 +110,13 @@ window.onerror = function onError(msg, source, lineNumber, columnNo, error) {
106
110
window . onunhandledrejection = function onUnhandledRejection ( event ) {
107
111
if ( event . reason && event . reason . message && event . reason . stack ) {
108
112
const urls = Object . keys ( window . objectUrls ) ;
109
- let data = '' ;
113
+ let data = event . reason . stack ;
110
114
urls . forEach ( ( url ) => {
111
115
if ( event . reason . stack . match ( url ) ) {
112
116
data = event . reason . stack . replaceAll ( url , window . objectUrls [ url ] ) ;
113
117
}
114
118
} ) ;
119
+ data = data . replaceAll ( 'about:srcdoc' , 'index.html' ) ;
115
120
editor . postMessage (
116
121
{
117
122
source : 'sketch' ,
0 commit comments