@@ -304,31 +304,32 @@ export class SimpleDb {
304
304
const request = indexedDB . open ( this . name , this . version ) ;
305
305
306
306
// Store information about "Clear Site Data" being detected in the
307
- // "onupgradeneeded" event and check it in the "onsuccess" event
308
- // rather than throwing directly from the "onupgradeneeded" event
309
- // since throwing directly from the listener results in a generic
310
- // exception that cannot be distinguished from other errors.
311
- const clearSiteDataEvent = {
312
- event : null as ClearSiteDataDatabaseDeletedEvent | null
313
- } ;
307
+ // "onupgradeneeded" event listener and handle it in the "onsuccess"
308
+ // event listener, as opposed to throwing directly from the
309
+ // "onupgradeneeded" event listener. Do this because throwing from the
310
+ // "onupgradeneeded" event listener results in a generic error being
311
+ // reported to the "onerror" event listener that cannot be distinguished
312
+ // from other errors.
313
+ const clearSiteDataEvent : ClearSiteDataDatabaseDeletedEvent [ ] = [ ] ;
314
314
315
315
request . onsuccess = ( event : Event ) => {
316
- const db = ( event . target as IDBOpenDBRequest ) . result ;
317
-
318
- if ( clearSiteDataEvent . event ) {
316
+ let error : unknown ;
317
+ if ( clearSiteDataEvent [ 0 ] ) {
319
318
try {
320
- this . databaseDeletedListener ?.( clearSiteDataEvent . event ) ;
319
+ this . databaseDeletedListener ?.( clearSiteDataEvent [ 0 ] ) ;
321
320
} catch ( e ) {
322
- try {
323
- db . close ( ) ;
324
- } finally {
325
- reject ( e ) ;
326
- }
327
- return ;
321
+ error = e ;
328
322
}
329
323
}
330
324
331
- resolve ( db ) ;
325
+ const db = ( event . target as IDBOpenDBRequest ) . result ;
326
+
327
+ if ( error ) {
328
+ reject ( error ) ;
329
+ db . close ( ) ;
330
+ } else {
331
+ resolve ( db ) ;
332
+ }
332
333
} ;
333
334
334
335
request . onblocked = ( ) => {
@@ -380,12 +381,14 @@ export class SimpleDb {
380
381
this . lastClosedDbVersion !== null &&
381
382
this . lastClosedDbVersion !== event . oldVersion
382
383
) {
383
- clearSiteDataEvent . event = new ClearSiteDataDatabaseDeletedEvent ( {
384
- lastClosedVersion : this . lastClosedDbVersion ,
385
- eventOldVersion : event . oldVersion ,
386
- eventNewVersion : event . newVersion ,
387
- dbVersion : db . version
388
- } ) ;
384
+ clearSiteDataEvent . push (
385
+ new ClearSiteDataDatabaseDeletedEvent ( {
386
+ lastClosedVersion : this . lastClosedDbVersion ,
387
+ eventOldVersion : event . oldVersion ,
388
+ eventNewVersion : event . newVersion ,
389
+ dbVersion : db . version
390
+ } )
391
+ ) ;
389
392
}
390
393
this . schemaConverter
391
394
. createOrUpgrade (
0 commit comments