Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// Mobile/9B206 Safari/7534.48.3
// Firefox for iOS UA:
// Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4
// (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4
// indexedDB is null on some UIWebViews and undefined in others
// see: https://bugs.webkit.org/show_bug.cgi?id=137034
if (typeof indexedDB === 'undefined' || indexedDB === null ||
!/iP(hone|od|ad)/.test(navigator.userAgent)) {
// definitely not WKWebView, avoid creating an unnecessary database
return true;
}
// Cache the result in LocalStorage. Reason we do this is because if we
// call openDatabase() too many times, Safari craps out in SauceLabs and
// starts throwing DOM Exception 14s.
var hasLS = hasLocalStorage();
// Include user agent in the hash, so that if Safari is upgraded, we don't
// continually think it's broken.
var localStorageKey = '_pouch__websqldb_valid_' + navigator.userAgent;
if (hasLS && localStorage[localStorageKey]) {
return localStorage[localStorageKey] === '1';
}
var openedTestDB = canOpenTestDB();
if (hasLS) {
localStorage[localStorageKey] = openedTestDB ? '1' : '0';
}
return openedTestDB;
}
function dbCreated() {
// note the db name in case the browser upgrades to idb
if (hasLocalStorage()) {
window.localStorage['_pouch__websqldb_' + api._name] = true;
}
callback(null, api);
}
adapter: match[1]
};
}
var adapters = PouchDB.adapters;
var preferredAdapters = PouchDB.preferredAdapters;
var prefix = PouchDB.prefix;
var adapterName = opts.adapter;
if (!adapterName) { // automatically determine adapter
for (var i = 0; i < preferredAdapters.length; ++i) {
adapterName = preferredAdapters[i];
// check for browsers that have been upgraded from websql-only to websql+idb
/* istanbul ignore if */
if (adapterName === 'idb' && 'websql' in adapters &&
hasLocalStorage() && localStorage['_pouch__websqldb_' + prefix + name]) {
// log it, because this can be confusing during development
guardedConsole('log', 'PouchDB is downgrading "' + name + '" to WebSQL to' +
' avoid data loss, because it was already opened with WebSQL.');
continue; // keep using websql to avoid user data loss
}
break;
}
}
var adapter = adapters[adapterName];
// if adapter is invalid, then an error will be thrown later
var usePrefix = (adapter && 'use_prefix' in adapter) ?
adapter.use_prefix : true;
return {
req.onsuccess = function () {
//Remove open request from the list.
openReqList.delete(dbName);
if (hasLocalStorage() && (dbName in localStorage)) {
delete localStorage[dbName];
}
callback(null, { 'ok': true });
};