1- const parseAndGenerate = require ( './scripts/parser' ) ;
2- const ports = [ ] ;
1+ const parseAndGenerate = require ( './scripts/parser2' ) ;
2+
3+ let ports = [ ] ;
34
45chrome . tabs . onUpdated . addListener ( ( id , info , tab ) => {
56 if ( tab . status !== 'complete' || tab . url . startsWith ( 'chrome' ) ) return ;
@@ -12,6 +13,7 @@ chrome.tabs.onUpdated.addListener((id, info, tab) => {
1213 } ) ;
1314
1415 chrome . tabs . query ( { active : true , currentWindow : true } , ( tabs ) => {
16+ interceptedUrl = '' ;
1517 notifyPorts (
1618 { action : 'refresh_devtool' , tabId : tabs [ 0 ] . id } ,
1719 'devtools' ,
@@ -26,7 +28,9 @@ function handleRequest(request) {
2628 if ( ! interceptedUrl . startsWith ( request . initiator ) ) return { cancel : false } ;
2729
2830 if ( request . type === 'script' && ! request . url . startsWith ( 'chrome' )
29- && request . frameId === 0 ) {
31+ && request . frameId === 0 && ( ( request . url . slice ( - 3 ) === '.js' )
32+ || ( request . url . slice ( - 4 ) === '.jsx' ) ) ) {
33+ console . log ( 'Got one: ' , request . url , request ) ;
3034 // TODO: adjust comment
3135 // Else we need to check wether or not this contains the react
3236 // library. If it does, we need to send the edit javascript to
@@ -40,6 +44,9 @@ function handleRequest(request) {
4044
4145 sendMessageToContent ( parseAndGenerate ( syncRequest . responseText ) ) ;
4246
47+ // const code = encodeURIComponent(parseAndGenerate(syncRequest.responseText));
48+ // console.log('CODE - LENGTH: ', code.length);
49+ // return { redirectUrl: 'data:application/javascript; charset=utf-8,'.concat(code) };
4350 return { redirectUrl : 'javascript:' } ;
4451 }
4552}
@@ -78,52 +85,50 @@ function addScriptInterception() {
7885
7986 // if (request.type !== 'script' || request.url.startsWith('chrome')
8087 // || request.frameId !== 0) return;
81-
82- // request.requestHeaders.push({
83- // name: 'Access-Control-Allow-Credentials',
84- // value: '*',
85- // });
86-
87- // request.requestHeaders.push({
88- // name: 'Accept',
89- // value: 'application/javascript',
90- // });
91-
92- // request.requestHeaders.push({
93- // name: 'ABC',
94- // value: 'abc',
95- // });
96-
88+ // console.log('onBeforeHeaders = ', request.url);
89+ // // request.requestHeaders.push({
90+ // // name: 'Access-Control-Allow-Credentials',
91+ // // value: '*',
92+ // / / });
93+
94+ // // request.requestHeaders.push({
95+ // // name: 'Accept',
96+ // // value: 'application/javascript',
97+ // / / });
98+
99+ // // request.requestHeaders.push({
100+ // // name: 'ABC',
101+ // // value: 'abc',
102+ // / / });
103+ // const filteredHeaders = [{name: 'TTT', value: 'OK'}];
97104 // for (let i = 0; i < request.requestHeaders.length; i++) {
98105 // const header = request.requestHeaders[i];
99- // if (header.name === 'Origin') {
100- // console.log('found one');
101- // delete request.requestHeaders[i];
106+ // if (header.name !== 'Origin') {
107+ // filteredHeaders.push({
108+ // name: header.name,
109+ // value: header.value,
110+ // });
102111 // }
103112 // }
104-
105- // console.log('intercepting fom beforesendheaders: ', request);
113+ // return { requestHeaders: filteredHeaders };
106114 // },
107115 // { urls: ['<all_urls>'] },
108116 // ['blocking', 'requestHeaders'],
109117 // );
110118
111- // chrome.webRequest.onHeadersReceived.addListener((request) => {
112- // if (!interceptedUrl.startsWith(request.initiator)) return { cancel: false };
113-
114- // if (request.type !== 'script' || request.url.startsWith('chrome')
115- // || request.frameId !== 0) return;
116-
117- // const syncRequest = new XMLHttpRequest();
118- // syncRequest.open('GET', request.url, false);
119- // syncRequest.send(null);
120-
121- // console.log('Got req onHeadersReceived!!!! ', request);
119+ // chrome.webRequest.onSendHeaders.addListener(
120+ // (request) => {
121+ // console.log('onSendHeaders: ', request);
122+ // },
123+ // { urls: ['<all_urls>'] },
124+ // ['requestHeaders'],
125+ // );
122126
123- // return { redirectUrl: 'data:application/javascript; charset=utf-8,'.concat(syncRequest.responseText) };
124- // },
125- // { urls: ['<all_urls>'] },
126- // ['blocking', 'responseHeaders']);
127+ // chrome.webRequest.onHeadersReceived.addListener(
128+ // handleRequest,
129+ // { urls: ['<all_urls>'] },
130+ // ['blocking', 'responseHeaders'],
131+ // );
127132}
128133
129134let reqIndex = 0 ;
@@ -135,12 +140,17 @@ function sendMessageToContent(codeString) {
135140}
136141
137142function notifyPorts ( msg , portName ) {
138- ports . forEach ( ( port ) => {
139- if ( portName && ( port . name !== portName ) ) return ;
140- try {
141- port . postMessage ( msg ) ;
142- } catch {
143- console . log ( 'notifyPorts has found some closed conections.' ) ;
143+ let index = 0 ;
144+ while ( index < ports . length ) {
145+ if ( portName && ( ports [ index ] . name !== portName ) ) index ++ ;
146+ else {
147+ try {
148+ ports [ index ] . postMessage ( msg ) ;
149+ index ++ ;
150+ } catch {
151+ // remove closed port from array
152+ ports = [ ...ports . slice ( 0 , index ) , ...ports . slice ( index + 1 ) ] ;
153+ }
144154 }
145- } ) ;
155+ }
146156}
0 commit comments