@@ -805,34 +805,32 @@ def generate_js(data_target, data_files, metadata):
805805 var DB_VERSION = 1;
806806 var METADATA_STORE_NAME = 'METADATA';
807807 var PACKAGE_STORE_NAME = 'PACKAGES';
808- function openDatabase(callback, errback ) {
808+ async function openDatabase() {
809809 if (typeof indexedDB == 'undefined') {
810810 return errback('using IndexedDB to cache data can only be done on a web page or in a web worker');
811811 }
812- try {
812+ return new Promise((resolve, reject) => {
813813 var openRequest = indexedDB.open(DB_NAME, DB_VERSION);
814- } catch (e) {
815- return errback(e);
816- }
817- openRequest.onupgradeneeded = (event) => {
818- var db = /** @type {IDBDatabase} */ (event.target.result);
814+ openRequest.onupgradeneeded = (event) => {
815+ var db = /** @type {IDBDatabase} */ (event.target.result);
819816
820- if (db.objectStoreNames.contains(PACKAGE_STORE_NAME)) {
821- db.deleteObjectStore(PACKAGE_STORE_NAME);
822- }
823- var packages = db.createObjectStore(PACKAGE_STORE_NAME);
817+ if (db.objectStoreNames.contains(PACKAGE_STORE_NAME)) {
818+ db.deleteObjectStore(PACKAGE_STORE_NAME);
819+ }
820+ var packages = db.createObjectStore(PACKAGE_STORE_NAME);
824821
825- if (db.objectStoreNames.contains(METADATA_STORE_NAME)) {
826- db.deleteObjectStore(METADATA_STORE_NAME);
827- }
828- var metadata = db.createObjectStore(METADATA_STORE_NAME);
829- };
830- openRequest.onsuccess = (event) => {
831- var db = /** @type {IDBDatabase} */ (event.target.result);
832- callback(db);
833- };
834- openRequest.onerror = (error) => errback(error);
835- };
822+ if (db.objectStoreNames.contains(METADATA_STORE_NAME)) {
823+ db.deleteObjectStore(METADATA_STORE_NAME);
824+ }
825+ var metadata = db.createObjectStore(METADATA_STORE_NAME);
826+ };
827+ openRequest.onsuccess = (event) => {
828+ var db = /** @type {IDBDatabase} */ (event.target.result);
829+ resolve(db);
830+ };
831+ openRequest.onerror = reject;
832+ });
833+ }
836834
837835 // This is needed as chromium has a limit on per-entry files in IndexedDB
838836 // https://cs.chromium.org/chromium/src/content/renderer/indexed_db/webidbdatabase_impl.cc?type=cs&sq=package:chromium&g=0&l=177
@@ -1045,8 +1043,8 @@ def generate_js(data_target, data_files, metadata):
10451043 fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, processPackageData, handleError);
10461044 };
10471045
1048- openDatabase(
1049- (db) => checkCachedPackage(db, PACKAGE_PATH + PACKAGE_NAME,
1046+ openDatabase()
1047+ .then( (db) => checkCachedPackage(db, PACKAGE_PATH + PACKAGE_NAME,
10501048 (useCached, metadata) => {
10511049 Module['preloadResults'][PACKAGE_NAME] = {fromCache: useCached};
10521050 if (useCached) {
@@ -1062,8 +1060,8 @@ def generate_js(data_target, data_files, metadata):
10621060 }
10631061 , preloadFallback);
10641062 }
1065- }, preloadFallback)
1066- , preloadFallback);
1063+ }, preloadFallback))
1064+ .catch( preloadFallback);
10671065
10681066 Module['setStatus']?.('Downloading...');\n '''
10691067 else :
0 commit comments