44} from '../background/chatgpt/chatgpt.js' ;
55
66/* Element selectors */
7- const selectors = {
7+ const selectors : { [ key : string ] : string } = {
88 fixCodeBtn : 'fix-code-btn' ,
99 getComplexityBtn : 'get-complexity-btn' ,
1010 infoMessage : 'info-message' ,
@@ -19,7 +19,7 @@ const selectors = {
1919} ;
2020
2121/* Chrome storage keys */
22- const storageKeys = {
22+ const storageKeys : { [ key : string ] : string } = {
2323 analyzeCodeResponse : 'analyzeCodeResponse' ,
2424 fixCodeResponse : 'fixCodeResponse' ,
2525 lastAction : 'lastAction' ,
@@ -28,7 +28,7 @@ const storageKeys = {
2828} ;
2929
3030/* Retrieve elements from DOM */
31- const elements = { } ;
31+ const elements : { [ key : string ] : HTMLElement | null } = { } ;
3232for ( let key in selectors ) {
3333 elements [ key ] = document . getElementById ( selectors [ key ] ) ;
3434}
@@ -47,19 +47,19 @@ function disableAllButtons(disabled: boolean): void {
4747}
4848
4949function clearResponse ( ) : void {
50- analyzeCodeResponse . textContent = '' ;
51- fixCodeResponse . textContent = '' ;
50+ analyzeCodeResponse ! . textContent = '' ;
51+ fixCodeResponse ! . textContent = '' ;
5252 fixCodeContainer ! . classList . add ( 'hidden' ) ;
53- analyzeCodeResponse . classList . add ( 'hidden' ) ;
53+ analyzeCodeResponse ! . classList . add ( 'hidden' ) ;
5454 chrome . storage . local . set ( { 'fixCodeResponse' : '' } ) ;
5555 chrome . storage . local . set ( { 'analyzeCodeResponse' : '' } ) ;
5656}
5757
5858function setInfoMessage ( message : string , duration : number ) {
59- let oldMessage = infoMessage . textContent ;
60- infoMessage . textContent = message ;
59+ let oldMessage = infoMessage ! . textContent ;
60+ infoMessage ! . textContent = message ;
6161 setTimeout ( ( ) => {
62- infoMessage . textContent = oldMessage ;
62+ infoMessage ! . textContent = oldMessage ;
6363 } , duration ) ;
6464}
6565
@@ -113,8 +113,8 @@ function processCode(
113113 Offer a brief explanation(1 - 2 lines max) for each complexity analysis.
114114 Keep your analysis direct and succinct.
115115 ` ;
116- infoMessage . textContent = 'Analyzing code complexity ...' ;
117- analyzeCodeResponse . classList . remove ( 'hidden' ) ;
116+ infoMessage ! . textContent = 'Analyzing code complexity ...' ;
117+ analyzeCodeResponse ! . classList . remove ( 'hidden' ) ;
118118 fixCodeContainer ! . classList . add ( 'hidden' ) ;
119119 }
120120 else if ( action === "fix" ) {
@@ -123,11 +123,11 @@ function processCode(
123123 If only the function definition is provided, your task is to generate the optimal solution for this problem.
124124 Conversely, if the code is provided below, there is most likely error(s) in the code.
125125 Please correct any potential issues that is preventing the submission f rom being accepted.
126- If the code I provide is already correct and optimized, return it as is.
126+ If the provided code is already correct and optimized, return it as is.
127127 All code should be returned in plain text, with no usage of code blocks, and only essential inline comments are permitted.
128128 ` ;
129- infoMessage . textContent = 'Creating the solution ...' ;
130- analyzeCodeResponse . classList . add ( 'hidden' ) ;
129+ infoMessage ! . textContent = 'Creating the solution ...' ;
130+ analyzeCodeResponse ! . classList . add ( 'hidden' ) ;
131131 fixCodeContainer ! . classList . remove ( 'hidden' ) ;
132132 }
133133 prompt += '\n Heres the code \n' + codeText ;
@@ -139,17 +139,17 @@ function processCode(
139139 if ( event . type === 'answer' && event . data ) {
140140 response += event . data . text ;
141141 if ( action === "fix" ) {
142- fixCodeResponse . textContent = response ;
142+ fixCodeResponse ! . textContent = response ;
143143 }
144144 else if ( action === "analyze" ) {
145- analyzeCodeResponse . textContent = response ;
145+ analyzeCodeResponse ! . textContent = response ;
146146 }
147147 }
148148 if ( event . type === 'done' ) {
149- chrome . storage . local . set ( { 'analyzeCodeResponse' : analyzeCodeResponse . textContent } ) ;
150- chrome . storage . local . set ( { 'fixCodeResponse' : fixCodeResponse . textContent } ) ;
149+ chrome . storage . local . set ( { 'analyzeCodeResponse' : analyzeCodeResponse ! . textContent } ) ;
150+ chrome . storage . local . set ( { 'fixCodeResponse' : fixCodeResponse ! . textContent } ) ;
151151 chrome . storage . local . set ( { 'lastAction' : action } ) ;
152- infoMessage . textContent = problemTitle ;
152+ infoMessage ! . textContent = problemTitle ;
153153 disableAllButtons ( false ) ;
154154 ( window as any ) . Prism . highlightAll ( ) ;
155155 }
@@ -177,8 +177,8 @@ async function main(): Promise<void> {
177177 if ( parseInt ( data . fontSize ) >= 18 ) {
178178 let width = ( parseInt ( data . fontSize ) * 24 + 200 ) ;
179179 document . body . style . width = `${ width + 20 } px` ;
180- fixCodeContainer . style . maxWidth = `${ width } px` ;
181- analyzeCodeResponse . style . maxWidth = `${ width } px` ;
180+ fixCodeContainer ! . style . maxWidth = `${ width } px` ;
181+ analyzeCodeResponse ! . style . maxWidth = `${ width } px` ;
182182 }
183183
184184 let sizes = document . getElementsByClassName ( 'material-button' ) ;
@@ -190,26 +190,26 @@ async function main(): Promise<void> {
190190
191191 chrome . storage . local . get ( 'analyzeCodeResponse' , function ( data ) {
192192 if ( data . analyzeCodeResponse ) {
193- analyzeCodeResponse . textContent = data . analyzeCodeResponse ;
193+ analyzeCodeResponse ! . textContent = data . analyzeCodeResponse ;
194194 ( window as any ) . Prism . highlightAll ( ) ;
195195 }
196196 } ) ;
197197
198198 chrome . storage . local . get ( 'fixCodeResponse' , function ( data ) {
199199 if ( data . fixCodeResponse ) {
200- fixCodeResponse . textContent = data . fixCodeResponse ;
200+ fixCodeResponse ! . textContent = data . fixCodeResponse ;
201201 ( window as any ) . Prism . highlightAll ( ) ;
202202 }
203203 } ) ;
204204
205205 chrome . storage . local . get ( 'lastAction' , function ( data ) {
206206 if ( data . lastAction ) {
207207 if ( data . lastAction === "analyze" ) {
208- analyzeCodeResponse . classList . remove ( 'hidden' ) ;
209- fixCodeContainer . classList . add ( 'hidden' ) ;
208+ analyzeCodeResponse ! . classList . remove ( 'hidden' ) ;
209+ fixCodeContainer ! . classList . add ( 'hidden' ) ;
210210 }
211211 else if ( data . lastAction === "fix" ) {
212- analyzeCodeResponse . classList . add ( 'hidden' ) ;
212+ analyzeCodeResponse ! . classList . add ( 'hidden' ) ;
213213 fixCodeContainer ! . classList . remove ( 'hidden' ) ;
214214 }
215215 }
@@ -219,7 +219,7 @@ async function main(): Promise<void> {
219219
220220 // get language from storage and set the classname of the code block to it
221221 chrome . storage . local . get ( 'language' , function ( data ) {
222- fixCodeResponse . classList . add ( 'language-' + data . language ) ;
222+ fixCodeResponse ! . classList . add ( 'language-' + data . language ) ;
223223 } ) ;
224224
225225 // get name of current tab and set info message to it if its a leetcode problem
@@ -241,8 +241,8 @@ async function main(): Promise<void> {
241241 initActionButton ( 'fix-code-btn' , 'fix' , chatGPTProvider ) ;
242242 initCopyButton ( ) ;
243243 initClearButton ( ) ;
244- elements [ 'getComplexityBtn' ] . classList . remove ( 'hidden' ) ;
245- elements [ 'fixCodeBtn' ] . classList . remove ( 'hidden' ) ;
244+ elements [ 'getComplexityBtn' ] ! . classList . remove ( 'hidden' ) ;
245+ elements [ 'fixCodeBtn' ] ! . classList . remove ( 'hidden' ) ;
246246 }
247247 else {
248248 displayLoginMessage ( ) ;
@@ -259,19 +259,19 @@ async function main(): Promise<void> {
259259
260260function initCopyButton ( ) : void {
261261 const copyButton = elements [ 'copyCodeBtn' ] ;
262- copyButton . onclick = async ( ) => {
262+ copyButton ! . onclick = async ( ) => {
263263 setInfoMessage ( 'Copied Code' , 3000 ) ;
264- if ( fixCodeResponse . textContent ) {
265- await navigator . clipboard . writeText ( fixCodeResponse . textContent ) ;
264+ if ( fixCodeResponse ! . textContent ) {
265+ await navigator . clipboard . writeText ( fixCodeResponse ! . textContent ) ;
266266 }
267267 } ;
268- copyButton . classList . remove ( 'hidden' ) ;
268+ copyButton ! . classList . remove ( 'hidden' ) ;
269269}
270270
271271// init clear code button
272272function initClearButton ( ) : void {
273273 const clearButton = elements [ 'clearCodeBtn' ]
274- clearButton . onclick = async ( ) => {
274+ clearButton ! . onclick = async ( ) => {
275275 setInfoMessage ( 'Cleared Response' , 3000 ) ;
276276 clearResponse ( ) ;
277277 } ;
@@ -288,7 +288,7 @@ function handleError(error: Error): void {
288288}
289289
290290function displayLoginMessage ( ) : void {
291- elements [ 'loginBtn' ] . classList . remove ( 'hidden' ) ;
291+ elements [ 'loginBtn' ] ! . classList . remove ( 'hidden' ) ;
292292 infoMessage ! . textContent =
293293 'Log into ChatGPT in your browser to get started' ;
294294}
@@ -306,7 +306,7 @@ chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
306306 if ( message . action === 'setTabInfo' ) {
307307 const urlPattern = / ^ h t t p s : \/ \/ l e e t c o d e \. c o m \/ p r o b l e m s \/ .* \/ ? / ;
308308 if ( message . url . match ( urlPattern ) ) {
309- infoMessage . textContent = message . title ;
309+ infoMessage ! . textContent = message . title ;
310310 }
311311 }
312312} ) ;
0 commit comments