@firebase/util 1.4.3-canary.ff2f7d4c8 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1895,6 +1895,141 @@ function getModularInstance(service) {
1895
1895
  }
1896
1896
  }
1897
1897
 
1898
+ /**
1899
+ * @license
1900
+ * Copyright 2022 Google LLC
1901
+ *
1902
+ * Licensed under the Apache License, Version 2.0 (the "License");
1903
+ * you may not use this file except in compliance with the License.
1904
+ * You may obtain a copy of the License at
1905
+ *
1906
+ * http://www.apache.org/licenses/LICENSE-2.0
1907
+ *
1908
+ * Unless required by applicable law or agreed to in writing, software
1909
+ * distributed under the License is distributed on an "AS IS" BASIS,
1910
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1911
+ * See the License for the specific language governing permissions and
1912
+ * limitations under the License.
1913
+ */
1914
+ function promisifyRequest(request, errorMessage) {
1915
+ return new Promise((resolve, reject) => {
1916
+ request.onsuccess = event => {
1917
+ resolve(event.target.result);
1918
+ };
1919
+ request.onerror = event => {
1920
+ var _a;
1921
+ reject(`${errorMessage}: ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);
1922
+ };
1923
+ });
1924
+ }
1925
+ class DBWrapper {
1926
+ constructor(_db) {
1927
+ this._db = _db;
1928
+ this.objectStoreNames = this._db.objectStoreNames;
1929
+ }
1930
+ transaction(storeNames, mode) {
1931
+ return new TransactionWrapper(this._db.transaction.call(this._db, storeNames, mode));
1932
+ }
1933
+ createObjectStore(storeName, options) {
1934
+ return new ObjectStoreWrapper(this._db.createObjectStore(storeName, options));
1935
+ }
1936
+ close() {
1937
+ this._db.close();
1938
+ }
1939
+ }
1940
+ class TransactionWrapper {
1941
+ constructor(_transaction) {
1942
+ this._transaction = _transaction;
1943
+ this.complete = new Promise((resolve, reject) => {
1944
+ this._transaction.oncomplete = function () {
1945
+ resolve();
1946
+ };
1947
+ this._transaction.onerror = () => {
1948
+ reject(this._transaction.error);
1949
+ };
1950
+ this._transaction.onabort = () => {
1951
+ reject(this._transaction.error);
1952
+ };
1953
+ });
1954
+ }
1955
+ objectStore(storeName) {
1956
+ return new ObjectStoreWrapper(this._transaction.objectStore(storeName));
1957
+ }
1958
+ }
1959
+ class ObjectStoreWrapper {
1960
+ constructor(_store) {
1961
+ this._store = _store;
1962
+ }
1963
+ index(name) {
1964
+ return new IndexWrapper(this._store.index(name));
1965
+ }
1966
+ createIndex(name, keypath, options) {
1967
+ return new IndexWrapper(this._store.createIndex(name, keypath, options));
1968
+ }
1969
+ get(key) {
1970
+ const request = this._store.get(key);
1971
+ return promisifyRequest(request, 'Error reading from IndexedDB');
1972
+ }
1973
+ put(value, key) {
1974
+ const request = this._store.put(value, key);
1975
+ return promisifyRequest(request, 'Error writing to IndexedDB');
1976
+ }
1977
+ delete(key) {
1978
+ const request = this._store.delete(key);
1979
+ return promisifyRequest(request, 'Error deleting from IndexedDB');
1980
+ }
1981
+ clear() {
1982
+ const request = this._store.clear();
1983
+ return promisifyRequest(request, 'Error clearing IndexedDB object store');
1984
+ }
1985
+ }
1986
+ class IndexWrapper {
1987
+ constructor(_index) {
1988
+ this._index = _index;
1989
+ }
1990
+ get(key) {
1991
+ const request = this._index.get(key);
1992
+ return promisifyRequest(request, 'Error reading from IndexedDB');
1993
+ }
1994
+ }
1995
+ function openDB(dbName, dbVersion, upgradeCallback) {
1996
+ return new Promise((resolve, reject) => {
1997
+ try {
1998
+ const request = indexedDB.open(dbName, dbVersion);
1999
+ request.onsuccess = event => {
2000
+ resolve(new DBWrapper(event.target.result));
2001
+ };
2002
+ request.onerror = event => {
2003
+ var _a;
2004
+ reject(`Error opening indexedDB: ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);
2005
+ };
2006
+ request.onupgradeneeded = event => {
2007
+ upgradeCallback(new DBWrapper(request.result), event.oldVersion, event.newVersion, new TransactionWrapper(request.transaction));
2008
+ };
2009
+ }
2010
+ catch (e) {
2011
+ reject(`Error opening indexedDB: ${e.message}`);
2012
+ }
2013
+ });
2014
+ }
2015
+ async function deleteDB(dbName) {
2016
+ return new Promise((resolve, reject) => {
2017
+ try {
2018
+ const request = indexedDB.deleteDatabase(dbName);
2019
+ request.onsuccess = () => {
2020
+ resolve();
2021
+ };
2022
+ request.onerror = event => {
2023
+ var _a;
2024
+ reject(`Error deleting indexedDB database "${dbName}": ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);
2025
+ };
2026
+ }
2027
+ catch (e) {
2028
+ reject(`Error deleting indexedDB database "${dbName}": ${e.message}`);
2029
+ }
2030
+ });
2031
+ }
2032
+
1898
2033
  /**
1899
2034
  * @license
1900
2035
  * Copyright 2017 Google LLC
@@ -1914,5 +2049,5 @@ function getModularInstance(service) {
1914
2049
  // Overriding the constant (we should be the only ones doing this)
1915
2050
  CONSTANTS.NODE_CLIENT = true;
1916
2051
 
1917
- export { CONSTANTS, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, ordinal, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };
2052
+ export { CONSTANTS, DBWrapper, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, deleteDB, errorPrefix, extractQuerystring, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, openDB, ordinal, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };
1918
2053
  //# sourceMappingURL=index.node.esm.js.map