diff options
| author | Pliable Pixels <pliablepixels@gmail.com> | 2016-08-01 16:43:27 -0400 |
|---|---|---|
| committer | Pliable Pixels <pliablepixels@gmail.com> | 2016-08-01 16:43:27 -0400 |
| commit | 69e7033fca28646d1f3f2c78db6e0e6c2796c3e8 (patch) | |
| tree | dc9cb04aeaaf961e776645b656a9f4dc4e457025 /www/lib/localforage-cordovasqlitedriver/dist | |
| parent | 81d24bbed0af0ba7b39948ca968528b225a46c76 (diff) | |
#292 - various items cleaned up, default to sqlite for devices, cleaned up entry paths to PortalLogin and ensured its AFTER DataModel.init() - wonder if this fixes #193
Former-commit-id: fbe5c0b0649b44912f5a52babeea5aa91a58e70f
Diffstat (limited to 'www/lib/localforage-cordovasqlitedriver/dist')
| -rw-r--r-- | www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.es6.js | 142 | ||||
| -rw-r--r-- | www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.js | 150 |
2 files changed, 292 insertions, 0 deletions
diff --git a/www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.es6.js b/www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.es6.js new file mode 100644 index 00000000..8dbc92b0 --- /dev/null +++ b/www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.es6.js @@ -0,0 +1,142 @@ +function getSerializerPromise(localForageInstance) { + if (getSerializerPromise.result) { + return getSerializerPromise.result; + } + if (!localForageInstance || typeof localForageInstance.getSerializer !== 'function') { + Promise.reject(new Error('localforage.getSerializer() was not available! ' + 'localforage v1.4+ is required!')); + } + getSerializerPromise.result = localForageInstance.getSerializer(); + return getSerializerPromise.result; +} + +function getDriverPromise(localForageInstance, driverName) { + getDriverPromise.result = getDriverPromise.result || {}; + if (getDriverPromise.result[driverName]) { + return getDriverPromise.result[driverName]; + } + if (!localForageInstance || typeof localForageInstance.getDriver !== 'function') { + Promise.reject(new Error('localforage.getDriver() was not available! ' + 'localforage v1.4+ is required!')); + } + getDriverPromise.result[driverName] = localForageInstance.getDriver(driverName); + return getDriverPromise.result[driverName]; +} + +function getWebSqlDriverPromise(localForageInstance) { + return getDriverPromise(localForageInstance, localForageInstance.WEBSQL); +} + +/* global document, sqlitePlugin */ +// we can't import this, since it gets defined later +// import sqlitePlugin from 'sqlitePlugin'; + +var deviceReady = new Promise(function (resolve, reject) { + if (typeof sqlitePlugin !== 'undefined') { + resolve(); + } else if (typeof cordova === 'undefined') { + reject(); + } else { + // Wait for Cordova to load + document.addEventListener("deviceready", resolve, false); + } +}); + +var openDatabasePromise = deviceReady.catch(Promise.resolve).then(function () { + return new Promise(function (resolve, reject) { + if (typeof sqlitePlugin !== 'undefined' && typeof sqlitePlugin.openDatabase === 'function') { + resolve(sqlitePlugin.openDatabase); + } else { + reject('SQLite plugin is not present.'); + } + }); +}); + +// // If cordova is not present, we can stop now. +// if (!globalObject.cordova) { +// return; +// } + +// Open the cordova sqlite plugin database (automatically creates one if one didn't +// previously exist), using any options set in the config. +function _initStorage(options) { + var self = this; + var dbInfo = { + db: null + }; + + if (options) { + for (var i in options) { + dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i]; + } + } + + var dbInfoPromise = openDatabasePromise.then(function (openDatabase) { + return new Promise(function (resolve, reject) { + // Open the database; the openDatabase API will automatically + // create it for us if it doesn't exist. + try { + dbInfo.location = dbInfo.location || 'default'; + dbInfo.db = openDatabase({ + name: dbInfo.name, + version: String(dbInfo.version), + description: dbInfo.description, + size: dbInfo.size, + location: dbInfo.location + }); + } catch (e) { + reject(e); + } + + // Create our key/value table if it doesn't exist. + dbInfo.db.transaction(function (t) { + t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' (id INTEGER PRIMARY KEY, key unique, value)', [], function () { + self._dbInfo = dbInfo; + resolve(); + }, function (t, error) { + reject(error); + }); + }); + }); + }); + + var serializerPromise = getSerializerPromise(self); + var webSqlDriverPromise = getWebSqlDriverPromise(self); + + return Promise.all([serializerPromise, webSqlDriverPromise, dbInfoPromise]).then(function (results) { + dbInfo.serializer = results[0]; + return dbInfoPromise; + }); +} + +var cordovaSQLiteDriver = { + _driver: 'cordovaSQLiteDriver', + _initStorage: _initStorage, + _support: function _support() { + return openDatabasePromise.then(function (openDatabase) { + return !!openDatabase; + }).catch(function () { + return false; + }); + } +}; + +function wireUpDriverMethods(driver) { + var LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem']; + + function wireUpDriverMethod(driver, methodName) { + driver[methodName] = function () { + var localForageInstance = this; + var args = arguments; + return getWebSqlDriverPromise(localForageInstance).then(function (webSqlDriver) { + return webSqlDriver[methodName].apply(localForageInstance, args); + }); + }; + } + + for (var i = 0, len = LibraryMethods.length; i < len; i++) { + wireUpDriverMethod(driver, LibraryMethods[i]); + } +} + +wireUpDriverMethods(cordovaSQLiteDriver); + +export default cordovaSQLiteDriver;
\ No newline at end of file diff --git a/www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.js b/www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.js new file mode 100644 index 00000000..f6b925e6 --- /dev/null +++ b/www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.js @@ -0,0 +1,150 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.cordovaSQLiteDriver = factory()); +}(this, function () { 'use strict'; + + function getSerializerPromise(localForageInstance) { + if (getSerializerPromise.result) { + return getSerializerPromise.result; + } + if (!localForageInstance || typeof localForageInstance.getSerializer !== 'function') { + Promise.reject(new Error('localforage.getSerializer() was not available! ' + 'localforage v1.4+ is required!')); + } + getSerializerPromise.result = localForageInstance.getSerializer(); + return getSerializerPromise.result; + } + + function getDriverPromise(localForageInstance, driverName) { + getDriverPromise.result = getDriverPromise.result || {}; + if (getDriverPromise.result[driverName]) { + return getDriverPromise.result[driverName]; + } + if (!localForageInstance || typeof localForageInstance.getDriver !== 'function') { + Promise.reject(new Error('localforage.getDriver() was not available! ' + 'localforage v1.4+ is required!')); + } + getDriverPromise.result[driverName] = localForageInstance.getDriver(driverName); + return getDriverPromise.result[driverName]; + } + + function getWebSqlDriverPromise(localForageInstance) { + return getDriverPromise(localForageInstance, localForageInstance.WEBSQL); + } + + /* global document, sqlitePlugin */ + // we can't import this, since it gets defined later + // import sqlitePlugin from 'sqlitePlugin'; + + var deviceReady = new Promise(function (resolve, reject) { + if (typeof sqlitePlugin !== 'undefined') { + resolve(); + } else if (typeof cordova === 'undefined') { + reject(); + } else { + // Wait for Cordova to load + document.addEventListener("deviceready", resolve, false); + } + }); + + var openDatabasePromise = deviceReady.catch(Promise.resolve).then(function () { + return new Promise(function (resolve, reject) { + if (typeof sqlitePlugin !== 'undefined' && typeof sqlitePlugin.openDatabase === 'function') { + resolve(sqlitePlugin.openDatabase); + } else { + reject('SQLite plugin is not present.'); + } + }); + }); + + // // If cordova is not present, we can stop now. + // if (!globalObject.cordova) { + // return; + // } + + // Open the cordova sqlite plugin database (automatically creates one if one didn't + // previously exist), using any options set in the config. + function _initStorage(options) { + var self = this; + var dbInfo = { + db: null + }; + + if (options) { + for (var i in options) { + dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i]; + } + } + + var dbInfoPromise = openDatabasePromise.then(function (openDatabase) { + return new Promise(function (resolve, reject) { + // Open the database; the openDatabase API will automatically + // create it for us if it doesn't exist. + try { + dbInfo.location = dbInfo.location || 'default'; + dbInfo.db = openDatabase({ + name: dbInfo.name, + version: String(dbInfo.version), + description: dbInfo.description, + size: dbInfo.size, + location: dbInfo.location + }); + } catch (e) { + reject(e); + } + + // Create our key/value table if it doesn't exist. + dbInfo.db.transaction(function (t) { + t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' (id INTEGER PRIMARY KEY, key unique, value)', [], function () { + self._dbInfo = dbInfo; + resolve(); + }, function (t, error) { + reject(error); + }); + }); + }); + }); + + var serializerPromise = getSerializerPromise(self); + var webSqlDriverPromise = getWebSqlDriverPromise(self); + + return Promise.all([serializerPromise, webSqlDriverPromise, dbInfoPromise]).then(function (results) { + dbInfo.serializer = results[0]; + return dbInfoPromise; + }); + } + + var cordovaSQLiteDriver = { + _driver: 'cordovaSQLiteDriver', + _initStorage: _initStorage, + _support: function _support() { + return openDatabasePromise.then(function (openDatabase) { + return !!openDatabase; + }).catch(function () { + return false; + }); + } + }; + + function wireUpDriverMethods(driver) { + var LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem']; + + function wireUpDriverMethod(driver, methodName) { + driver[methodName] = function () { + var localForageInstance = this; + var args = arguments; + return getWebSqlDriverPromise(localForageInstance).then(function (webSqlDriver) { + return webSqlDriver[methodName].apply(localForageInstance, args); + }); + }; + } + + for (var i = 0, len = LibraryMethods.length; i < len; i++) { + wireUpDriverMethod(driver, LibraryMethods[i]); + } + } + + wireUpDriverMethods(cordovaSQLiteDriver); + + return cordovaSQLiteDriver; + +}));
\ No newline at end of file |
