1- import Package from '../package.json' ;
2-
3- var _sourceHtml = null ;
4-
5- function injectScript ( file , scriptType = 'text/javascript' ) {
6- return new Promise ( ( resolve , reject ) => {
7- let scriptTag = document . createElement ( 'script' ) ;
8-
9- scriptTag . setAttribute ( 'type' , scriptType ) ;
10- scriptTag . setAttribute ( 'src' , file ) ;
11-
12- scriptTag . onload = ( ) => {
13- scriptTag . remove ( ) ;
14- resolve ( ) ;
15- } ;
16-
17- scriptTag . onerror = reject ;
18-
19- ( document . head || document . documentElement ) . appendChild ( scriptTag ) ;
20- } ) ;
21- }
22-
23- async function injectToolbox ( ) {
24- return await injectScript ( chrome . extension . getURL ( 'toolkit.js' ) , 'module' ) ;
25- }
26-
27- function sendMessage ( type , content ) {
28- let message = new CustomEvent ( 'gotdibbs-toolbox' , {
29- detail : {
30- type,
31- content
32- }
33- } ) ;
34-
35- message . initEvent ( 'gotdibbs-toolbox' , false , false ) ;
36-
37- document . dispatchEvent ( message ) ;
38- }
39-
40- async function requestLaunchToolbox ( version ) {
41- if ( document . querySelector ( '[data-hook="gotdibbs-toolbox-root"]' ) ) {
42- sendMessage ( 'LAUNCH_TOOLBOX' ) ;
43- return ;
44- }
45-
46- try {
47- injectToolbox ( ) ;
48- }
49- catch ( e ) {
50- console . error ( 'Failed to load toolkit HTML' ) ;
51- console . error ( e ) ;
52- Honeybadger && Honeybadger . notify ( e , {
53- message : 'Failed to load toolkit HTML'
54- } ) ;
55- }
56- }
57-
58- // Handles messages coming from the Chrome Extension Layer (background.js)
59- function handleBackgroundMessage ( e ) {
60- switch ( e . type ) {
61- case 'LAUNCH_TOOLBOX' :
62- requestLaunchToolbox ( ) ;
63- break ;
64- }
65- }
66-
67- function attachListeners ( ) {
68- chrome . runtime . onMessage . addListener ( handleBackgroundMessage ) ;
69- }
70-
71- function load ( ) {
72- // Handle errors that occur inside our sandbox
73- Honeybadger . configure ( {
74- apiKey : '3783205f' ,
75- environment : 'production' ,
76- revision : Package . version ,
77- onerror : false ,
78- onunhandledrejection : false
79- } ) ;
80-
81- Honeybadger . setContext ( {
82- source : 'chrome_extension'
83- } ) ;
84-
85- Honeybadger . wrap ( function ( ) {
86- attachListeners ( ) ;
87-
88- requestLaunchToolbox ( ) ;
89- } ) ( ) ;
90- }
91-
92- // Tag that we've loaded the app for benefit of background.js
93- window . GOTDIBBS_LOADED = true ;
94-
95- if ( document . readyState === 'complete' ) {
96- load ( ) ;
97- }
98- else {
99- window . addEventListener ( 'load' , load ) ;
1+ import Package from '../package.json' ;
2+
3+ var _sourceHtml = null ;
4+
5+ function injectScript ( file , scriptType = 'text/javascript' ) {
6+ return new Promise ( ( resolve , reject ) => {
7+ let scriptTag = document . createElement ( 'script' ) ;
8+
9+ scriptTag . setAttribute ( 'type' , scriptType ) ;
10+ scriptTag . setAttribute ( 'src' , file ) ;
11+
12+ scriptTag . onload = ( ) => {
13+ scriptTag . remove ( ) ;
14+ resolve ( ) ;
15+ } ;
16+
17+ scriptTag . onerror = reject ;
18+
19+ ( document . head || document . documentElement ) . appendChild ( scriptTag ) ;
20+ } ) ;
21+ }
22+
23+ async function injectToolbox ( ) {
24+ return await injectScript ( chrome . runtime . getURL ( 'toolkit.js' ) , 'module' ) ;
25+ }
26+
27+ function sendMessage ( type , content ) {
28+ let message = new CustomEvent ( 'gotdibbs-toolbox' , {
29+ detail : {
30+ type,
31+ content
32+ }
33+ } ) ;
34+
35+ message . initEvent ( 'gotdibbs-toolbox' , false , false ) ;
36+
37+ document . dispatchEvent ( message ) ;
38+ }
39+
40+ async function requestLaunchToolbox ( version ) {
41+ if ( document . querySelector ( '[data-hook="gotdibbs-toolbox-root"]' ) ) {
42+ sendMessage ( 'LAUNCH_TOOLBOX' ) ;
43+ return ;
44+ }
45+
46+ try {
47+ injectToolbox ( ) ;
48+ }
49+ catch ( e ) {
50+ console . error ( 'Failed to load toolkit HTML' ) ;
51+ console . error ( e ) ;
52+ Honeybadger && Honeybadger . notify ( e , {
53+ message : 'Failed to load toolkit HTML'
54+ } ) ;
55+ }
56+ }
57+
58+ // Handles messages coming from the Chrome Extension Layer (background.js)
59+ function handleBackgroundMessage ( e ) {
60+ switch ( e . type ) {
61+ case 'LAUNCH_TOOLBOX' :
62+ requestLaunchToolbox ( ) ;
63+ break ;
64+ }
65+ }
66+
67+ function attachListeners ( ) {
68+ chrome . runtime . onMessage . addListener ( handleBackgroundMessage ) ;
69+ }
70+
71+ function load ( ) {
72+ // Handle errors that occur inside our sandbox
73+ Honeybadger . configure ( {
74+ apiKey : '3783205f' ,
75+ environment : 'production' ,
76+ revision : Package . version ,
77+ onerror : false ,
78+ onunhandledrejection : false
79+ } ) ;
80+
81+ Honeybadger . setContext ( {
82+ source : 'chrome_extension'
83+ } ) ;
84+
85+ Honeybadger . wrap ( function ( ) {
86+ attachListeners ( ) ;
87+
88+ requestLaunchToolbox ( ) ;
89+ } ) ( ) ;
90+ }
91+
92+ // Tag that we've loaded the app for benefit of background.js
93+ window . GOTDIBBS_LOADED = true ;
94+
95+ if ( document . readyState === 'complete' ) {
96+ load ( ) ;
97+ }
98+ else {
99+ window . addEventListener ( 'load' , load ) ;
100100}
0 commit comments