@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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @firebase/util
2
2
 
3
+ ## 1.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`2d672cead`](https://github.com/firebase/firebase-js-sdk/commit/2d672cead167187cb714cd89b638c0884ba58f03) [#6061](https://github.com/firebase/firebase-js-sdk/pull/6061) - Remove idb dependency and replace with our own code.
8
+
3
9
  ## 1.4.3
4
10
 
5
11
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -33,3 +33,4 @@ export * from './src/utf8';
33
33
  export * from './src/exponential_backoff';
34
34
  export * from './src/formatters';
35
35
  export * from './src/compat';
36
+ export * from './src/indexeddb';
@@ -1895,5 +1895,140 @@ function getModularInstance(service) {
1895
1895
  }
1896
1896
  }
1897
1897
 
1898
- 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 };
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
+
2033
+ 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 };
1899
2034
  //# sourceMappingURL=index.esm2017.js.map