UNPKG

react-native-sqlite-storage-cipher

Version:
118 lines (106 loc) 3.34 kB
/* * sqlite.js * * Created by Andrzej Porebski on 10/29/15. * Copyright (c) 2015-16 Andrzej Porebski. * * This library is available under the terms of the MIT License (2008). * See http://opensource.org/licenses/alphabetical for full text. */ var plugin = require('./lib/sqlite.core.js'); var {SQLiteFactory} = plugin; var config = [ [false, "SQLitePlugin", "transaction", false, true], [false, "SQLitePlugin", "readTransaction", false, true], [false, "SQLitePlugin", "close", false, false], [false, "SQLitePlugin", "executeSql", true, false], [false, "SQLitePluginTransaction", "executeSql", true, false], [false, "SQLiteFactory", "deleteDatabase", false, false], [true, "SQLiteFactory", "openDatabase", false, false], [false,"SQLitePlugin","sqlBatch",false,false,true], ]; var config2 = [ [false, "SQLitePlugin", "transactionCb", false, true], [false, "SQLitePlugin", "readTransactionCb", false, true], [false, "SQLitePlugin", "closeCb", false, false], [false, "SQLitePlugin", "executeSqlCb", true, false], [false, "SQLitePluginTransaction", "executeSqlCb", true, false], [false, "SQLiteFactory", "deleteDatabaseCb", false, false], [true, "SQLiteFactory", "openDatabaseCb", false, false], ]; var originalFns = {}; config.forEach(entry => { let [returnValueExpected, prototype, fn] = entry; let originalFn = plugin[prototype].prototype[fn]; originalFns[prototype + "." + fn] = originalFn; }); function enablePromiseRuntime(enable) { if (enable) { createPromiseRuntime(); createExtraCallbackRuntime(); } else { createCallbackRuntime(); } } function createCallbackRuntime() { config.forEach(entry => { let [ returnValueExpected, prototype, fn, argsNeedPadding, reverseCallbacks ] = entry; plugin[prototype].prototype[fn] = originalFns[prototype + "." + fn]; }); } function createExtraCallbackRuntime() { config2.forEach(entry => { let [ returnValueExpected, prototype, fn, argsNeedPadding, reverseCallbacks ] = entry; plugin[prototype].prototype[fn] = originalFns[prototype + "." + fn.slice(0, -2)]; }); } function createPromiseRuntime() { config.forEach(entry => { let [ returnValueExpected, prototype, fn, argsNeedPadding, reverseCallbacks ] = entry; let originalFn = plugin[prototype].prototype[fn]; plugin[prototype].prototype[fn] = function(...args) { if (argsNeedPadding && args.length == 1) { args.push([]); } let retValue; var promise = new Promise( function(resolve, reject) { let success = function(...args) { return returnValueExpected ? resolve(retValue) : resolve(args); }; let error = function(err) { reject(err); return false; }; retValue = originalFn.call( this, ...args, reverseCallbacks ? error : success, reverseCallbacks ? success : error ); }.bind(this) ); return promise; }; }); } SQLiteFactory.prototype.enablePromise = enablePromiseRuntime; module.exports = new SQLiteFactory();