fix password focus, bump version to -beta3
This commit is contained in:
Generated
+1690
-1604
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "tinode-webapp",
|
||||
"description": "Tinode messenger for the web",
|
||||
"version": "0.20.0-beta2",
|
||||
"version": "0.20.0-beta3",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/tinode/example-react-js.git"
|
||||
@@ -71,7 +71,7 @@
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-intl": "^5.20.2",
|
||||
"tinode-sdk": "^0.20.0-beta2",
|
||||
"tinode-sdk": "^0.20.0-beta3",
|
||||
"webrtc-adapter": "^8.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
// This is a generated file. Don't edit.
|
||||
|
||||
export const PACKAGE_VERSION = "0.20.0-beta2";
|
||||
export const PACKAGE_VERSION = "0.20.0-beta3";
|
||||
|
||||
@@ -5,8 +5,6 @@ import { FormattedMessage } from 'react-intl';
|
||||
import CheckBox from '../widgets/checkbox.jsx';
|
||||
import VisiblePassword from '../widgets/visible-password.jsx';
|
||||
|
||||
import LocalStorageUtil from '../lib/local-storage.js';
|
||||
|
||||
export default class LoginView extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
@@ -19,8 +19,10 @@ export default class VisiblePassword extends React.PureComponent {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
if (this.props.autoFocus) {
|
||||
this.inputRef.current.focus();
|
||||
}
|
||||
}
|
||||
|
||||
handeTextChange(e) {
|
||||
this.setState({value: e.target.value});
|
||||
|
||||
+438
-206
@@ -11,7 +11,6 @@
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "CONSTANTS": () => (/* binding */ CONSTANTS),
|
||||
/* harmony export */ "DBWrapper": () => (/* binding */ DBWrapper),
|
||||
/* harmony export */ "Deferred": () => (/* binding */ Deferred),
|
||||
/* harmony export */ "ErrorFactory": () => (/* binding */ ErrorFactory),
|
||||
/* harmony export */ "FirebaseError": () => (/* binding */ FirebaseError),
|
||||
@@ -34,7 +33,6 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ "deepCopy": () => (/* binding */ deepCopy),
|
||||
/* harmony export */ "deepEqual": () => (/* binding */ deepEqual),
|
||||
/* harmony export */ "deepExtend": () => (/* binding */ deepExtend),
|
||||
/* harmony export */ "deleteDB": () => (/* binding */ deleteDB),
|
||||
/* harmony export */ "errorPrefix": () => (/* binding */ errorPrefix),
|
||||
/* harmony export */ "extractQuerystring": () => (/* binding */ extractQuerystring),
|
||||
/* harmony export */ "getGlobal": () => (/* binding */ getGlobal),
|
||||
@@ -58,14 +56,15 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ "issuedAtTime": () => (/* binding */ issuedAtTime),
|
||||
/* harmony export */ "jsonEval": () => (/* binding */ jsonEval),
|
||||
/* harmony export */ "map": () => (/* binding */ map),
|
||||
/* harmony export */ "openDB": () => (/* binding */ openDB),
|
||||
/* harmony export */ "ordinal": () => (/* binding */ ordinal),
|
||||
/* harmony export */ "promiseWithTimeout": () => (/* binding */ promiseWithTimeout),
|
||||
/* harmony export */ "querystring": () => (/* binding */ querystring),
|
||||
/* harmony export */ "querystringDecode": () => (/* binding */ querystringDecode),
|
||||
/* harmony export */ "safeGet": () => (/* binding */ safeGet),
|
||||
/* harmony export */ "stringLength": () => (/* binding */ stringLength),
|
||||
/* harmony export */ "stringToByteArray": () => (/* binding */ stringToByteArray),
|
||||
/* harmony export */ "stringify": () => (/* binding */ stringify),
|
||||
/* harmony export */ "uuidv4": () => (/* binding */ uuidv4),
|
||||
/* harmony export */ "validateArgCount": () => (/* binding */ validateArgCount),
|
||||
/* harmony export */ "validateCallback": () => (/* binding */ validateCallback),
|
||||
/* harmony export */ "validateContextObject": () => (/* binding */ validateContextObject),
|
||||
@@ -848,7 +847,7 @@ function getGlobal() {
|
||||
*
|
||||
* catch (e) {
|
||||
* assert(e.message === "Could not find file: foo.txt.");
|
||||
* if (e.code === 'service/file-not-found') {
|
||||
* if ((e as FirebaseError)?.code === 'service/file-not-found') {
|
||||
* console.log("Could not read file: " + e['file']);
|
||||
* }
|
||||
* }
|
||||
@@ -1126,6 +1125,33 @@ function isObject(thing) {
|
||||
return thing !== null && typeof thing === 'object';
|
||||
}
|
||||
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2022 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
/**
|
||||
* Rejects if the given promise doesn't resolve in timeInMS milliseconds.
|
||||
* @internal
|
||||
*/
|
||||
function promiseWithTimeout(promise, timeInMS = 2000) {
|
||||
const deferredPromise = new Deferred();
|
||||
setTimeout(() => deferredPromise.reject('timeout!'), timeInMS);
|
||||
promise.then(deferredPromise.resolve, deferredPromise.reject);
|
||||
return deferredPromise.promise;
|
||||
}
|
||||
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2017 Google LLC
|
||||
@@ -1835,6 +1861,34 @@ const stringLength = function (str) {
|
||||
return p;
|
||||
};
|
||||
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2022 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
/**
|
||||
* Copied from https://stackoverflow.com/a/2117523
|
||||
* Generates a new uuid.
|
||||
* @public
|
||||
*/
|
||||
const uuidv4 = function () {
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
|
||||
const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;
|
||||
return v.toString(16);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2019 Google LLC
|
||||
@@ -1969,162 +2023,6 @@ function getModularInstance(service) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @license
|
||||
* Copyright 2022 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
function promisifyRequest(request, errorMessage) {
|
||||
return new Promise((resolve, reject) => {
|
||||
request.onsuccess = event => {
|
||||
resolve(event.target.result);
|
||||
};
|
||||
request.onerror = event => {
|
||||
var _a;
|
||||
reject(`${errorMessage}: ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);
|
||||
};
|
||||
});
|
||||
}
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class DBWrapper {
|
||||
constructor(_db) {
|
||||
this._db = _db;
|
||||
this.objectStoreNames = this._db.objectStoreNames;
|
||||
}
|
||||
transaction(storeNames, mode = 'readonly') {
|
||||
return new TransactionWrapper(this._db.transaction.call(this._db, storeNames, mode));
|
||||
}
|
||||
createObjectStore(storeName, options) {
|
||||
return new ObjectStoreWrapper(this._db.createObjectStore(storeName, options));
|
||||
}
|
||||
close() {
|
||||
this._db.close();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class TransactionWrapper {
|
||||
constructor(_transaction) {
|
||||
this._transaction = _transaction;
|
||||
this.complete = new Promise((resolve, reject) => {
|
||||
this._transaction.oncomplete = function () {
|
||||
resolve();
|
||||
};
|
||||
this._transaction.onerror = () => {
|
||||
reject(this._transaction.error);
|
||||
};
|
||||
this._transaction.onabort = () => {
|
||||
reject(this._transaction.error);
|
||||
};
|
||||
});
|
||||
}
|
||||
objectStore(storeName) {
|
||||
return new ObjectStoreWrapper(this._transaction.objectStore(storeName));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class ObjectStoreWrapper {
|
||||
constructor(_store) {
|
||||
this._store = _store;
|
||||
}
|
||||
index(name) {
|
||||
return new IndexWrapper(this._store.index(name));
|
||||
}
|
||||
createIndex(name, keypath, options) {
|
||||
return new IndexWrapper(this._store.createIndex(name, keypath, options));
|
||||
}
|
||||
get(key) {
|
||||
const request = this._store.get(key);
|
||||
return promisifyRequest(request, 'Error reading from IndexedDB');
|
||||
}
|
||||
put(value, key) {
|
||||
const request = this._store.put(value, key);
|
||||
return promisifyRequest(request, 'Error writing to IndexedDB');
|
||||
}
|
||||
delete(key) {
|
||||
const request = this._store.delete(key);
|
||||
return promisifyRequest(request, 'Error deleting from IndexedDB');
|
||||
}
|
||||
clear() {
|
||||
const request = this._store.clear();
|
||||
return promisifyRequest(request, 'Error clearing IndexedDB object store');
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
class IndexWrapper {
|
||||
constructor(_index) {
|
||||
this._index = _index;
|
||||
}
|
||||
get(key) {
|
||||
const request = this._index.get(key);
|
||||
return promisifyRequest(request, 'Error reading from IndexedDB');
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
function openDB(dbName, dbVersion, upgradeCallback) {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
const request = indexedDB.open(dbName, dbVersion);
|
||||
request.onsuccess = event => {
|
||||
resolve(new DBWrapper(event.target.result));
|
||||
};
|
||||
request.onerror = event => {
|
||||
var _a;
|
||||
reject(`Error opening indexedDB: ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);
|
||||
};
|
||||
request.onupgradeneeded = event => {
|
||||
upgradeCallback(new DBWrapper(request.result), event.oldVersion, event.newVersion, new TransactionWrapper(request.transaction));
|
||||
};
|
||||
}
|
||||
catch (e) {
|
||||
reject(`Error opening indexedDB: ${e.message}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
async function deleteDB(dbName) {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
const request = indexedDB.deleteDatabase(dbName);
|
||||
request.onsuccess = () => {
|
||||
resolve();
|
||||
};
|
||||
request.onerror = event => {
|
||||
var _a;
|
||||
reject(`Error deleting indexedDB database "${dbName}": ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);
|
||||
};
|
||||
}
|
||||
catch (e) {
|
||||
reject(`Error deleting indexedDB database "${dbName}": ${e.message}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//# sourceMappingURL=index.esm2017.js.map
|
||||
|
||||
@@ -3599,7 +3497,7 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "PACKAGE_VERSION": () => (/* binding */ PACKAGE_VERSION)
|
||||
/* harmony export */ });
|
||||
const PACKAGE_VERSION = "0.20.0-beta2";
|
||||
const PACKAGE_VERSION = "0.20.0-beta3";
|
||||
|
||||
/***/ }),
|
||||
|
||||
@@ -5338,8 +5236,6 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var _widgets_checkbox_jsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../widgets/checkbox.jsx */ "./src/widgets/checkbox.jsx");
|
||||
/* harmony import */ var _widgets_visible_password_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../widgets/visible-password.jsx */ "./src/widgets/visible-password.jsx");
|
||||
/* harmony import */ var _lib_local_storage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/local-storage.js */ "./src/lib/local-storage.js");
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -11867,7 +11763,7 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var _received_marker_jsx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./received-marker.jsx */ "./src/widgets/received-marker.jsx");
|
||||
/* harmony import */ var _lib_formatters_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../lib/formatters.js */ "./src/lib/formatters.js");
|
||||
/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../lib/utils.js */ "./src/lib/utils.js");
|
||||
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
||||
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
||||
|
||||
|
||||
|
||||
@@ -17464,8 +17360,10 @@ class VisiblePassword extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pure
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
if (this.props.autoFocus) {
|
||||
this.inputRef.current.focus();
|
||||
}
|
||||
}
|
||||
|
||||
handeTextChange(e) {
|
||||
this.setState({
|
||||
@@ -17574,7 +17472,7 @@ __webpack_require__.r(__webpack_exports__);
|
||||
|
||||
|
||||
var name = "firebase";
|
||||
var version = "9.6.11";
|
||||
var version = "9.9.0";
|
||||
|
||||
/**
|
||||
* @license
|
||||
@@ -18218,6 +18116,8 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var _firebase_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @firebase/component */ "./node_modules/@firebase/component/dist/esm/index.esm2017.js");
|
||||
/* harmony import */ var _firebase_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @firebase/logger */ "./node_modules/@firebase/logger/dist/esm/index.esm2017.js");
|
||||
/* harmony import */ var _firebase_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @firebase/util */ "./node_modules/@firebase/util/dist/index.esm2017.js");
|
||||
/* harmony import */ var idb__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! idb */ "./node_modules/idb/build/index.js");
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -18277,7 +18177,7 @@ function isVersionServiceProvider(provider) {
|
||||
}
|
||||
|
||||
const name$o = "@firebase/app";
|
||||
const version$1 = "0.7.21";
|
||||
const version$1 = "0.7.28";
|
||||
|
||||
/**
|
||||
* @license
|
||||
@@ -18344,7 +18244,7 @@ const name$2 = "@firebase/firestore";
|
||||
const name$1 = "@firebase/firestore-compat";
|
||||
|
||||
const name = "firebase";
|
||||
const version = "9.6.11";
|
||||
const version = "9.9.0";
|
||||
|
||||
/**
|
||||
* @license
|
||||
@@ -18808,7 +18708,8 @@ const STORE_NAME = 'firebase-heartbeat-store';
|
||||
let dbPromise = null;
|
||||
function getDbPromise() {
|
||||
if (!dbPromise) {
|
||||
dbPromise = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.openDB)(DB_NAME, DB_VERSION, (db, oldVersion) => {
|
||||
dbPromise = (0,idb__WEBPACK_IMPORTED_MODULE_3__.openDB)(DB_NAME, DB_VERSION, {
|
||||
upgrade: (db, oldVersion) => {
|
||||
// We don't use 'break' in this switch statement, the fall-through
|
||||
// behavior is what we want, because if there are multiple versions between
|
||||
// the old version and the current version, we want ALL the migrations
|
||||
@@ -18818,6 +18719,7 @@ function getDbPromise() {
|
||||
case 0:
|
||||
db.createObjectStore(STORE_NAME);
|
||||
}
|
||||
}
|
||||
}).catch(e => {
|
||||
throw ERROR_FACTORY.create("storage-open" /* STORAGE_OPEN */, {
|
||||
originalErrorMessage: e.message
|
||||
@@ -18827,6 +18729,7 @@ function getDbPromise() {
|
||||
return dbPromise;
|
||||
}
|
||||
async function readHeartbeatsFromIndexedDB(app) {
|
||||
var _a;
|
||||
try {
|
||||
const db = await getDbPromise();
|
||||
return db
|
||||
@@ -18836,21 +18739,22 @@ async function readHeartbeatsFromIndexedDB(app) {
|
||||
}
|
||||
catch (e) {
|
||||
throw ERROR_FACTORY.create("storage-get" /* STORAGE_GET */, {
|
||||
originalErrorMessage: e.message
|
||||
originalErrorMessage: (_a = e) === null || _a === void 0 ? void 0 : _a.message
|
||||
});
|
||||
}
|
||||
}
|
||||
async function writeHeartbeatsToIndexedDB(app, heartbeatObject) {
|
||||
var _a;
|
||||
try {
|
||||
const db = await getDbPromise();
|
||||
const tx = db.transaction(STORE_NAME, 'readwrite');
|
||||
const objectStore = tx.objectStore(STORE_NAME);
|
||||
await objectStore.put(heartbeatObject, computeKey(app));
|
||||
return tx.complete;
|
||||
return tx.done;
|
||||
}
|
||||
catch (e) {
|
||||
throw ERROR_FACTORY.create("storage-set" /* STORAGE_WRITE */, {
|
||||
originalErrorMessage: e.message
|
||||
originalErrorMessage: (_a = e) === null || _a === void 0 ? void 0 : _a.message
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -19576,12 +19480,14 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var _firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @firebase/app */ "./node_modules/@firebase/app/dist/esm/index.esm2017.js");
|
||||
/* harmony import */ var _firebase_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @firebase/component */ "./node_modules/@firebase/component/dist/esm/index.esm2017.js");
|
||||
/* harmony import */ var _firebase_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @firebase/util */ "./node_modules/@firebase/util/dist/index.esm2017.js");
|
||||
/* harmony import */ var idb__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! idb */ "./node_modules/idb/build/index.js");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const name = "@firebase/installations";
|
||||
const version = "0.5.8";
|
||||
const version = "0.5.12";
|
||||
|
||||
/**
|
||||
* @license
|
||||
@@ -19983,7 +19889,8 @@ const OBJECT_STORE_NAME = 'firebase-installations-store';
|
||||
let dbPromise = null;
|
||||
function getDbPromise() {
|
||||
if (!dbPromise) {
|
||||
dbPromise = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.openDB)(DATABASE_NAME, DATABASE_VERSION, (db, oldVersion) => {
|
||||
dbPromise = (0,idb__WEBPACK_IMPORTED_MODULE_3__.openDB)(DATABASE_NAME, DATABASE_VERSION, {
|
||||
upgrade: (db, oldVersion) => {
|
||||
// We don't use 'break' in this switch statement, the fall-through
|
||||
// behavior is what we want, because if there are multiple versions between
|
||||
// the old version and the current version, we want ALL the migrations
|
||||
@@ -19993,6 +19900,7 @@ function getDbPromise() {
|
||||
case 0:
|
||||
db.createObjectStore(OBJECT_STORE_NAME);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
return dbPromise;
|
||||
@@ -20005,7 +19913,7 @@ async function set(appConfig, value) {
|
||||
const objectStore = tx.objectStore(OBJECT_STORE_NAME);
|
||||
const oldValue = (await objectStore.get(key));
|
||||
await objectStore.put(value, key);
|
||||
await tx.complete;
|
||||
await tx.done;
|
||||
if (!oldValue || oldValue.fid !== value.fid) {
|
||||
fidChanged(appConfig, value.fid);
|
||||
}
|
||||
@@ -20017,7 +19925,7 @@ async function remove(appConfig) {
|
||||
const db = await getDbPromise();
|
||||
const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');
|
||||
await tx.objectStore(OBJECT_STORE_NAME).delete(key);
|
||||
await tx.complete;
|
||||
await tx.done;
|
||||
}
|
||||
/**
|
||||
* Atomically updates a record with the result of updateFn, which gets
|
||||
@@ -20038,7 +19946,7 @@ async function update(appConfig, updateFn) {
|
||||
else {
|
||||
await store.put(newValue, key);
|
||||
}
|
||||
await tx.complete;
|
||||
await tx.done;
|
||||
if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {
|
||||
fidChanged(appConfig, newValue.fid);
|
||||
}
|
||||
@@ -20985,8 +20893,10 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _firebase_installations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @firebase/installations */ "./node_modules/@firebase/installations/dist/esm/index.esm2017.js");
|
||||
/* harmony import */ var _firebase_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @firebase/component */ "./node_modules/@firebase/component/dist/esm/index.esm2017.js");
|
||||
/* harmony import */ var _firebase_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @firebase/util */ "./node_modules/@firebase/util/dist/index.esm2017.js");
|
||||
/* harmony import */ var _firebase_app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @firebase/app */ "./node_modules/@firebase/app/dist/esm/index.esm2017.js");
|
||||
/* harmony import */ var idb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! idb */ "./node_modules/idb/build/index.js");
|
||||
/* harmony import */ var _firebase_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @firebase/util */ "./node_modules/@firebase/util/dist/index.esm2017.js");
|
||||
/* harmony import */ var _firebase_app__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @firebase/app */ "./node_modules/@firebase/app/dist/esm/index.esm2017.js");
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -21112,7 +21022,8 @@ async function migrateOldDatabase(senderId) {
|
||||
}
|
||||
}
|
||||
let tokenDetails = null;
|
||||
const db = await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.openDB)(OLD_DB_NAME, OLD_DB_VERSION, async (db, oldVersion, newVersion, upgradeTransaction) => {
|
||||
const db = await (0,idb__WEBPACK_IMPORTED_MODULE_2__.openDB)(OLD_DB_NAME, OLD_DB_VERSION, {
|
||||
upgrade: async (db, oldVersion, newVersion, upgradeTransaction) => {
|
||||
var _a;
|
||||
if (oldVersion < 2) {
|
||||
// Database too old, skip migration.
|
||||
@@ -21176,12 +21087,13 @@ async function migrateOldDatabase(senderId) {
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
db.close();
|
||||
// Delete all old databases.
|
||||
await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.deleteDB)(OLD_DB_NAME);
|
||||
await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.deleteDB)('fcm_vapid_details_db');
|
||||
await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.deleteDB)('undefined');
|
||||
await (0,idb__WEBPACK_IMPORTED_MODULE_2__.deleteDB)(OLD_DB_NAME);
|
||||
await (0,idb__WEBPACK_IMPORTED_MODULE_2__.deleteDB)('fcm_vapid_details_db');
|
||||
await (0,idb__WEBPACK_IMPORTED_MODULE_2__.deleteDB)('undefined');
|
||||
return checkTokenDetails(tokenDetails) ? tokenDetails : null;
|
||||
}
|
||||
function checkTokenDetails(tokenDetails) {
|
||||
@@ -21228,7 +21140,8 @@ const OBJECT_STORE_NAME = 'firebase-messaging-store';
|
||||
let dbPromise = null;
|
||||
function getDbPromise() {
|
||||
if (!dbPromise) {
|
||||
dbPromise = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.openDB)(DATABASE_NAME, DATABASE_VERSION, (upgradeDb, oldVersion) => {
|
||||
dbPromise = (0,idb__WEBPACK_IMPORTED_MODULE_2__.openDB)(DATABASE_NAME, DATABASE_VERSION, {
|
||||
upgrade: (upgradeDb, oldVersion) => {
|
||||
// We don't use 'break' in this switch statement, the fall-through behavior is what we want,
|
||||
// because if there are multiple versions between the old version and the current version, we
|
||||
// want ALL the migrations that correspond to those versions to run, not only the last one.
|
||||
@@ -21237,6 +21150,7 @@ function getDbPromise() {
|
||||
case 0:
|
||||
upgradeDb.createObjectStore(OBJECT_STORE_NAME);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
return dbPromise;
|
||||
@@ -21267,7 +21181,7 @@ async function dbSet(firebaseDependencies, tokenDetails) {
|
||||
const db = await getDbPromise();
|
||||
const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');
|
||||
await tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key);
|
||||
await tx.complete;
|
||||
await tx.done;
|
||||
return tokenDetails;
|
||||
}
|
||||
/** Removes record(s) from the objectStore that match the given key. */
|
||||
@@ -21276,7 +21190,7 @@ async function dbRemove(firebaseDependencies) {
|
||||
const db = await getDbPromise();
|
||||
const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');
|
||||
await tx.objectStore(OBJECT_STORE_NAME).delete(key);
|
||||
await tx.complete;
|
||||
await tx.done;
|
||||
}
|
||||
function getKey({ appConfig }) {
|
||||
return appConfig.appId;
|
||||
@@ -21321,7 +21235,7 @@ const ERROR_MAP = {
|
||||
["use-vapid-key-after-get-token" /* USE_VAPID_KEY_AFTER_GET_TOKEN */]: 'The usePublicVapidKey() method may only be called once and must be ' +
|
||||
'called before calling getToken() to ensure your VAPID key is used.'
|
||||
};
|
||||
const ERROR_FACTORY = new _firebase_util__WEBPACK_IMPORTED_MODULE_2__.ErrorFactory('messaging', 'Messaging', ERROR_MAP);
|
||||
const ERROR_FACTORY = new _firebase_util__WEBPACK_IMPORTED_MODULE_3__.ErrorFactory('messaging', 'Messaging', ERROR_MAP);
|
||||
|
||||
/**
|
||||
* @license
|
||||
@@ -21340,6 +21254,7 @@ const ERROR_FACTORY = new _firebase_util__WEBPACK_IMPORTED_MODULE_2__.ErrorFacto
|
||||
* limitations under the License.
|
||||
*/
|
||||
async function requestGetToken(firebaseDependencies, subscriptionOptions) {
|
||||
var _a;
|
||||
const headers = await getHeaders(firebaseDependencies);
|
||||
const body = getBody(subscriptionOptions);
|
||||
const subscribeOptions = {
|
||||
@@ -21354,7 +21269,7 @@ async function requestGetToken(firebaseDependencies, subscriptionOptions) {
|
||||
}
|
||||
catch (err) {
|
||||
throw ERROR_FACTORY.create("token-subscribe-failed" /* TOKEN_SUBSCRIBE_FAILED */, {
|
||||
errorInfo: err
|
||||
errorInfo: (_a = err) === null || _a === void 0 ? void 0 : _a.toString()
|
||||
});
|
||||
}
|
||||
if (responseData.error) {
|
||||
@@ -21369,6 +21284,7 @@ async function requestGetToken(firebaseDependencies, subscriptionOptions) {
|
||||
return responseData.token;
|
||||
}
|
||||
async function requestUpdateToken(firebaseDependencies, tokenDetails) {
|
||||
var _a;
|
||||
const headers = await getHeaders(firebaseDependencies);
|
||||
const body = getBody(tokenDetails.subscriptionOptions);
|
||||
const updateOptions = {
|
||||
@@ -21383,7 +21299,7 @@ async function requestUpdateToken(firebaseDependencies, tokenDetails) {
|
||||
}
|
||||
catch (err) {
|
||||
throw ERROR_FACTORY.create("token-update-failed" /* TOKEN_UPDATE_FAILED */, {
|
||||
errorInfo: err
|
||||
errorInfo: (_a = err) === null || _a === void 0 ? void 0 : _a.toString()
|
||||
});
|
||||
}
|
||||
if (responseData.error) {
|
||||
@@ -21398,6 +21314,7 @@ async function requestUpdateToken(firebaseDependencies, tokenDetails) {
|
||||
return responseData.token;
|
||||
}
|
||||
async function requestDeleteToken(firebaseDependencies, token) {
|
||||
var _a;
|
||||
const headers = await getHeaders(firebaseDependencies);
|
||||
const unsubscribeOptions = {
|
||||
method: 'DELETE',
|
||||
@@ -21415,7 +21332,7 @@ async function requestDeleteToken(firebaseDependencies, token) {
|
||||
}
|
||||
catch (err) {
|
||||
throw ERROR_FACTORY.create("token-unsubscribe-failed" /* TOKEN_UNSUBSCRIBE_FAILED */, {
|
||||
errorInfo: err
|
||||
errorInfo: (_a = err) === null || _a === void 0 ? void 0 : _a.toString()
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -21621,16 +21538,19 @@ function propagateDataPayload(payload, messagePayloadInternal) {
|
||||
payload.data = messagePayloadInternal.data;
|
||||
}
|
||||
function propagateFcmOptions(payload, messagePayloadInternal) {
|
||||
if (!messagePayloadInternal.fcmOptions) {
|
||||
var _a, _b, _c, _d, _e;
|
||||
// fcmOptions.link value is written into notification.click_action. see more in b/232072111
|
||||
if (!messagePayloadInternal.fcmOptions &&
|
||||
!((_a = messagePayloadInternal.notification) === null || _a === void 0 ? void 0 : _a.click_action)) {
|
||||
return;
|
||||
}
|
||||
payload.fcmOptions = {};
|
||||
const link = messagePayloadInternal.fcmOptions.link;
|
||||
const link = (_c = (_b = messagePayloadInternal.fcmOptions) === null || _b === void 0 ? void 0 : _b.link) !== null && _c !== void 0 ? _c : (_d = messagePayloadInternal.notification) === null || _d === void 0 ? void 0 : _d.click_action;
|
||||
if (!!link) {
|
||||
payload.fcmOptions.link = link;
|
||||
}
|
||||
// eslint-disable-next-line camelcase
|
||||
const analyticsLabel = messagePayloadInternal.fcmOptions.analytics_label;
|
||||
const analyticsLabel = (_e = messagePayloadInternal.fcmOptions) === null || _e === void 0 ? void 0 : _e.analytics_label;
|
||||
if (!!analyticsLabel) {
|
||||
payload.fcmOptions.analyticsLabel = analyticsLabel;
|
||||
}
|
||||
@@ -21790,6 +21710,7 @@ class MessagingService {
|
||||
* limitations under the License.
|
||||
*/
|
||||
async function registerDefaultSw(messaging) {
|
||||
var _a;
|
||||
try {
|
||||
messaging.swRegistration = await navigator.serviceWorker.register(DEFAULT_SW_PATH, {
|
||||
scope: DEFAULT_SW_SCOPE
|
||||
@@ -21805,7 +21726,7 @@ async function registerDefaultSw(messaging) {
|
||||
}
|
||||
catch (e) {
|
||||
throw ERROR_FACTORY.create("failed-service-worker-registration" /* FAILED_DEFAULT_REGISTRATION */, {
|
||||
browserErrorMessage: e.message
|
||||
browserErrorMessage: (_a = e) === null || _a === void 0 ? void 0 : _a.message
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -21973,7 +21894,7 @@ async function messageEventListener(messaging, event) {
|
||||
}
|
||||
|
||||
const name = "@firebase/messaging";
|
||||
const version = "0.9.12";
|
||||
const version = "0.9.16";
|
||||
|
||||
/**
|
||||
* @license
|
||||
@@ -22006,11 +21927,11 @@ const WindowMessagingInternalFactory = (container) => {
|
||||
return messagingInternal;
|
||||
};
|
||||
function registerMessagingInWindow() {
|
||||
(0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__._registerComponent)(new _firebase_component__WEBPACK_IMPORTED_MODULE_1__.Component('messaging', WindowMessagingFactory, "PUBLIC" /* PUBLIC */));
|
||||
(0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__._registerComponent)(new _firebase_component__WEBPACK_IMPORTED_MODULE_1__.Component('messaging-internal', WindowMessagingInternalFactory, "PRIVATE" /* PRIVATE */));
|
||||
(0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__.registerVersion)(name, version);
|
||||
(0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__._registerComponent)(new _firebase_component__WEBPACK_IMPORTED_MODULE_1__.Component('messaging', WindowMessagingFactory, "PUBLIC" /* PUBLIC */));
|
||||
(0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__._registerComponent)(new _firebase_component__WEBPACK_IMPORTED_MODULE_1__.Component('messaging-internal', WindowMessagingInternalFactory, "PRIVATE" /* PRIVATE */));
|
||||
(0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__.registerVersion)(name, version);
|
||||
// BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation
|
||||
(0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__.registerVersion)(name, version, 'esm2017');
|
||||
(0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__.registerVersion)(name, version, 'esm2017');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -22039,7 +21960,7 @@ async function isWindowSupported() {
|
||||
try {
|
||||
// This throws if open() is unsupported, so adding it to the conditional
|
||||
// statement below can cause an uncaught error.
|
||||
await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.validateIndexedDBOpenable)();
|
||||
await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.validateIndexedDBOpenable)();
|
||||
}
|
||||
catch (e) {
|
||||
return false;
|
||||
@@ -22048,8 +21969,8 @@ async function isWindowSupported() {
|
||||
// might be prohibited to run. In these contexts, an error would be thrown during the messaging
|
||||
// instantiating phase, informing the developers to import/call isSupported for special handling.
|
||||
return (typeof window !== 'undefined' &&
|
||||
(0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.isIndexedDBAvailable)() &&
|
||||
(0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.areCookiesEnabled)() &&
|
||||
(0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.isIndexedDBAvailable)() &&
|
||||
(0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.areCookiesEnabled)() &&
|
||||
'serviceWorker' in navigator &&
|
||||
'PushManager' in window &&
|
||||
'Notification' in window &&
|
||||
@@ -22133,7 +22054,7 @@ function onMessage$1(messaging, nextOrObserver) {
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
function getMessagingInWindow(app = (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__.getApp)()) {
|
||||
function getMessagingInWindow(app = (0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__.getApp)()) {
|
||||
// Conscious decision to make this async check non-blocking during the messaging instance
|
||||
// initialization phase for performance consideration. An error would be thrown latter for
|
||||
// developer's information. Developers can then choose to import and call `isSupported` for
|
||||
@@ -22147,7 +22068,7 @@ function getMessagingInWindow(app = (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3_
|
||||
// If `isWindowSupported()` rejected.
|
||||
throw ERROR_FACTORY.create("indexed-db-unsupported" /* INDEXED_DB_UNSUPPORTED */);
|
||||
});
|
||||
return (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__._getProvider)((0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.getModularInstance)(app), 'messaging').getImmediate();
|
||||
return (0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__._getProvider)((0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.getModularInstance)(app), 'messaging').getImmediate();
|
||||
}
|
||||
/**
|
||||
* Subscribes the {@link Messaging} instance to push notifications. Returns an Firebase Cloud
|
||||
@@ -22165,7 +22086,7 @@ function getMessagingInWindow(app = (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3_
|
||||
* @public
|
||||
*/
|
||||
async function getToken(messaging, options) {
|
||||
messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.getModularInstance)(messaging);
|
||||
messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.getModularInstance)(messaging);
|
||||
return getToken$1(messaging, options);
|
||||
}
|
||||
/**
|
||||
@@ -22179,7 +22100,7 @@ async function getToken(messaging, options) {
|
||||
* @public
|
||||
*/
|
||||
function deleteToken(messaging) {
|
||||
messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.getModularInstance)(messaging);
|
||||
messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.getModularInstance)(messaging);
|
||||
return deleteToken$1(messaging);
|
||||
}
|
||||
/**
|
||||
@@ -22196,7 +22117,7 @@ function deleteToken(messaging) {
|
||||
* @public
|
||||
*/
|
||||
function onMessage(messaging, nextOrObserver) {
|
||||
messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.getModularInstance)(messaging);
|
||||
messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.getModularInstance)(messaging);
|
||||
return onMessage$1(messaging, nextOrObserver);
|
||||
}
|
||||
|
||||
@@ -22211,6 +22132,317 @@ registerMessagingInWindow();
|
||||
//# sourceMappingURL=index.esm2017.js.map
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/idb/build/index.js":
|
||||
/*!*****************************************!*\
|
||||
!*** ./node_modules/idb/build/index.js ***!
|
||||
\*****************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "deleteDB": () => (/* binding */ deleteDB),
|
||||
/* harmony export */ "openDB": () => (/* binding */ openDB),
|
||||
/* harmony export */ "unwrap": () => (/* reexport safe */ _wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.u),
|
||||
/* harmony export */ "wrap": () => (/* reexport safe */ _wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.w)
|
||||
/* harmony export */ });
|
||||
/* harmony import */ var _wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./wrap-idb-value.js */ "./node_modules/idb/build/wrap-idb-value.js");
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Open a database.
|
||||
*
|
||||
* @param name Name of the database.
|
||||
* @param version Schema version.
|
||||
* @param callbacks Additional callbacks.
|
||||
*/
|
||||
function openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {
|
||||
const request = indexedDB.open(name, version);
|
||||
const openPromise = (0,_wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.w)(request);
|
||||
if (upgrade) {
|
||||
request.addEventListener('upgradeneeded', (event) => {
|
||||
upgrade((0,_wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.w)(request.result), event.oldVersion, event.newVersion, (0,_wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.w)(request.transaction));
|
||||
});
|
||||
}
|
||||
if (blocked)
|
||||
request.addEventListener('blocked', () => blocked());
|
||||
openPromise
|
||||
.then((db) => {
|
||||
if (terminated)
|
||||
db.addEventListener('close', () => terminated());
|
||||
if (blocking)
|
||||
db.addEventListener('versionchange', () => blocking());
|
||||
})
|
||||
.catch(() => { });
|
||||
return openPromise;
|
||||
}
|
||||
/**
|
||||
* Delete a database.
|
||||
*
|
||||
* @param name Name of the database.
|
||||
*/
|
||||
function deleteDB(name, { blocked } = {}) {
|
||||
const request = indexedDB.deleteDatabase(name);
|
||||
if (blocked)
|
||||
request.addEventListener('blocked', () => blocked());
|
||||
return (0,_wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.w)(request).then(() => undefined);
|
||||
}
|
||||
|
||||
const readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];
|
||||
const writeMethods = ['put', 'add', 'delete', 'clear'];
|
||||
const cachedMethods = new Map();
|
||||
function getMethod(target, prop) {
|
||||
if (!(target instanceof IDBDatabase &&
|
||||
!(prop in target) &&
|
||||
typeof prop === 'string')) {
|
||||
return;
|
||||
}
|
||||
if (cachedMethods.get(prop))
|
||||
return cachedMethods.get(prop);
|
||||
const targetFuncName = prop.replace(/FromIndex$/, '');
|
||||
const useIndex = prop !== targetFuncName;
|
||||
const isWrite = writeMethods.includes(targetFuncName);
|
||||
if (
|
||||
// Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.
|
||||
!(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||
|
||||
!(isWrite || readMethods.includes(targetFuncName))) {
|
||||
return;
|
||||
}
|
||||
const method = async function (storeName, ...args) {
|
||||
// isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(
|
||||
const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');
|
||||
let target = tx.store;
|
||||
if (useIndex)
|
||||
target = target.index(args.shift());
|
||||
// Must reject if op rejects.
|
||||
// If it's a write operation, must reject if tx.done rejects.
|
||||
// Must reject with op rejection first.
|
||||
// Must resolve with op value.
|
||||
// Must handle both promises (no unhandled rejections)
|
||||
return (await Promise.all([
|
||||
target[targetFuncName](...args),
|
||||
isWrite && tx.done,
|
||||
]))[0];
|
||||
};
|
||||
cachedMethods.set(prop, method);
|
||||
return method;
|
||||
}
|
||||
(0,_wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.r)((oldTraps) => ({
|
||||
...oldTraps,
|
||||
get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),
|
||||
has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),
|
||||
}));
|
||||
|
||||
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/idb/build/wrap-idb-value.js":
|
||||
/*!**************************************************!*\
|
||||
!*** ./node_modules/idb/build/wrap-idb-value.js ***!
|
||||
\**************************************************/
|
||||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
||||
/* harmony export */ "a": () => (/* binding */ reverseTransformCache),
|
||||
/* harmony export */ "i": () => (/* binding */ instanceOfAny),
|
||||
/* harmony export */ "r": () => (/* binding */ replaceTraps),
|
||||
/* harmony export */ "u": () => (/* binding */ unwrap),
|
||||
/* harmony export */ "w": () => (/* binding */ wrap)
|
||||
/* harmony export */ });
|
||||
const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);
|
||||
|
||||
let idbProxyableTypes;
|
||||
let cursorAdvanceMethods;
|
||||
// This is a function to prevent it throwing up in node environments.
|
||||
function getIdbProxyableTypes() {
|
||||
return (idbProxyableTypes ||
|
||||
(idbProxyableTypes = [
|
||||
IDBDatabase,
|
||||
IDBObjectStore,
|
||||
IDBIndex,
|
||||
IDBCursor,
|
||||
IDBTransaction,
|
||||
]));
|
||||
}
|
||||
// This is a function to prevent it throwing up in node environments.
|
||||
function getCursorAdvanceMethods() {
|
||||
return (cursorAdvanceMethods ||
|
||||
(cursorAdvanceMethods = [
|
||||
IDBCursor.prototype.advance,
|
||||
IDBCursor.prototype.continue,
|
||||
IDBCursor.prototype.continuePrimaryKey,
|
||||
]));
|
||||
}
|
||||
const cursorRequestMap = new WeakMap();
|
||||
const transactionDoneMap = new WeakMap();
|
||||
const transactionStoreNamesMap = new WeakMap();
|
||||
const transformCache = new WeakMap();
|
||||
const reverseTransformCache = new WeakMap();
|
||||
function promisifyRequest(request) {
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
const unlisten = () => {
|
||||
request.removeEventListener('success', success);
|
||||
request.removeEventListener('error', error);
|
||||
};
|
||||
const success = () => {
|
||||
resolve(wrap(request.result));
|
||||
unlisten();
|
||||
};
|
||||
const error = () => {
|
||||
reject(request.error);
|
||||
unlisten();
|
||||
};
|
||||
request.addEventListener('success', success);
|
||||
request.addEventListener('error', error);
|
||||
});
|
||||
promise
|
||||
.then((value) => {
|
||||
// Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval
|
||||
// (see wrapFunction).
|
||||
if (value instanceof IDBCursor) {
|
||||
cursorRequestMap.set(value, request);
|
||||
}
|
||||
// Catching to avoid "Uncaught Promise exceptions"
|
||||
})
|
||||
.catch(() => { });
|
||||
// This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This
|
||||
// is because we create many promises from a single IDBRequest.
|
||||
reverseTransformCache.set(promise, request);
|
||||
return promise;
|
||||
}
|
||||
function cacheDonePromiseForTransaction(tx) {
|
||||
// Early bail if we've already created a done promise for this transaction.
|
||||
if (transactionDoneMap.has(tx))
|
||||
return;
|
||||
const done = new Promise((resolve, reject) => {
|
||||
const unlisten = () => {
|
||||
tx.removeEventListener('complete', complete);
|
||||
tx.removeEventListener('error', error);
|
||||
tx.removeEventListener('abort', error);
|
||||
};
|
||||
const complete = () => {
|
||||
resolve();
|
||||
unlisten();
|
||||
};
|
||||
const error = () => {
|
||||
reject(tx.error || new DOMException('AbortError', 'AbortError'));
|
||||
unlisten();
|
||||
};
|
||||
tx.addEventListener('complete', complete);
|
||||
tx.addEventListener('error', error);
|
||||
tx.addEventListener('abort', error);
|
||||
});
|
||||
// Cache it for later retrieval.
|
||||
transactionDoneMap.set(tx, done);
|
||||
}
|
||||
let idbProxyTraps = {
|
||||
get(target, prop, receiver) {
|
||||
if (target instanceof IDBTransaction) {
|
||||
// Special handling for transaction.done.
|
||||
if (prop === 'done')
|
||||
return transactionDoneMap.get(target);
|
||||
// Polyfill for objectStoreNames because of Edge.
|
||||
if (prop === 'objectStoreNames') {
|
||||
return target.objectStoreNames || transactionStoreNamesMap.get(target);
|
||||
}
|
||||
// Make tx.store return the only store in the transaction, or undefined if there are many.
|
||||
if (prop === 'store') {
|
||||
return receiver.objectStoreNames[1]
|
||||
? undefined
|
||||
: receiver.objectStore(receiver.objectStoreNames[0]);
|
||||
}
|
||||
}
|
||||
// Else transform whatever we get back.
|
||||
return wrap(target[prop]);
|
||||
},
|
||||
set(target, prop, value) {
|
||||
target[prop] = value;
|
||||
return true;
|
||||
},
|
||||
has(target, prop) {
|
||||
if (target instanceof IDBTransaction &&
|
||||
(prop === 'done' || prop === 'store')) {
|
||||
return true;
|
||||
}
|
||||
return prop in target;
|
||||
},
|
||||
};
|
||||
function replaceTraps(callback) {
|
||||
idbProxyTraps = callback(idbProxyTraps);
|
||||
}
|
||||
function wrapFunction(func) {
|
||||
// Due to expected object equality (which is enforced by the caching in `wrap`), we
|
||||
// only create one new func per func.
|
||||
// Edge doesn't support objectStoreNames (booo), so we polyfill it here.
|
||||
if (func === IDBDatabase.prototype.transaction &&
|
||||
!('objectStoreNames' in IDBTransaction.prototype)) {
|
||||
return function (storeNames, ...args) {
|
||||
const tx = func.call(unwrap(this), storeNames, ...args);
|
||||
transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);
|
||||
return wrap(tx);
|
||||
};
|
||||
}
|
||||
// Cursor methods are special, as the behaviour is a little more different to standard IDB. In
|
||||
// IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the
|
||||
// cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense
|
||||
// with real promises, so each advance methods returns a new promise for the cursor object, or
|
||||
// undefined if the end of the cursor has been reached.
|
||||
if (getCursorAdvanceMethods().includes(func)) {
|
||||
return function (...args) {
|
||||
// Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use
|
||||
// the original object.
|
||||
func.apply(unwrap(this), args);
|
||||
return wrap(cursorRequestMap.get(this));
|
||||
};
|
||||
}
|
||||
return function (...args) {
|
||||
// Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use
|
||||
// the original object.
|
||||
return wrap(func.apply(unwrap(this), args));
|
||||
};
|
||||
}
|
||||
function transformCachableValue(value) {
|
||||
if (typeof value === 'function')
|
||||
return wrapFunction(value);
|
||||
// This doesn't return, it just creates a 'done' promise for the transaction,
|
||||
// which is later returned for transaction.done (see idbObjectHandler).
|
||||
if (value instanceof IDBTransaction)
|
||||
cacheDonePromiseForTransaction(value);
|
||||
if (instanceOfAny(value, getIdbProxyableTypes()))
|
||||
return new Proxy(value, idbProxyTraps);
|
||||
// Return the same value back if we're not going to transform it.
|
||||
return value;
|
||||
}
|
||||
function wrap(value) {
|
||||
// We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because
|
||||
// IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.
|
||||
if (value instanceof IDBRequest)
|
||||
return promisifyRequest(value);
|
||||
// If we've already transformed this value before, reuse the transformed value.
|
||||
// This is faster, but it also provides object equality.
|
||||
if (transformCache.has(value))
|
||||
return transformCache.get(value);
|
||||
const newValue = transformCachableValue(value);
|
||||
// Not all types are transformed.
|
||||
// These may be primitive types, so they can't be WeakMap keys.
|
||||
if (newValue !== value) {
|
||||
transformCache.set(value, newValue);
|
||||
reverseTransformCache.set(newValue, value);
|
||||
}
|
||||
return newValue;
|
||||
}
|
||||
const unwrap = (value) => reverseTransformCache.get(value);
|
||||
|
||||
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/messages.json":
|
||||
|
||||
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+89
-56
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,3 +1,3 @@
|
||||
// This is a generated file. Don't edit.
|
||||
|
||||
const PACKAGE_VERSION = "0.20.0-beta2";
|
||||
const PACKAGE_VERSION = "0.20.0-beta3";
|
||||
|
||||
Reference in New Issue
Block a user