@@ -805,34 +805,32 @@ def generate_js(data_target, data_files, metadata):
805
805
var DB_VERSION = 1;
806
806
var METADATA_STORE_NAME = 'METADATA';
807
807
var PACKAGE_STORE_NAME = 'PACKAGES';
808
- function openDatabase(callback, errback ) {
808
+ async function openDatabase() {
809
809
if (typeof indexedDB == 'undefined') {
810
810
return errback('using IndexedDB to cache data can only be done on a web page or in a web worker');
811
811
}
812
- try {
812
+ return new Promise((resolve, reject) => {
813
813
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);
819
816
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);
824
821
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
+ }
836
834
837
835
// This is needed as chromium has a limit on per-entry files in IndexedDB
838
836
// 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):
1045
1043
fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, processPackageData, handleError);
1046
1044
};
1047
1045
1048
- openDatabase(
1049
- (db) => checkCachedPackage(db, PACKAGE_PATH + PACKAGE_NAME,
1046
+ openDatabase()
1047
+ .then( (db) => checkCachedPackage(db, PACKAGE_PATH + PACKAGE_NAME,
1050
1048
(useCached, metadata) => {
1051
1049
Module['preloadResults'][PACKAGE_NAME] = {fromCache: useCached};
1052
1050
if (useCached) {
@@ -1062,8 +1060,8 @@ def generate_js(data_target, data_files, metadata):
1062
1060
}
1063
1061
, preloadFallback);
1064
1062
}
1065
- }, preloadFallback)
1066
- , preloadFallback);
1063
+ }, preloadFallback))
1064
+ .catch( preloadFallback);
1067
1065
1068
1066
Module['setStatus']?.('Downloading...');\n '''
1069
1067
else :
0 commit comments