summaryrefslogtreecommitdiff
path: root/www/lib/localforage-cordovasqlitedriver
diff options
context:
space:
mode:
authorPliable Pixels <pliablepixels@gmail.com>2017-09-21 12:49:18 -0400
committerPliable Pixels <pliablepixels@gmail.com>2017-09-21 12:49:18 -0400
commitb28028ac4082842143b0f528d6bc539da6ccb419 (patch)
tree1e26ea969a781ed8e323fca4e3c76345113fc694 /www/lib/localforage-cordovasqlitedriver
parent676270d21beed31d767a06c89522198c77d5d865 (diff)
mega changes, including updates and X
Diffstat (limited to 'www/lib/localforage-cordovasqlitedriver')
-rw-r--r--www/lib/localforage-cordovasqlitedriver/.babelrc3
-rw-r--r--www/lib/localforage-cordovasqlitedriver/.bower.json34
-rw-r--r--www/lib/localforage-cordovasqlitedriver/.eslintrc25
-rw-r--r--www/lib/localforage-cordovasqlitedriver/.gitignore35
-rw-r--r--www/lib/localforage-cordovasqlitedriver/.jscsrc31
-rw-r--r--www/lib/localforage-cordovasqlitedriver/.jshintrc32
-rw-r--r--www/lib/localforage-cordovasqlitedriver/README.md65
-rw-r--r--www/lib/localforage-cordovasqlitedriver/bower.json23
-rw-r--r--www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.es6.js142
-rw-r--r--www/lib/localforage-cordovasqlitedriver/dist/localforage-cordovasqlitedriver.js150
-rw-r--r--www/lib/localforage-cordovasqlitedriver/lib/cordova-sqlite.js25
-rw-r--r--www/lib/localforage-cordovasqlitedriver/lib/localforage-cordovasqlitedriver.js120
-rw-r--r--www/lib/localforage-cordovasqlitedriver/lib/utils.js40
-rw-r--r--www/lib/localforage-cordovasqlitedriver/package.json44
-rw-r--r--www/lib/localforage-cordovasqlitedriver/rollup.config.es6.js6
-rw-r--r--www/lib/localforage-cordovasqlitedriver/rollup.config.js7
-rw-r--r--www/lib/localforage-cordovasqlitedriver/rollup.config.test.js11
-rw-r--r--www/lib/localforage-cordovasqlitedriver/rollup.config.umd.js7
18 files changed, 800 insertions, 0 deletions
diff --git a/www/lib/localforage-cordovasqlitedriver/.babelrc b/www/lib/localforage-cordovasqlitedriver/.babelrc
new file mode 100644
index 00000000..653b5be2
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/.babelrc
@@ -0,0 +1,3 @@
+{
+ "presets": [ "es2015-rollup" ]
+} \ No newline at end of file
diff --git a/www/lib/localforage-cordovasqlitedriver/.bower.json b/www/lib/localforage-cordovasqlitedriver/.bower.json
new file mode 100644
index 00000000..7cc247e6
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/.bower.json
@@ -0,0 +1,34 @@
+{
+ "name": "localforage-cordovasqlitedriver",
+ "version": "1.4.1",
+ "main": [
+ "src/localforage-cordovasqlitedriver.js"
+ ],
+ "ignore": [
+ ".travis.yml",
+ "CONTRIBUTING.md",
+ "config.rb",
+ "Gemfile",
+ "Gemfile.lock",
+ "Rakefile",
+ "LICENSE",
+ "docs*",
+ "examples*",
+ "test*",
+ "site*"
+ ],
+ "dependencies": {
+ "localforage": "^1.4.0"
+ },
+ "homepage": "https://github.com/thgreasi/localForage-cordovaSQLiteDriver",
+ "_release": "1.4.1",
+ "_resolution": {
+ "type": "version",
+ "tag": "v1.4.1",
+ "commit": "8e372775636d7e462bb3231cd9745864f420a0f4"
+ },
+ "_source": "https://github.com/thgreasi/localForage-cordovaSQLiteDriver.git",
+ "_target": "~1.4.1",
+ "_originalSource": "localForage-cordovaSQLiteDriver",
+ "_direct": true
+} \ No newline at end of file
diff --git a/www/lib/localforage-cordovasqlitedriver/.eslintrc b/www/lib/localforage-cordovasqlitedriver/.eslintrc
new file mode 100644
index 00000000..9e56abf4
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/.eslintrc
@@ -0,0 +1,25 @@
+{
+ "parser": "babel-eslint",
+ "parserOptions": {
+ "ecmaVersion": 6,
+ "sourceType": "module",
+ "ecmaFeatures": {
+ "modules": true
+ }
+ },
+ "extends": "eslint:recommended",
+ "env": {
+ "node": true,
+ "mocha": true
+ },
+ "rules":{
+ "no-console": 0
+ },
+ "globals": {
+ "localforage": true,
+ "Promise": true,
+ "console": true,
+ "self": true,
+ "System": true
+ }
+} \ No newline at end of file
diff --git a/www/lib/localforage-cordovasqlitedriver/.gitignore b/www/lib/localforage-cordovasqlitedriver/.gitignore
new file mode 100644
index 00000000..0f1e467f
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/.gitignore
@@ -0,0 +1,35 @@
+.DS_Store
+.swp
+build
+bower_components
+node_modules
+components
+
+# Logs + Sauce Labs Tests
+*.log
+
+#WebStorm files
+.idea
+
+### Ruby Stuff for slate docs
+*.gem
+*.rbc
+.bundle
+.config
+coverage
+InstalledFiles
+lib/bundler/man
+pkg
+rdoc
+spec/reports
+test/tmp
+test/version_tmp
+tmp
+*.DS_STORE
+build/
+.cache
+
+# YARD artifacts
+.yardoc
+_yardoc
+doc/
diff --git a/www/lib/localforage-cordovasqlitedriver/.jscsrc b/www/lib/localforage-cordovasqlitedriver/.jscsrc
new file mode 100644
index 00000000..3415b8de
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/.jscsrc
@@ -0,0 +1,31 @@
+{
+ "esnext": true,
+ "disallowSpacesInAnonymousFunctionExpression": {
+ "beforeOpeningRoundBrace": true
+ },
+ "disallowTrailingComma": true,
+ "requireBlocksOnNewline": true,
+ "requireLineFeedAtFileEnd": true,
+ "requireSpaceAfterKeywords": [
+ "if",
+ "else",
+ "for",
+ "while",
+ "do",
+ "switch",
+ "return",
+ "try",
+ "catch"
+ ],
+ "requireSpaceBeforeBlockStatements": true,
+ "requireSpacesInConditionalExpression": true,
+ "requireSpacesInFunctionExpression": {
+ "beforeOpeningCurlyBrace": true
+ },
+ "safeContextKeyword": ["globalObject", "self"],
+ "validateQuoteMarks": {
+ "escape": true,
+ "mark": "'"
+ },
+ "validateIndentation": 4
+}
diff --git a/www/lib/localforage-cordovasqlitedriver/.jshintrc b/www/lib/localforage-cordovasqlitedriver/.jshintrc
new file mode 100644
index 00000000..f29a720b
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/.jshintrc
@@ -0,0 +1,32 @@
+{
+ "asi": false,
+ "bitwise": true,
+ "browser": true,
+ "curly": true,
+ "eqeqeq": true,
+ "eqnull": true,
+ "esnext": true,
+ "immed": true,
+ "latedef": true,
+ "newcap": true,
+ "noarg": true,
+ "nonew": true,
+ "quotmark": false,
+ "strict": false,
+ "trailing": false,
+ "undef": true,
+ "unused": true,
+
+ "validthis": true,
+
+ "globals": {
+ "console": true,
+ "define": true,
+ "localforage": true,
+ "module": true,
+ "Promise": true,
+ "require": true,
+ "self": true,
+ "System": true
+ }
+}
diff --git a/www/lib/localforage-cordovasqlitedriver/README.md b/www/lib/localforage-cordovasqlitedriver/README.md
new file mode 100644
index 00000000..88669300
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/README.md
@@ -0,0 +1,65 @@
+# localForage-cordovaSQLiteDriver
+[![npm](https://img.shields.io/npm/dm/localforage-cordovasqlitedriver.svg)](https://www.npmjs.com/package/localforage-cordovasqlitedriver)
+SQLite driver for [Cordova](https://cordova.apache.org/) apps using [localForage](https://github.com/mozilla/localForage).
+
+## Requirements
+
+* [Cordova](https://cordova.apache.org/)/[ionic](http://ionicframework.com/)
+* [Cordova SQLite storage plugin](https://github.com/litehelpers/Cordova-sqlite-storage/) or [Cordova SQLite Plugin 2](https://github.com/nolanlawson/cordova-plugin-sqlite-2)
+* [localForage](https://github.com/mozilla/localForage) v1.4.0+
+ * for earlier versions of localforage, please use the v1.2.x releases
+
+## Install Dependencies
+
+* install Cordova-sqlite-storage plugin `cordova plugin add https://github.com/litehelpers/Cordova-sqlite-storage.git`
+* install localForage-cordovaSQLiteDriver `bower install --save localForage-cordovaSQLiteDriver`
+
+## CHANGELOG
+
+### v1.3
+Reduce driver size (almost by 50%) by "inheriting" the method implementations of the `localforage.WEBSQL` driver.
+
+### v1.2 *BREAKING CHANGE*
+Add support for newer versions of [Cordova SQLite storage plugin](https://github.com/litehelpers/Cordova-sqlite-storage/) (v0.8.x & v1.2.x).
+
+*UPGRADE WARNING*: The default storage location for SQLite has changed in newer versions of [Cordova SQLite storage plugin](https://github.com/litehelpers/Cordova-sqlite-storage/). The new "`default`" location value is NOT the same as the old "`default`" location and will break an upgrade for an app that was using the old default value (0) on iOS. If you are upgrading to a newer version of `localForage-cordovaSQLiteDriver` you need to verify where your previous storage location was and update the `location` property of the localForage database. Otherwise the default is `'default'`. This is to avoid breaking the iCloud Design Guide. See [here](https://github.com/litehelpers/Cordova-sqlite-storage#important-icloud-backup-of-sqlite-database-is-not-allowed) for further details.
+
+### v1.1
+Try using the `getSerializer()` (available in localforage v1.3) as the prefered way to retrieve the serializer.
+
+## Setup Your Project
+
+* Include localforage and localForage-cordovaSQLiteDriver in your main html page, after the cordova include.
+* Call `defineDriver` and `setDriver` to make localForage use the cordovaSQLiteDriver.
+
+```html
+<script src="cordova.js"></script>
+
+<script src="lib/localforage/dist/localforage.js"></script>
+<script src="lib/localForage-cordovaSQLiteDriver/src/localforage-cordovasqlitedriver.js"></script>
+<script>
+localforage.defineDriver(window.cordovaSQLiteDriver).then(function() {
+ return localforage.setDriver([
+ // Try setting cordovaSQLiteDriver if available,
+ window.cordovaSQLiteDriver._driver,
+ // otherwise use one of the default localforage drivers as a fallback.
+ // This should allow you to transparently do your tests in a browser
+ localforage.INDEXEDDB,
+ localforage.WEBSQL,
+ localforage.LOCALSTORAGE
+ ]);
+}).then(function() {
+ // this should alert "cordovaSQLiteDriver" when in an emulator or a device
+ alert(localforage.driver());
+ // set a value;
+ return localforage.setItem('testPromiseKey', 'testPromiseValue');
+}).then(function() {
+ return localforage.getItem('testPromiseKey');
+}).then(function(value) {
+ alert(value);
+}).catch(function(err) {
+ alert(err);
+});
+</script>
+```
+[Exaple Ionic project](https://github.com/thgreasi/localForage-cordovaSQLiteDriver-TestIonicApp)
diff --git a/www/lib/localforage-cordovasqlitedriver/bower.json b/www/lib/localforage-cordovasqlitedriver/bower.json
new file mode 100644
index 00000000..2c3510de
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/bower.json
@@ -0,0 +1,23 @@
+{
+ "name": "localforage-cordovasqlitedriver",
+ "version": "1.4.1",
+ "main": [
+ "src/localforage-cordovasqlitedriver.js"
+ ],
+ "ignore": [
+ ".travis.yml",
+ "CONTRIBUTING.md",
+ "config.rb",
+ "Gemfile",
+ "Gemfile.lock",
+ "Rakefile",
+ "LICENSE",
+ "docs*",
+ "examples*",
+ "test*",
+ "site*"
+ ],
+ "dependencies": {
+ "localforage": "^1.4.0"
+ }
+}
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
diff --git a/www/lib/localforage-cordovasqlitedriver/lib/cordova-sqlite.js b/www/lib/localforage-cordovasqlitedriver/lib/cordova-sqlite.js
new file mode 100644
index 00000000..9a755349
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/lib/cordova-sqlite.js
@@ -0,0 +1,25 @@
+/* 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);
+ }
+});
+
+export 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.');
+ }
+ });
+});
diff --git a/www/lib/localforage-cordovasqlitedriver/lib/localforage-cordovasqlitedriver.js b/www/lib/localforage-cordovasqlitedriver/lib/localforage-cordovasqlitedriver.js
new file mode 100644
index 00000000..ffbf7a79
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/lib/localforage-cordovasqlitedriver.js
@@ -0,0 +1,120 @@
+/*
+ * Includes code from:
+ *
+ * localForage - websql driver
+ * https://github.com/mozilla/localforage
+ *
+ * Copyright (c) 2015 Mozilla
+ * Licensed under Apache 2.0 license.
+ *
+ */
+// import localforage from 'localforage';
+import { getSerializerPromise, getWebSqlDriverPromise } from './utils';
+import { openDatabasePromise } from './cordova-sqlite';
+
+// // 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() {
+ 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;
diff --git a/www/lib/localforage-cordovasqlitedriver/lib/utils.js b/www/lib/localforage-cordovasqlitedriver/lib/utils.js
new file mode 100644
index 00000000..e83b61d9
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/lib/utils.js
@@ -0,0 +1,40 @@
+export 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;
+}
+
+export 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];
+}
+
+export function getWebSqlDriverPromise(localForageInstance) {
+ return getDriverPromise(localForageInstance, localForageInstance.WEBSQL);
+}
+
+export function executeCallback(promise, callback) {
+ if (callback) {
+ promise.then(function(result) {
+ callback(null, result);
+ }, function(error) {
+ callback(error);
+ });
+ }
+}
diff --git a/www/lib/localforage-cordovasqlitedriver/package.json b/www/lib/localforage-cordovasqlitedriver/package.json
new file mode 100644
index 00000000..cb09c3c7
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "localforage-cordovasqlitedriver",
+ "version": "1.4.1",
+ "description": "SQLite driver for Cordova apps using localForage.",
+ "homepage": "https://github.com/thgreasi/localForage-cordovaSQLiteDriver",
+ "main": "dist/localforage-cordovasqlitedriver.js",
+ "jsnext:main": "dist/localforage-cordovasqlitedriver.es6.js",
+ "scripts": {
+ "prebuild": "eslint lib test",
+ "build": "rollup -c rollup.config.umd.js && rollup -c rollup.config.es6.js",
+ "pretest": "rollup -c rollup.config.test.js",
+ "test": "mocha build/test-bundle.js",
+ "prepublish": "npm run build && npm test"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/thgreasi/localForage-cordovaSQLiteDriver.git"
+ },
+ "keywords": [
+ "localforage",
+ "SQLite",
+ "driver",
+ "cordova"
+ ],
+ "author": "Thodoris Greasidis",
+ "licence": "Apache-2.0",
+ "bugs": {
+ "url": "http://github.com/thgreasi/localForage-cordovaSQLiteDriver/issues"
+ },
+ "devDependencies": {
+ "babel-eslint": "^6.0.4",
+ "babel-preset-es2015-rollup": "^1.1.1",
+ "eslint": "^2.8.0",
+ "mocha": "^2.4.5",
+ "requirejs": "^2.2.0",
+ "rollup": "^0.26.1",
+ "rollup-plugin-babel": "^2.4.0",
+ "rollup-plugin-multi-entry": "^1.2.0",
+ "source-map-support": "^0.4.0"
+ },
+ "dependencies": {
+ "localforage": ">=1.4.0"
+ }
+}
diff --git a/www/lib/localforage-cordovasqlitedriver/rollup.config.es6.js b/www/lib/localforage-cordovasqlitedriver/rollup.config.es6.js
new file mode 100644
index 00000000..ef894ed6
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/rollup.config.es6.js
@@ -0,0 +1,6 @@
+import config from './rollup.config';
+
+config.format = 'es6';
+config.dest = 'dist/localforage-cordovasqlitedriver.es6.js';
+
+export default config;
diff --git a/www/lib/localforage-cordovasqlitedriver/rollup.config.js b/www/lib/localforage-cordovasqlitedriver/rollup.config.js
new file mode 100644
index 00000000..b189698c
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/rollup.config.js
@@ -0,0 +1,7 @@
+import babel from 'rollup-plugin-babel';
+
+export default {
+ entry: 'lib/localforage-cordovasqlitedriver.js',
+ // sourceMap: true,
+ plugins: [babel()]
+};
diff --git a/www/lib/localforage-cordovasqlitedriver/rollup.config.test.js b/www/lib/localforage-cordovasqlitedriver/rollup.config.test.js
new file mode 100644
index 00000000..ec95bc65
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/rollup.config.test.js
@@ -0,0 +1,11 @@
+import babel from 'rollup-plugin-babel';
+import multiEntry from 'rollup-plugin-multi-entry';
+
+export default {
+ entry: 'test/**/*_test.js',
+ plugins: [babel(), multiEntry()],
+ format: 'cjs',
+ intro: 'require("source-map-support").install();',
+ dest: 'build/test-bundle.js',
+ sourceMap: true
+};
diff --git a/www/lib/localforage-cordovasqlitedriver/rollup.config.umd.js b/www/lib/localforage-cordovasqlitedriver/rollup.config.umd.js
new file mode 100644
index 00000000..75f776a8
--- /dev/null
+++ b/www/lib/localforage-cordovasqlitedriver/rollup.config.umd.js
@@ -0,0 +1,7 @@
+import config from './rollup.config';
+
+config.format = 'umd';
+config.dest = 'dist/localforage-cordovasqlitedriver.js';
+config.moduleName = 'cordovaSQLiteDriver';
+
+export default config;