This commit is contained in:
Yamozha
2021-04-02 02:24:13 +03:00
parent c23950b545
commit 7256d79e2c
31493 changed files with 3036630 additions and 0 deletions

88
node_modules/@expo/websql/lib/sqlite/SQLiteDatabase.js generated vendored Normal file
View File

@ -0,0 +1,88 @@
'use strict';
var sqlite3 = require('sqlite3');
var SQLiteResult = require('./SQLiteResult');
var READ_ONLY_ERROR = new Error(
'could not prepare statement (23 not authorized)');
function SQLiteDatabase(name) {
this._db = new sqlite3.Database(name);
}
function runSelect(db, sql, args, cb) {
db.all(sql, args, function (err, rows) {
if (err) {
return cb(new SQLiteResult(err));
}
var insertId = void 0;
var rowsAffected = 0;
var resultSet = new SQLiteResult(null, insertId, rowsAffected, rows);
cb(resultSet);
});
}
function runNonSelect(db, sql, args, cb) {
db.run(sql, args, function (err) {
if (err) {
return cb(new SQLiteResult(err));
}
/* jshint validthis:true */
var executionResult = this;
var insertId = executionResult.lastID;
var rowsAffected = executionResult.changes;
var rows = [];
var resultSet = new SQLiteResult(null, insertId, rowsAffected, rows);
cb(resultSet);
});
}
SQLiteDatabase.prototype.exec = function exec(queries, readOnly, callback) {
var db = this._db;
var len = queries.length;
var results = new Array(len);
var i = 0;
function checkDone() {
if (++i === len) {
callback(null, results);
} else {
doNext();
}
}
function onQueryComplete(i) {
return function (res) {
results[i] = res;
checkDone();
};
}
function doNext() {
var query = queries[i];
var sql = query.sql;
var args = query.args;
// TODO: It seems like the node-sqlite3 API either allows:
// 1) all(), which returns results but not rowsAffected or lastID
// 2) run(), which doesn't return results, but returns rowsAffected and lastID
// So we try to sniff whether it's a SELECT query or not.
// This is inherently error-prone, although it will probably work in the 99%
// case.
var isSelect = /^\s*SELECT\b/i.test(sql);
if (readOnly && !isSelect) {
onQueryComplete(i)(new SQLiteResult(READ_ONLY_ERROR));
} else if (isSelect) {
runSelect(db, sql, args, onQueryComplete(i));
} else {
runNonSelect(db, sql, args, onQueryComplete(i));
}
}
doNext();
};
module.exports = SQLiteDatabase;

10
node_modules/@expo/websql/lib/sqlite/SQLiteResult.js generated vendored Normal file
View File

@ -0,0 +1,10 @@
'use strict';
function SQLiteResult(error, insertId, rowsAffected, rows) {
this.error = error;
this.insertId = insertId;
this.rowsAffected = rowsAffected;
this.rows = rows;
}
module.exports = SQLiteResult;