@@ -82,11 +82,6 @@ export class LintgptRulesHelper {
82
82
83
83
const ora = ( await import ( 'ora' ) ) . default ;
84
84
85
- for ( const rule of rules ) {
86
- const rule_checksum = computeRuleChecksum ( rule ) ;
87
- preparedRulesMap . set ( rule_checksum , { rule, rule_checksum } ) ;
88
- }
89
-
90
85
let spinner = ora ( {
91
86
text : this . getPrepSpinnerText ( {
92
87
total : rules . length ,
@@ -96,61 +91,71 @@ export class LintgptRulesHelper {
96
91
97
92
spinner . start ( ) ;
98
93
99
- const getRulesWithoutPrep = ( ) =>
100
- [ ...preparedRulesMap . values ( ) ] . filter (
101
- ( { prep } ) => ! prep || prep . status === 'requested'
102
- ) ;
103
-
104
- const maxTime = Date . now ( ) + 3 * 60 * 1000 ;
94
+ try {
95
+ for ( const rule of rules ) {
96
+ const rule_checksum = computeRuleChecksum ( rule ) ;
97
+ preparedRulesMap . set ( rule_checksum , { rule, rule_checksum } ) ;
98
+ }
105
99
106
- let rulesWithoutPreps = getRulesWithoutPrep ( ) ;
107
- let firstRun = true ;
108
- const pollInterval = 2000 ;
100
+ const getRulesWithoutPrep = ( ) =>
101
+ [ ...preparedRulesMap . values ( ) ] . filter (
102
+ ( { prep } ) => ! prep || prep . status === 'requested'
103
+ ) ;
109
104
110
- while ( rulesWithoutPreps . length && maxTime > Date . now ( ) ) {
111
- if ( ! firstRun )
112
- await new Promise ( ( resolve ) => setTimeout ( resolve , pollInterval ) ) ;
105
+ const maxTime = Date . now ( ) + 3 * 60 * 1000 ;
113
106
114
- const results = await this . client . getLintgptPreps (
115
- rulesWithoutPreps . map ( ( r ) => r . rule_checksum )
116
- ) ;
107
+ let rulesWithoutPreps = getRulesWithoutPrep ( ) ;
108
+ let firstRun = true ;
109
+ const pollInterval = 2000 ;
117
110
118
- for ( const result of results . lintgpt_preps ) {
119
- preparedRulesMap . set ( result . rule_checksum , {
120
- ...preparedRulesMap . get ( result . rule_checksum ) ! ,
121
- prep : result ,
122
- } ) ;
123
- }
111
+ while ( rulesWithoutPreps . length && maxTime > Date . now ( ) ) {
112
+ if ( ! firstRun )
113
+ await new Promise ( ( resolve ) => setTimeout ( resolve , pollInterval ) ) ;
124
114
125
- rulesWithoutPreps = getRulesWithoutPrep ( ) ;
115
+ const results = await this . client . getLintgptPreps (
116
+ rulesWithoutPreps . map ( ( r ) => r . rule_checksum )
117
+ ) ;
126
118
127
- if ( firstRun && rulesWithoutPreps . length ) {
128
- const rulesToPrep = rulesWithoutPreps . map ( ( r ) => r . rule ) ;
129
- await this . client . requestLintgptPreps ( rulesToPrep ) ;
130
- }
119
+ for ( const result of results . lintgpt_preps ) {
120
+ preparedRulesMap . set ( result . rule_checksum , {
121
+ ...preparedRulesMap . get ( result . rule_checksum ) ! ,
122
+ prep : result ,
123
+ } ) ;
124
+ }
131
125
132
- spinner . text = this . getPrepSpinnerText ( {
133
- total : rules . length ,
134
- evaluated : rules . length - rulesWithoutPreps . length ,
135
- } ) ;
126
+ rulesWithoutPreps = getRulesWithoutPrep ( ) ;
136
127
137
- firstRun = false ;
138
- }
128
+ if ( firstRun && rulesWithoutPreps . length ) {
129
+ const rulesToPrep = rulesWithoutPreps . map ( ( r ) => r . rule ) ;
130
+ await this . client . requestLintgptPreps ( rulesToPrep ) ;
131
+ }
139
132
140
- if ( rulesWithoutPreps . length ) {
141
- spinner . warn (
142
- `LintGPT: ${ rulesWithoutPreps . length } /${ rules . length } rules timed out`
143
- ) ;
144
- } else {
145
- spinner . succeed (
146
- this . getPrepSpinnerText ( {
133
+ spinner . text = this . getPrepSpinnerText ( {
147
134
total : rules . length ,
148
135
evaluated : rules . length - rulesWithoutPreps . length ,
149
- } )
150
- ) ;
151
- }
136
+ } ) ;
137
+
138
+ firstRun = false ;
139
+ }
152
140
153
- return preparedRulesMap ;
141
+ if ( rulesWithoutPreps . length ) {
142
+ spinner . warn (
143
+ `LintGPT: ${ rulesWithoutPreps . length } /${ rules . length } rules timed out`
144
+ ) ;
145
+ } else {
146
+ spinner . succeed (
147
+ this . getPrepSpinnerText ( {
148
+ total : rules . length ,
149
+ evaluated : rules . length - rulesWithoutPreps . length ,
150
+ } )
151
+ ) ;
152
+ }
153
+
154
+ return preparedRulesMap ;
155
+ } catch ( e ) {
156
+ spinner . fail ( `LintGPT: an error occured while preparing rules` ) ;
157
+ throw e ;
158
+ }
154
159
}
155
160
156
161
private getEvalSpinnerText = ( {
@@ -174,17 +179,6 @@ export class LintgptRulesHelper {
174
179
175
180
const ora = ( await import ( 'ora' ) ) . default ;
176
181
177
- for ( const eval_request of eval_requests ) {
178
- const rule_checksum = eval_request . rule_checksum ;
179
- const node_checksum = computeNodeChecksum ( eval_request ) ;
180
- const key = getEvalKey ( rule_checksum , node_checksum ) ;
181
- evalsMap . set ( key , {
182
- eval_request,
183
- rule_checksum,
184
- node_checksum,
185
- } ) ;
186
- }
187
-
188
182
let spinner = ora ( {
189
183
text : this . getEvalSpinnerText ( {
190
184
total : eval_requests . length ,
@@ -194,84 +188,102 @@ export class LintgptRulesHelper {
194
188
195
189
spinner . start ( ) ;
196
190
197
- const getRequestsWithoutEvals = ( ) =>
198
- [ ...evalsMap . values ( ) ] . filter (
199
- ( { rule_eval } ) => ! rule_eval || rule_eval . status === 'requested'
200
- ) ;
191
+ try {
192
+ for ( const eval_request of eval_requests ) {
193
+ const rule_checksum = eval_request . rule_checksum ;
194
+ const node_checksum = computeNodeChecksum ( eval_request ) ;
195
+ const key = getEvalKey ( rule_checksum , node_checksum ) ;
196
+ evalsMap . set ( key , {
197
+ eval_request,
198
+ rule_checksum,
199
+ node_checksum,
200
+ } ) ;
201
+ }
201
202
202
- const maxTime = Date . now ( ) + 5 * 60 * 1000 ;
203
+ const getRequestsWithoutEvals = ( ) =>
204
+ [ ...evalsMap . values ( ) ] . filter (
205
+ ( { rule_eval } ) => ! rule_eval || rule_eval . status === 'requested'
206
+ ) ;
203
207
204
- let requestsWithoutEvals = getRequestsWithoutEvals ( ) ;
205
- let firstRun = true ;
206
- let pollInterval0 = 0 ;
207
- let pollInterval1 = 1000 ;
208
+ const maxTime = Date . now ( ) + 5 * 60 * 1000 ;
208
209
209
- while ( requestsWithoutEvals . length && maxTime > Date . now ( ) ) {
210
- if ( ! firstRun ) {
211
- pollInterval1 = pollInterval0 + pollInterval1 ;
212
- pollInterval0 = pollInterval1 - pollInterval0 ;
213
- await new Promise ( ( resolve ) => setTimeout ( resolve , pollInterval1 ) ) ;
214
- }
210
+ let requestsWithoutEvals = getRequestsWithoutEvals ( ) ;
211
+ let firstRun = true ;
212
+ let pollInterval0 = 0 ;
213
+ let pollInterval1 = 1000 ;
215
214
216
- const queryChunks = chunk (
217
- requestsWithoutEvals . map ( ( r ) => ( {
218
- rule_checksum : r . rule_checksum ,
219
- node_checksum : r . node_checksum ,
220
- } ) ) ,
221
- 20
222
- ) ;
223
-
224
- const resultChunks = await Promise . all (
225
- queryChunks . map ( ( c ) => this . client . getLintgptEvals ( c ) )
226
- ) ;
227
-
228
- const results = resultChunks . reduce (
229
- ( acc , val ) => ( {
230
- lintgpt_evals : [ ...acc . lintgpt_evals , ...val . lintgpt_evals ] ,
231
- } ) ,
232
- { lintgpt_evals : [ ] }
233
- ) ;
234
-
235
- for ( const result of results . lintgpt_evals ) {
236
- const key = getEvalKey ( result . rule_checksum , result . node_checksum ) ;
237
- if ( ! evalsMap . has ( key ) ) {
238
- continue ;
215
+ while ( requestsWithoutEvals . length && maxTime > Date . now ( ) ) {
216
+ if ( ! firstRun ) {
217
+ pollInterval1 = pollInterval0 + pollInterval1 ;
218
+ pollInterval0 = pollInterval1 - pollInterval0 ;
219
+ await new Promise ( ( resolve ) => setTimeout ( resolve , pollInterval1 ) ) ;
239
220
}
240
- evalsMap . set ( key , {
241
- ...evalsMap . get ( key ) ! ,
242
- rule_eval : result ,
243
- } ) ;
244
- }
245
221
246
- requestsWithoutEvals = getRequestsWithoutEvals ( ) ;
222
+ const queryChunks = chunk (
223
+ requestsWithoutEvals . map ( ( r ) => ( {
224
+ rule_checksum : r . rule_checksum ,
225
+ node_checksum : r . node_checksum ,
226
+ } ) ) ,
227
+ 20
228
+ ) ;
229
+
230
+ const resultChunks = await Promise . all (
231
+ queryChunks . map ( ( c ) => this . client . getLintgptEvals ( c ) )
232
+ ) ;
233
+
234
+ const results = resultChunks . reduce (
235
+ ( acc , val ) => ( {
236
+ lintgpt_evals : [ ...acc . lintgpt_evals , ...val . lintgpt_evals ] ,
237
+ } ) ,
238
+ { lintgpt_evals : [ ] }
239
+ ) ;
240
+
241
+ for ( const result of results . lintgpt_evals ) {
242
+ const key = getEvalKey ( result . rule_checksum , result . node_checksum ) ;
243
+ if ( ! evalsMap . has ( key ) ) {
244
+ continue ;
245
+ }
246
+ evalsMap . set ( key , {
247
+ ...evalsMap . get ( key ) ! ,
248
+ rule_eval : result ,
249
+ } ) ;
250
+ }
247
251
248
- spinner . text = this . getEvalSpinnerText ( {
249
- total : eval_requests . length ,
250
- evaluated : eval_requests . length - requestsWithoutEvals . length ,
251
- } ) ;
252
+ requestsWithoutEvals = getRequestsWithoutEvals ( ) ;
253
+
254
+ spinner . text = this . getEvalSpinnerText ( {
255
+ total : eval_requests . length ,
256
+ evaluated : eval_requests . length - requestsWithoutEvals . length ,
257
+ } ) ;
258
+
259
+ if ( firstRun && requestsWithoutEvals . length ) {
260
+ const evalsToRequest = requestsWithoutEvals . map (
261
+ ( r ) => r . eval_request
262
+ ) ;
263
+ await this . client . requestLintgptEvals ( evalsToRequest ) ;
264
+ }
252
265
253
- if ( firstRun && requestsWithoutEvals . length ) {
254
- const evalsToRequest = requestsWithoutEvals . map ( ( r ) => r . eval_request ) ;
255
- await this . client . requestLintgptEvals ( evalsToRequest ) ;
266
+ firstRun = false ;
256
267
}
257
268
258
- firstRun = false ;
259
- }
269
+ if ( requestsWithoutEvals . length ) {
270
+ spinner . warn (
271
+ `LintGPT: ${ requestsWithoutEvals . length } /${ eval_requests . length } checks timed out`
272
+ ) ;
273
+ } else {
274
+ spinner . succeed (
275
+ this . getEvalSpinnerText ( {
276
+ total : eval_requests . length ,
277
+ evaluated : eval_requests . length - requestsWithoutEvals . length ,
278
+ } )
279
+ ) ;
280
+ }
260
281
261
- if ( requestsWithoutEvals . length ) {
262
- spinner . warn (
263
- `LintGPT: ${ requestsWithoutEvals . length } /${ eval_requests . length } checks timed out`
264
- ) ;
265
- } else {
266
- spinner . succeed (
267
- this . getEvalSpinnerText ( {
268
- total : eval_requests . length ,
269
- evaluated : eval_requests . length - requestsWithoutEvals . length ,
270
- } )
271
- ) ;
282
+ return evalsMap ;
283
+ } catch ( e ) {
284
+ spinner . fail ( 'LintGPT: an error occured while running evals' ) ;
285
+ throw e ;
272
286
}
273
-
274
- return evalsMap ;
275
287
}
276
288
}
277
289
0 commit comments