@capacitor-community/sqlite 4.8.0-0 → 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -11
- package/electron/dist/plugin.js +229 -129
- package/electron/dist/plugin.js.map +1 -1
- package/electron/rollup.config.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["../build/electron/src/electron-utils/utilsSQLite.js","../build/electron/src/electron-utils/ImportExportJson/utilsJson.js","../build/electron/src/electron-utils/ImportExportJson/exportToJson.js","../build/electron/src/electron-utils/utilsDrop.js","../build/electron/src/electron-utils/ImportExportJson/importFromJson.js","../build/electron/src/electron-utils/utilsFile.js","../build/electron/src/electron-utils/utilsUpgrade.js","../build/electron/src/electron-utils/Database.js","../build/electron/src/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsSQLite = void 0;\nconst SQLITE_OPEN_READONLY = 1;\nclass UtilsSQLite {\n constructor() {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n // this.JSQlite = require('@journeyapps/sqlcipher').verbose();\n this.SQLite3 = require('sqlite3');\n }\n /**\n * OpenOrCreateDatabase\n * @param pathDB\n * @param password\n */\n async openOrCreateDatabase(pathDB /*,\n password: string,*/, readonly) {\n const msg = 'OpenOrCreateDatabase: ';\n // open sqlite3 database\n let mDB;\n if (!readonly) {\n mDB = new this.SQLite3.Database(pathDB, {\n verbose: console.log,\n });\n }\n else {\n mDB = new this.SQLite3.Database(pathDB, SQLITE_OPEN_READONLY, {\n verbose: console.log,\n });\n }\n if (mDB != null) {\n try {\n await this.dbChanges(mDB);\n }\n catch (err) {\n return Promise.reject(msg + `dbChanges ${err}`);\n }\n try {\n /* // set the password\n if (password.length > 0) {\n await this.setCipherPragma(mDB, password);\n }\n */\n // set Foreign Keys On\n await this.setForeignKeyConstraintsEnabled(mDB, true);\n }\n catch (err) {\n return Promise.reject(msg + `${err}`);\n }\n return Promise.resolve(mDB);\n }\n else {\n return Promise.reject(msg + 'open database failed');\n }\n }\n /**\n * SetCipherPragma\n * @param mDB\n * @param password\n */\n /*\n public async setCipherPragma(mDB: any, password: string): Promise<void> {\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.run('PRAGMA cipher_compatibility = 4');\n mDB.run(`PRAGMA key = '${password}'`, (err: any) => {\n if (err) {\n reject(new Error('SetForeignKey: ' + `${err.message}`));\n }\n resolve();\n });\n });\n });\n }\n */\n /**\n * SetForeignKeyConstraintsEnabled\n * @param mDB\n * @param toggle\n */\n async setForeignKeyConstraintsEnabled(mDB, toggle) {\n return new Promise((resolve, reject) => {\n let key = 'OFF';\n if (toggle) {\n key = 'ON';\n }\n mDB.run(`PRAGMA foreign_keys = '${key}'`, (err) => {\n if (err) {\n reject(`SetForeignKey: ${err.message}`);\n }\n resolve();\n });\n });\n }\n /**\n * GetVersion\n * @param mDB\n */\n async getVersion(mDB) {\n return new Promise((resolve, reject) => {\n let version = 0;\n const SELECT_VERSION = 'PRAGMA user_version;';\n mDB.get(SELECT_VERSION, [], (err, row) => {\n // process the row here\n if (err) {\n reject('getVersion failed: ' + `${err.message}`);\n }\n else {\n if (row == null) {\n version = 0;\n }\n else {\n const key = Object.keys(row)[0];\n version = row[key];\n }\n resolve(version);\n }\n });\n });\n }\n /**\n * SetVersion\n * @param mDB\n * @param version\n */\n async setVersion(mDB, version) {\n return new Promise((resolve, reject) => {\n mDB.run(`PRAGMA user_version = ${version}`, (err) => {\n if (err) {\n reject('setVersion failed: ' + `${err.message}`);\n }\n resolve();\n });\n });\n }\n /**\n * ChangePassword\n * @param pathDB\n * @param password\n * @param newpassword\n */\n /*\n \n public async changePassword(\n pathDB: string,\n password: string,\n newpassword: string,\n ): Promise<void> {\n let mDB: any;\n try {\n mDB = await this.openOrCreateDatabase(pathDB, password);\n await this.pragmaReKey(mDB, password, newpassword);\n } catch (err) {\n return Promise.reject(err);\n } finally {\n mDB.close();\n }\n }\n */\n /**\n * PragmaReKey\n * @param mDB\n * @param password\n * @param newpassword\n */\n /*\n private async pragmaReKey(\n mDB: any,\n password: string,\n newpassword: string,\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.run('PRAGMA cipher_compatibility = 4');\n mDB.run(`PRAGMA key = '${password}'`);\n mDB.run(`PRAGMA rekey = '${newpassword}'`, (err: any) => {\n if (err) {\n reject(new Error('ChangePassword: ' + `${err.message}`));\n }\n resolve();\n });\n });\n });\n }\n */\n /**\n * BeginTransaction\n * @param db\n * @param isOpen\n */\n async beginTransaction(db, isOpen) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise((resolve, reject) => {\n const msg = 'BeginTransaction: ';\n if (!isOpen) {\n return Promise.reject(`${msg}database not opened`);\n }\n const sql = 'BEGIN TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(`${msg}${err.message}`);\n }\n resolve();\n });\n });\n }\n /**\n * RollbackTransaction\n * @param db\n * @param isOpen\n */\n async rollbackTransaction(db, isOpen) {\n return new Promise((resolve, reject) => {\n const msg = 'RollbackTransaction: ';\n if (!isOpen) {\n reject(`${msg}database not opened`);\n }\n const sql = 'ROLLBACK TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(`${msg}${err.message}`);\n }\n resolve();\n });\n });\n }\n /**\n * CommitTransaction\n * @param db\n * @param isOpen\n */\n async commitTransaction(db, isOpen) {\n return new Promise((resolve, reject) => {\n const msg = 'CommitTransaction: ';\n if (!isOpen) {\n reject(`${msg}database not opened`);\n }\n const sql = 'COMMIT TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(`${msg}${err.message}`);\n }\n resolve();\n });\n });\n }\n /**\n * DbChanges\n * return total number of changes\n * @param db\n */\n async dbChanges(db) {\n return new Promise((resolve, reject) => {\n const SELECT_CHANGE = 'SELECT total_changes()';\n let changes = 0;\n db.get(SELECT_CHANGE, [], (err, row) => {\n // process the row here\n if (err) {\n reject(`DbChanges failed: ${err.message}`);\n }\n else {\n if (row == null) {\n changes = 0;\n }\n else {\n const key = Object.keys(row)[0];\n changes = row[key];\n }\n resolve(changes);\n }\n });\n });\n }\n /**\n * GetLastId\n * @param db\n */\n getLastId(db) {\n return new Promise((resolve, reject) => {\n const SELECT_LAST_ID = 'SELECT last_insert_rowid()';\n let lastId = -1;\n db.get(SELECT_LAST_ID, [], (err, row) => {\n // process the row here\n if (err) {\n reject(`GetLastId failed: ${err.message}`);\n }\n else {\n if (row == null)\n resolve(lastId);\n const key = Object.keys(row)[0];\n lastId = row[key];\n resolve(lastId);\n }\n });\n });\n }\n /**\n * Execute\n * @param mDB\n * @param sql\n */\n async execute(mDB, sql, fromJson) {\n let changes = -1;\n let initChanges = -1;\n try {\n initChanges = await this.dbChanges(mDB);\n let sqlStmt = sql;\n // Check for DELETE FROM in sql string\n if (!fromJson &&\n sql.toLowerCase().includes('DELETE FROM'.toLowerCase())) {\n sqlStmt = sql.replace(/\\n/g, '');\n const sqlStmts = sqlStmt.split(';');\n const resArr = [];\n for (const stmt of sqlStmts) {\n const trimStmt = stmt\n .trim()\n .substring(0, Math.min(stmt.trim().length, 11))\n .toUpperCase();\n if (trimStmt === 'DELETE FROM' &&\n stmt.toLowerCase().includes('WHERE'.toLowerCase())) {\n const whereStmt = `${stmt.trim()};`;\n const rStmt = await this.deleteSQL(mDB, whereStmt, []);\n resArr.push(rStmt);\n }\n else {\n resArr.push(stmt);\n }\n }\n sqlStmt = resArr.join(';');\n }\n await this.execDB(mDB, sqlStmt);\n changes = (await this.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n const msg = err.message ? err.message : err;\n return Promise.reject(`Execute: ${msg}`);\n }\n }\n /**\n * ExecDB\n * @param mDB\n * @param sql\n */\n async execDB(mDB, sql) {\n return new Promise((resolve, reject) => {\n mDB.exec(sql, async (err) => {\n if (err) {\n console.log(`in execDB err: ${JSON.stringify(err)}`);\n reject(`Execute: ${err}: `);\n }\n resolve();\n });\n });\n }\n /**\n * ExecuteSet\n * @param db\n * @param set\n */\n async executeSet(db, set, fromJson) {\n let lastId = -1;\n for (let i = 0; i < set.length; i++) {\n const statement = 'statement' in set[i] ? set[i].statement : null;\n const values = 'values' in set[i] && set[i].values.length > 0 ? set[i].values : [];\n if (statement == null) {\n let msg = 'ExecuteSet: Error Nostatement';\n msg += ` for index ${i}`;\n return Promise.reject(msg);\n }\n try {\n if (Array.isArray(values[0])) {\n for (const val of values) {\n const mVal = await this.replaceUndefinedByNull(val);\n lastId = await this.prepareRun(db, statement, mVal, fromJson);\n }\n }\n else {\n const mVal = await this.replaceUndefinedByNull(values);\n lastId = await this.prepareRun(db, statement, mVal, fromJson);\n }\n }\n catch (err) {\n return Promise.reject(`ExecuteSet: ${err}`);\n }\n }\n return Promise.resolve(lastId);\n }\n /**\n * PrepareRun\n * @param db\n * @param statement\n * @param values\n */\n async prepareRun(db, statement, values, fromJson) {\n const stmtType = statement\n .replace(/\\n/g, '')\n .trim()\n .substring(0, 6)\n .toUpperCase();\n let sqlStmt = statement;\n let lastId = -1;\n try {\n if (!fromJson && stmtType === 'DELETE') {\n sqlStmt = await this.deleteSQL(db, statement, values);\n }\n let mVal = [];\n if (values != null && values.length > 0) {\n mVal = await this.replaceUndefinedByNull(values);\n }\n await this.runExec(db, sqlStmt, mVal);\n lastId = await this.getLastId(db);\n return Promise.resolve(lastId);\n }\n catch (err) {\n return Promise.reject(`PrepareRun: ${err}`);\n }\n }\n async runExec(db, stmt, values = []) {\n return new Promise((resolve, reject) => {\n if (values != null && values.length > 0) {\n ``;\n db.run(stmt, values, (err) => {\n if (err) {\n console.log(`in runExec err1: ${JSON.stringify(err)}`);\n const msg = err.message ? err.message : err;\n reject(msg);\n }\n else {\n resolve();\n }\n });\n }\n else {\n db.exec(stmt, (err) => {\n if (err) {\n console.log(`in runExec err2: ${JSON.stringify(err)}`);\n const msg = err.message ? err.message : err;\n reject(msg);\n }\n else {\n resolve();\n }\n });\n }\n });\n }\n /**\n * replaceUndefinedByNull\n * @param values\n * @returns\n */\n async replaceUndefinedByNull(values) {\n const retValues = [];\n if (values.length > 0) {\n for (const val of values) {\n let mVal = val;\n if (typeof val === 'undefined')\n mVal = null;\n retValues.push(mVal);\n }\n }\n return Promise.resolve(retValues);\n }\n /**\n * deleteSQL\n * @param db\n * @param statement\n * @param values\n * @returns\n */\n async deleteSQL(db, statement, values) {\n let sqlStmt = statement;\n try {\n const isLast = await this.isLastModified(db, true);\n const isDel = await this.isSqlDeleted(db, true);\n if (isLast && isDel) {\n // Replace DELETE by UPDATE and set sql_deleted to 1\n const wIdx = statement.toUpperCase().indexOf('WHERE');\n const preStmt = statement.substring(0, wIdx - 1);\n const clauseStmt = statement.substring(wIdx, statement.length);\n const tableName = preStmt\n .substring('DELETE FROM'.length)\n .trim();\n sqlStmt = `UPDATE ${tableName} SET sql_deleted = 1 ${clauseStmt}`;\n // Find REFERENCES if any and update the sql_deleted column\n await this.findReferencesAndUpdate(db, tableName, clauseStmt, values);\n }\n return sqlStmt;\n }\n catch (err) {\n return Promise.reject(`DeleteSQL: ${err}`);\n }\n }\n /**\n * findReferencesAndUpdate\n * @param db\n * @param tableName\n * @param whereStmt\n * @param values\n * @returns\n */\n async findReferencesAndUpdate(db, tableName, whereStmt, values) {\n try {\n const references = await this.getReferences(db, tableName);\n if (references.length <= 0) {\n return;\n }\n const tableNameWithRefs = references.pop();\n for (const refe of references) {\n // get the tableName of the reference\n const refTable = await this.getReferenceTableName(refe);\n if (refTable.length <= 0) {\n continue;\n }\n // get the with references columnName\n const withRefsNames = await this.getWithRefsColumnName(refe);\n if (withRefsNames.length <= 0) {\n continue;\n }\n // get the referenced columnName\n const colNames = await this.getReferencedColumnName(refe);\n if (colNames.length <= 0) {\n continue;\n }\n // update the where clause\n const uWhereStmt = await this.updateWhere(whereStmt, withRefsNames, colNames);\n if (uWhereStmt.length <= 0) {\n continue;\n }\n let updTableName = tableNameWithRefs;\n let updColNames = colNames;\n if (tableNameWithRefs === tableName) {\n updTableName = refTable;\n updColNames = withRefsNames;\n }\n //update sql_deleted for this reference\n const stmt = 'UPDATE ' + updTableName + ' SET sql_deleted = 1 ' + uWhereStmt;\n if (values != null && values.length > 0) {\n const mVal = await this.replaceUndefinedByNull(values);\n let arrVal = whereStmt.split('?');\n if (arrVal[arrVal.length - 1] === ';')\n arrVal = arrVal.slice(0, -1);\n const selValues = [];\n for (const [j, val] of arrVal.entries()) {\n for (const updVal of updColNames) {\n const idxVal = val.indexOf(updVal);\n if (idxVal > -1) {\n selValues.push(mVal[j]);\n }\n }\n }\n await db.run(stmt, selValues);\n }\n else {\n await db.exec(stmt);\n }\n const lastId = await this.getLastId(db);\n if (lastId == -1) {\n const msg = `UPDATE sql_deleted failed for references table: ${refTable}`;\n return Promise.reject(new Error(`findReferencesAndUpdate: ${msg}`));\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`findReferencesAndUpdate: ${err.message}`));\n }\n }\n async getReferenceTableName(refValue) {\n let tableName = '';\n if (refValue.length > 0) {\n const arr = refValue.split(new RegExp('REFERENCES', 'i'));\n if (arr.length === 2) {\n const oPar = arr[1].indexOf('(');\n tableName = arr[1].substring(0, oPar).trim();\n }\n }\n return tableName;\n }\n async getReferencedColumnName(refValue) {\n let colNames = [];\n if (refValue.length > 0) {\n const arr = refValue.split(new RegExp('REFERENCES', 'i'));\n if (arr.length === 2) {\n const oPar = arr[1].indexOf('(');\n const cPar = arr[1].indexOf(')');\n const colStr = arr[1].substring(oPar + 1, cPar).trim();\n colNames = colStr.split(',');\n }\n }\n return colNames;\n }\n async getWithRefsColumnName(refValue) {\n let colNames = [];\n if (refValue.length > 0) {\n const arr = refValue.split(new RegExp('REFERENCES', 'i'));\n if (arr.length === 2) {\n const oPar = arr[0].indexOf('(');\n const cPar = arr[0].indexOf(')');\n const colStr = arr[0].substring(oPar + 1, cPar).trim();\n colNames = colStr.split(',');\n }\n }\n return colNames;\n }\n async updateWhere(whStmt, withRefsNames, colNames) {\n let whereStmt = '';\n if (whStmt.length > 0) {\n const index = whStmt.toLowerCase().indexOf('WHERE'.toLowerCase());\n const stmt = whStmt.substring(index + 6);\n if (withRefsNames.length === colNames.length) {\n for (let i = 0; i < withRefsNames.length; i++) {\n let colType = 'withRefsNames';\n let idx = stmt.indexOf(withRefsNames[i]);\n if (idx === -1) {\n idx = stmt.indexOf(colNames[i]);\n colType = 'colNames';\n }\n if (idx > -1) {\n let valStr = '';\n const fEqual = stmt.indexOf('=', idx);\n if (fEqual > -1) {\n const iAnd = stmt.indexOf('AND', fEqual);\n const ilAnd = stmt.indexOf('and', fEqual);\n if (iAnd > -1) {\n valStr = stmt.substring(fEqual + 1, iAnd - 1).trim();\n }\n else if (ilAnd > -1) {\n valStr = stmt.substring(fEqual + 1, ilAnd - 1).trim();\n }\n else {\n valStr = stmt.substring(fEqual + 1, stmt.length).trim();\n }\n if (i > 0) {\n whereStmt += ' AND ';\n }\n if (colType === 'withRefsNames') {\n whereStmt += `${colNames[i]} = ${valStr}`;\n }\n else {\n whereStmt += `${withRefsNames[i]} = ${valStr}`;\n }\n }\n }\n }\n whereStmt = 'WHERE ' + whereStmt;\n }\n }\n return whereStmt;\n }\n async getReferences(db, tableName) {\n const sqlStmt = 'SELECT sql FROM sqlite_master ' +\n \"WHERE sql LIKE('%FOREIGN KEY%') AND sql LIKE('%REFERENCES%') AND \" +\n \"sql LIKE('%\" +\n tableName +\n \"%') AND sql LIKE('%ON DELETE%');\";\n try {\n const res = await this.queryAll(db, sqlStmt, []);\n // get the reference's string(s)\n let retRefs = [];\n if (res.length > 0) {\n retRefs = await this.getRefs(res[0].sql);\n }\n return Promise.resolve(retRefs);\n }\n catch (err) {\n return Promise.reject(new Error(`getReferences: ${err.message}`));\n }\n }\n async getRefs(str) {\n const retRefs = [];\n const arrFor = str.split(new RegExp('FOREIGN KEY', 'i'));\n // Loop through Foreign Keys\n for (let i = 1; i < arrFor.length; i++) {\n retRefs.push(arrFor[i].split(new RegExp('ON DELETE', 'i'))[0].trim());\n }\n // find table name with references\n if (str.substring(0, 12).toLowerCase() === 'CREATE TABLE'.toLowerCase()) {\n const oPar = str.indexOf('(');\n const tableName = str.substring(13, oPar).trim();\n retRefs.push(tableName);\n }\n return retRefs;\n }\n /**\n * QueryAll\n * @param mDB\n * @param sql\n * @param values\n */\n queryAll(mDB, sql, values) {\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.all(sql, values, (err, rows) => {\n if (err) {\n reject(`QueryAll: ${err.message}`);\n }\n else {\n if (rows == null) {\n rows = [];\n }\n resolve(rows);\n }\n });\n });\n });\n }\n /**\n * GetTablesNames\n * @param mDb\n */\n async getTablesNames(mDb) {\n let sql = 'SELECT name FROM sqlite_master WHERE ';\n sql += \"type='table' AND name NOT LIKE 'sync_table' \";\n sql += \"AND name NOT LIKE '_temp_%' \";\n sql += \"AND name NOT LIKE 'sqlite_%' \";\n sql += 'ORDER BY rootpage DESC;';\n const retArr = [];\n try {\n const retQuery = await this.queryAll(mDb, sql, []);\n for (const query of retQuery) {\n retArr.push(query.name);\n }\n return Promise.resolve(retArr);\n }\n catch (err) {\n return Promise.reject(`getTablesNames: ${err}`);\n }\n }\n /**\n * GetViewsNames\n * @param mDb\n */\n async getViewsNames(mDb) {\n let sql = 'SELECT name FROM sqlite_master WHERE ';\n sql += \"type='view' AND name NOT LIKE 'sqlite_%' \";\n sql += 'ORDER BY rootpage DESC;';\n const retArr = [];\n try {\n const retQuery = await this.queryAll(mDb, sql, []);\n for (const query of retQuery) {\n retArr.push(query.name);\n }\n return Promise.resolve(retArr);\n }\n catch (err) {\n return Promise.reject(`getViewsNames: ${err}`);\n }\n }\n /**\n * isLastModified\n * @param db\n * @param isOpen\n */\n async isLastModified(db, isOpen) {\n if (!isOpen) {\n return Promise.reject('isLastModified: database not opened');\n }\n try {\n const tableList = await this.getTablesNames(db);\n for (const table of tableList) {\n const tableNamesTypes = await this.getTableColumnNamesTypes(db, table);\n const tableColumnNames = tableNamesTypes.names;\n if (tableColumnNames.includes('last_modified')) {\n return Promise.resolve(true);\n }\n }\n }\n catch (err) {\n return Promise.reject(`isLastModified: ${err}`);\n }\n }\n /**\n * isSqlDeleted\n * @param db\n * @param isOpen\n */\n async isSqlDeleted(db, isOpen) {\n if (!isOpen) {\n return Promise.reject('isSqlDeleted: database not opened');\n }\n try {\n const tableList = await this.getTablesNames(db);\n for (const table of tableList) {\n const tableNamesTypes = await this.getTableColumnNamesTypes(db, table);\n const tableColumnNames = tableNamesTypes.names;\n if (tableColumnNames.includes('sql_deleted')) {\n return Promise.resolve(true);\n }\n }\n }\n catch (err) {\n return Promise.reject(`isSqlDeleted: ${err}`);\n }\n }\n async getJournalMode(mDB) {\n let resQuery = [];\n let retMode = 'delete';\n const query = `PRAGMA journal_mode;`;\n try {\n resQuery = await this.queryAll(mDB, query, []);\n if (resQuery.length === 1) {\n for (const query of resQuery) {\n retMode = query.journal_mode;\n }\n }\n return retMode;\n }\n catch (err) {\n return Promise.reject('GetJournalMode: ' + `${err}`);\n }\n }\n /**\n * GetTableColumnNamesTypes\n * @param mDB\n * @param tableName\n */\n async getTableColumnNamesTypes(mDB, tableName) {\n let resQuery = [];\n const retNames = [];\n const retTypes = [];\n const query = `PRAGMA table_info('${tableName}');`;\n try {\n resQuery = await this.queryAll(mDB, query, []);\n if (resQuery.length > 0) {\n for (const query of resQuery) {\n retNames.push(query.name);\n retTypes.push(query.type);\n }\n }\n return Promise.resolve({ names: retNames, types: retTypes });\n }\n catch (err) {\n return Promise.reject('GetTableColumnNamesTypes: ' + `${err}`);\n }\n }\n}\nexports.UtilsSQLite = UtilsSQLite;\n//# sourceMappingURL=utilsSQLite.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsJson = void 0;\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nclass UtilsJson {\n constructor() {\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n }\n /**\n * IsTableExists\n * @param db\n * @param isOpen\n * @param tableName\n */\n async isTableExists(db, isOpen, tableName) {\n return new Promise((resolve, reject) => {\n if (!isOpen) {\n reject('isTableExists: database not opened');\n }\n let query = 'SELECT name FROM sqlite_master WHERE ';\n query += `type='table' AND name='${tableName}';`;\n db.all(query, [], (err, rows) => {\n // process the row here\n if (err) {\n reject(`isTableExists: failed: ${err.message}`);\n }\n else {\n if (rows.length === 0) {\n resolve(false);\n }\n else {\n resolve(true);\n }\n }\n });\n });\n }\n /**\n * IsViewExists\n * @param db\n * @param isOpen\n * @param viewName\n */\n async isViewExists(db, isOpen, viewName) {\n return new Promise((resolve, reject) => {\n if (!isOpen) {\n reject('isViewExists: database not opened');\n }\n let query = 'SELECT name FROM sqlite_master WHERE ';\n query += `type='view' AND name='${viewName}';`;\n db.all(query, [], (err, rows) => {\n // process the row here\n if (err) {\n reject(`isViewExists: failed: ${err.message}`);\n }\n else {\n if (rows.length === 0) {\n resolve(false);\n }\n else {\n resolve(true);\n }\n }\n });\n });\n }\n /**\n * CreateSchema\n * @param mDB\n * @param jsonData\n */\n async createSchema(mDB, jsonData) {\n // create the database schema\n let changes = 0;\n try {\n // start a transaction\n await this.sqliteUtil.beginTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(`CreateDatabaseSchema: ${err}`);\n }\n const stmts = await this.createSchemaStatement(jsonData);\n if (stmts.length > 0) {\n const schemaStmt = stmts.join('\\n');\n try {\n changes = await this.sqliteUtil.execute(mDB, schemaStmt, true);\n if (changes < 0) {\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject('CreateSchema: changes < 0 ' + `${err}`);\n }\n }\n }\n catch (err) {\n const msg = err;\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n return Promise.reject(`CreateSchema: ${msg}`);\n }\n catch (err) {\n return Promise.reject('CreateSchema: changes < 0 ' + `${err}: ${msg}`);\n }\n }\n }\n try {\n await this.sqliteUtil.commitTransaction(mDB, true);\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject('CreateSchema: commit ' + `${err}`);\n }\n }\n /**\n * CreateSchemaStatement\n * @param jsonData\n */\n async createSchemaStatement(jsonData) {\n const statements = [];\n let isLastModified = false;\n let isSqlDeleted = false;\n // Prepare the statement to execute\n try {\n for (const jTable of jsonData.tables) {\n if (jTable.schema != null && jTable.schema.length >= 1) {\n // create table\n statements.push('CREATE TABLE IF NOT EXISTS ' + `${jTable.name} (`);\n for (let j = 0; j < jTable.schema.length; j++) {\n if (j === jTable.schema.length - 1) {\n if (jTable.schema[j].column) {\n statements.push(`${jTable.schema[j].column} ${jTable.schema[j].value}`);\n if (jTable.schema[j].column === 'last_modified') {\n isLastModified = true;\n }\n if (jTable.schema[j].column === 'sql_deleted') {\n isSqlDeleted = true;\n }\n }\n else if (jTable.schema[j].foreignkey) {\n statements.push(`FOREIGN KEY (${jTable.schema[j].foreignkey}) ${jTable.schema[j].value}`);\n }\n else if (jTable.schema[j].constraint) {\n statements.push(`CONSTRAINT ${jTable.schema[j].constraint} ${jTable.schema[j].value}`);\n }\n }\n else {\n if (jTable.schema[j].column) {\n statements.push(`${jTable.schema[j].column} ${jTable.schema[j].value},`);\n if (jTable.schema[j].column === 'last_modified') {\n isLastModified = true;\n }\n if (jTable.schema[j].column === 'sql_deleted') {\n isSqlDeleted = true;\n }\n }\n else if (jTable.schema[j].foreignkey) {\n statements.push(`FOREIGN KEY (${jTable.schema[j].foreignkey}) ${jTable.schema[j].value},`);\n }\n else if (jTable.schema[j].constraint) {\n statements.push(`CONSTRAINT ${jTable.schema[j].constraint} ${jTable.schema[j].value},`);\n }\n }\n }\n statements.push(');');\n if (isLastModified && isSqlDeleted) {\n // create trigger last_modified associated with the table\n let trig = 'CREATE TRIGGER IF NOT EXISTS ';\n trig += `${jTable.name}`;\n trig += `_trigger_last_modified `;\n trig += `AFTER UPDATE ON ${jTable.name} `;\n trig += 'FOR EACH ROW WHEN NEW.last_modified < ';\n trig += 'OLD.last_modified BEGIN UPDATE ';\n trig += `${jTable.name} `;\n trig += `SET last_modified = `;\n trig += \"(strftime('%s','now')) WHERE id=OLD.id; END;\";\n statements.push(trig);\n }\n }\n if (jTable.indexes != null && jTable.indexes.length >= 1) {\n for (const jIndex of jTable.indexes) {\n const tableName = jTable.name;\n let stmt = `CREATE ${Object.keys(jIndex).includes('mode') ? jIndex.mode + ' ' : ''} INDEX IF NOT EXISTS `;\n stmt += `${jIndex.name} ON ${tableName} (${jIndex.value});`;\n statements.push(stmt);\n }\n }\n if (jTable.triggers != null && jTable.triggers.length >= 1) {\n for (const jTrg of jTable.triggers) {\n const tableName = jTable.name;\n if (jTrg.timeevent.toUpperCase().endsWith(' ON')) {\n jTrg.timeevent = jTrg.timeevent.substring(0, jTrg.timeevent.length - 3);\n }\n let stmt = `CREATE TRIGGER IF NOT EXISTS `;\n stmt += `${jTrg.name} ${jTrg.timeevent} ON ${tableName} `;\n if (jTrg.condition)\n stmt += `${jTrg.condition} `;\n stmt += `${jTrg.logic};`;\n statements.push(stmt);\n }\n }\n }\n return Promise.resolve(statements);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n /**\n * CreateDataTable\n * @param mDB\n * @param table\n * @param mode\n */\n async createDataTable(mDB, table, mode) {\n let lastId = -1;\n try {\n // Check if the table exists\n const tableExists = await this.isTableExists(mDB, true, table.name);\n if (!tableExists) {\n return Promise.reject('CreateDataTable: Table ' + `${table.name} does not exist`);\n }\n // Get the column names and types\n const tableNamesTypes = await this.sqliteUtil.getTableColumnNamesTypes(mDB, table.name);\n const tableColumnTypes = tableNamesTypes.types;\n const tableColumnNames = tableNamesTypes.names;\n if (tableColumnTypes.length === 0) {\n return Promise.reject('CreateDataTable: Table ' + `${table.name} info does not exist`);\n }\n // Loop on Table Values\n for (let j = 0; j < table.values.length; j++) {\n let row = table.values[j];\n let isRun = true;\n const stmt = await this.createRowStatement(mDB, tableColumnNames, row, j, table.name, mode);\n isRun = await this.checkUpdate(mDB, stmt, row, table.name, tableColumnNames);\n if (isRun) {\n if (stmt.substring(0, 6).toUpperCase() === 'DELETE') {\n row = [];\n }\n lastId = await this.sqliteUtil.prepareRun(mDB, stmt, row, true);\n if (lastId < 0) {\n return Promise.reject('CreateDataTable: lastId < 0');\n }\n }\n else {\n lastId = 0;\n }\n }\n return Promise.resolve(lastId);\n }\n catch (err) {\n return Promise.reject(`CreateDataTable: ${err}`);\n }\n }\n /**\n * CreateRowStatement\n * @param mDB\n * @param tColNames\n * @param row\n * @param j\n * @param tableName\n * @param mode\n * @returns\n */\n async createRowStatement(mDB, tColNames, row, j, tableName, mode) {\n // Check the row number of columns\n if (row.length != tColNames.length ||\n row.length === 0 ||\n tColNames.length === 0) {\n return Promise.reject(new Error(`CreateRowStatement: Table ${tableName} ` +\n `values row ${j} not correct length`));\n }\n try {\n const retisIdExists = await this.isIdExists(mDB, tableName, tColNames[0], row[0]);\n let stmt;\n if (mode === 'full' || (mode === 'partial' && !retisIdExists)) {\n // Insert\n const nameString = tColNames.join();\n const questionMarkString = await this.createQuestionMarkString(tColNames.length);\n stmt = `INSERT INTO ${tableName} (${nameString}) VALUES (`;\n stmt += `${questionMarkString});`;\n }\n else {\n // Update or Delete\n let isUpdate = true;\n const isColDeleted = (element) => element === `sql_deleted`;\n const idxDelete = tColNames.findIndex(isColDeleted);\n if (idxDelete >= 0) {\n if (row[idxDelete] === 1) {\n isUpdate = false;\n stmt = `DELETE FROM ${tableName} WHERE `;\n if (typeof row[0] == 'string') {\n stmt += `${tColNames[0]} = '${row[0]}';`;\n }\n else {\n stmt += `${tColNames[0]} = ${row[0]};`;\n }\n }\n }\n if (isUpdate) {\n // Update\n const setString = await this.setNameForUpdate(tColNames);\n if (setString.length === 0) {\n return Promise.reject(new Error(`CreateRowStatement: Table ${tableName} ` +\n `values row ${j} not set to String`));\n }\n stmt = `UPDATE ${tableName} SET ${setString} WHERE `;\n if (typeof row[0] == 'string') {\n stmt += `${tColNames[0]} = '${row[0]}';`;\n }\n else {\n stmt += `${tColNames[0]} = ${row[0]};`;\n }\n }\n }\n return Promise.resolve(stmt);\n }\n catch (err) {\n return Promise.reject(new Error(`CreateRowStatement: ${err.message}`));\n }\n }\n /**\n *\n * @param db\n * @param values\n * @param tbName\n * @param tColNames\n * @returns\n */\n async checkUpdate(db, stmt, values, tbName, tColNames) {\n const isRun = true;\n if (stmt.substring(0, 6) === 'UPDATE') {\n try {\n let query = `SELECT * FROM ${tbName} WHERE `;\n if (typeof values[0] == 'string') {\n query += `${tColNames[0]} = '${values[0]}';`;\n }\n else {\n query += `${tColNames[0]} = ${values[0]};`;\n }\n const resQuery = await this.getValues(db, query, tbName);\n let resValues = [];\n if (resQuery.length > 0) {\n resValues = resQuery[0];\n }\n if (values.length > 0 &&\n resValues.length > 0 &&\n values.length === resValues.length) {\n for (let i = 0; i < values.length; i++) {\n if (values[i] !== resValues[i]) {\n return Promise.resolve(true);\n }\n }\n return Promise.resolve(false);\n }\n else {\n const msg = 'Both arrays not the same length';\n return Promise.reject(new Error(`CheckUpdate: ${msg}`));\n }\n }\n catch (err) {\n return Promise.reject(new Error(`CheckUpdate: ${err.message}`));\n }\n }\n else {\n return Promise.resolve(isRun);\n }\n }\n /**\n * GetValues\n * @param mDb\n * @param query\n * @param tableName\n */\n async getValues(mDb, query, tableName) {\n const values = [];\n try {\n // get table column names and types\n const tableNamesTypes = await this.sqliteUtil.getTableColumnNamesTypes(mDb, tableName);\n let rowNames = [];\n if (Object.keys(tableNamesTypes).includes('names')) {\n rowNames = tableNamesTypes.names;\n }\n else {\n return Promise.reject(`GetValues: Table ${tableName} no names`);\n }\n const retValues = await this.sqliteUtil.queryAll(mDb, query, []);\n for (const rValue of retValues) {\n const row = [];\n for (const rName of rowNames) {\n if (Object.keys(rValue).includes(rName)) {\n row.push(rValue[rName]);\n }\n else {\n row.push('NULL');\n }\n }\n values.push(row);\n }\n return Promise.resolve(values);\n }\n catch (err) {\n return Promise.reject(`GetValues: ${err}`);\n }\n }\n /**\n * CheckColumnTypes\n * @param tableTypes\n * @param rowValues\n */\n /*\n private async checkColumnTypes(\n tableTypes: any[],\n rowValues: any[],\n ): Promise<boolean> {\n const isType = true;\n for (let i = 0; i < rowValues.length; i++) {\n if (rowValues[i].toString().toUpperCase() != 'NULL') {\n try {\n await this.isType(tableTypes[i], rowValues[i]);\n } catch (err) {\n return Promise.reject(new Error('checkColumnTypes: Type not found'));\n }\n }\n }\n return Promise.resolve(isType);\n }\n */\n /**\n * IsType\n * @param type\n * @param value\n */\n /*\n private async isType(type: string, value: any): Promise<void> {\n let ret = false;\n if (type === 'NULL' && typeof value === 'object') ret = true;\n if (type === 'TEXT' && typeof value === 'string') ret = true;\n if (type === 'INTEGER' && typeof value === 'number') ret = true;\n if (type === 'REAL' && typeof value === 'number') ret = true;\n if (type === 'BLOB' && typeof value === 'string') ret = true;\n if (ret) {\n return Promise.resolve();\n } else {\n return Promise.reject(new Error('IsType: not a SQL Type'));\n }\n }\n */\n /**\n * IsIdExists\n * @param db\n * @param dbName\n * @param firstColumnName\n * @param key\n */\n async isIdExists(db, dbName, firstColumnName, key) {\n let ret = false;\n let query = `SELECT ${firstColumnName} FROM ` +\n `${dbName} WHERE ${firstColumnName} = `;\n if (typeof key === 'number')\n query += `${key};`;\n if (typeof key === 'string')\n query += `'${key}';`;\n try {\n const resQuery = await this.sqliteUtil.queryAll(db, query, []);\n if (resQuery.length === 1)\n ret = true;\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(`IsIdExists: ${err}`);\n }\n }\n /**\n * CreateQuestionMarkString\n * @param length\n */\n createQuestionMarkString(length) {\n return new Promise((resolve, reject) => {\n let retString = '';\n for (let i = 0; i < length; i++) {\n retString += '?,';\n }\n if (retString.length > 1) {\n retString = retString.slice(0, -1);\n resolve(retString);\n }\n else {\n reject('CreateQuestionMarkString: length = 0');\n }\n });\n }\n /**\n * SetNameForUpdate\n * @param names\n */\n async setNameForUpdate(names) {\n let retString = '';\n for (const name of names) {\n retString += `${name} = ? ,`;\n }\n if (retString.length > 1) {\n retString = retString.slice(0, -1);\n return Promise.resolve(retString);\n }\n else {\n return Promise.reject('SetNameForUpdate: length = 0');\n }\n }\n /**\n * IsJsonSQLite\n * @param obj\n */\n isJsonSQLite(obj) {\n const keyFirstLevel = [\n 'database',\n 'version',\n 'overwrite',\n 'encrypted',\n 'mode',\n 'tables',\n 'views',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyFirstLevel.indexOf(key) === -1)\n return false;\n if (key === 'database' && typeof obj[key] != 'string')\n return false;\n if (key === 'version' && typeof obj[key] != 'number')\n return false;\n if (key === 'overwrite' && typeof obj[key] != 'boolean')\n return false;\n if (key === 'encrypted' && typeof obj[key] != 'boolean')\n return false;\n if (key === 'mode' && typeof obj[key] != 'string')\n return false;\n if (key === 'tables' && typeof obj[key] != 'object')\n return false;\n if (key === 'tables') {\n for (const oKey of obj[key]) {\n const retTable = this.isTable(oKey);\n if (!retTable)\n return false;\n }\n }\n if (key === 'views' && typeof obj[key] != 'object')\n return false;\n if (key === 'views') {\n for (const oKey of obj[key]) {\n const retView = this.isView(oKey);\n if (!retView)\n return false;\n }\n }\n }\n return true;\n }\n /**\n * IsTable\n * @param obj\n */\n isTable(obj) {\n const keyTableLevel = [\n 'name',\n 'schema',\n 'indexes',\n 'triggers',\n 'values',\n ];\n let nbColumn = 0;\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyTableLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'schema' && typeof obj[key] != 'object')\n return false;\n if (key === 'indexes' && typeof obj[key] != 'object')\n return false;\n if (key === 'triggers' && typeof obj[key] != 'object')\n return false;\n if (key === 'values' && typeof obj[key] != 'object')\n return false;\n if (key === 'schema') {\n obj['schema'].forEach((element) => {\n if (element.column) {\n nbColumn++;\n }\n });\n for (let i = 0; i < nbColumn; i++) {\n const retSchema = this.isSchema(obj[key][i]);\n if (!retSchema)\n return false;\n }\n }\n if (key === 'indexes') {\n for (const oKey of obj[key]) {\n const retIndexes = this.isIndexes(oKey);\n if (!retIndexes)\n return false;\n }\n }\n if (key === 'triggers') {\n for (const oKey of obj[key]) {\n const retTriggers = this.isTriggers(oKey);\n if (!retTriggers)\n return false;\n }\n }\n if (key === 'values') {\n if (nbColumn > 0) {\n for (const oKey of obj[key]) {\n if (typeof oKey != 'object' || oKey.length != nbColumn)\n return false;\n }\n }\n }\n }\n return true;\n }\n /**\n * IsSchema\n * @param obj\n */\n isSchema(obj) {\n const keySchemaLevel = [\n 'column',\n 'value',\n 'foreignkey',\n 'primarykey',\n 'constraint',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keySchemaLevel.indexOf(key) === -1)\n return false;\n if (key === 'column' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n if (key === 'foreignkey' && typeof obj[key] != 'string')\n return false;\n if (key === 'primarykey' && typeof obj[key] != 'string')\n return false;\n if (key === 'constraint' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n }\n /**\n * isIndexes\n * @param obj\n */\n isIndexes(obj) {\n const keyIndexesLevel = ['name', 'value', 'mode'];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyIndexesLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n if (key === 'mode' &&\n (typeof obj[key] != 'string' || obj[key].toUpperCase() != 'UNIQUE'))\n return false;\n }\n return true;\n }\n /**\n * isTriggers\n * @param obj\n */\n isTriggers(obj) {\n const keyTriggersLevel = [\n 'name',\n 'timeevent',\n 'condition',\n 'logic',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyTriggersLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'timeevent' && typeof obj[key] != 'string')\n return false;\n if (key === 'condition' && typeof obj[key] != 'string')\n return false;\n if (key === 'logic' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n }\n /**\n * IsViews\n * @param obj\n */\n isView(obj) {\n const keyViewLevel = ['name', 'value'];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyViewLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n }\n /**\n * checkSchemaValidity\n * @param schema\n */\n async checkSchemaValidity(schema) {\n for (let i = 0; i < schema.length; i++) {\n const sch = {};\n const keys = Object.keys(schema[i]);\n if (keys.includes('column')) {\n sch.column = schema[i].column;\n }\n if (keys.includes('value')) {\n sch.value = schema[i].value;\n }\n if (keys.includes('foreignkey')) {\n sch.foreignkey = schema[i].foreignkey;\n }\n if (keys.includes('constraint')) {\n sch.constraint = schema[i].constraint;\n }\n const isValid = this.isSchema(sch);\n if (!isValid) {\n return Promise.reject(`CheckSchemaValidity: schema[${i}] not valid`);\n }\n }\n return Promise.resolve();\n }\n /**\n * checkIndexesSchemaValidity\n * @param indexes\n */\n async checkIndexesValidity(indexes) {\n for (let i = 0; i < indexes.length; i++) {\n const index = {};\n const keys = Object.keys(indexes[i]);\n if (keys.includes('value')) {\n index.value = indexes[i].value;\n }\n if (keys.includes('name')) {\n index.name = indexes[i].name;\n }\n if (keys.includes('mode')) {\n index.mode = indexes[i].mode;\n }\n const isValid = this.isIndexes(index);\n if (!isValid) {\n return Promise.reject(`CheckIndexesValidity: indexes[${i}] not valid`);\n }\n }\n return Promise.resolve();\n }\n /**\n * checkTriggersValidity\n * @param triggers\n */\n async checkTriggersValidity(triggers) {\n for (let i = 0; i < triggers.length; i++) {\n const trigger = {};\n const keys = Object.keys(triggers[i]);\n if (keys.includes('logic')) {\n trigger.logic = triggers[i].logic;\n }\n if (keys.includes('name')) {\n trigger.name = triggers[i].name;\n }\n if (keys.includes('timeevent')) {\n trigger.timeevent = triggers[i].timeevent;\n }\n if (keys.includes('condition')) {\n trigger.condition = triggers[i].condition;\n }\n const isValid = this.isTriggers(trigger);\n if (!isValid) {\n return Promise.reject(`CheckTriggersValidity: triggers[${i}] not valid`);\n }\n }\n return Promise.resolve();\n }\n /**\n * checkViewsValidity\n * @param views\n */\n async checkViewsValidity(views) {\n for (let i = 0; i < views.length; i++) {\n const view = {};\n const keys = Object.keys(views[i]);\n if (keys.includes('value')) {\n view.value = views[i].value;\n }\n if (keys.includes('name')) {\n view.name = views[i].name;\n }\n const isValid = this.isView(view);\n if (!isValid) {\n return Promise.reject(`CheckViewsValidity: views[${i}] not valid`);\n }\n }\n return Promise.resolve();\n }\n /**\n * CreateView\n * @param mDB\n * @param table\n */\n async createView(mDB, view) {\n const stmt = `CREATE VIEW IF NOT EXISTS ${view.name} AS ${view.value};`;\n try {\n const changes = await this.sqliteUtil.execute(mDB, stmt, true);\n if (changes < 0) {\n return Promise.reject(`CreateView: ${view.name} failed`);\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`CreateView: ${err}`);\n }\n }\n}\nexports.UtilsJson = UtilsJson;\n//# sourceMappingURL=utilsJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportToJson = void 0;\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nconst utilsJson_1 = require(\"./utilsJson\");\nclass ExportToJson {\n constructor() {\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n this.jsonUtil = new utilsJson_1.UtilsJson();\n }\n /**\n * CreateExportObject\n * @param mDB\n * @param sqlObj\n */\n async createExportObject(mDB, sqlObj) {\n const retObj = {};\n let tables = [];\n let views = [];\n let errmsg = '';\n try {\n // get View's name\n views = await this.getViewsName(mDB);\n // get Table's name\n const resTables = await this.getTablesNameSQL(mDB);\n if (resTables.length === 0) {\n return Promise.reject(\"createExportObject: table's names failed\");\n }\n else {\n const isTable = await this.jsonUtil.isTableExists(mDB, true, 'sync_table');\n if (!isTable && sqlObj.mode === 'partial') {\n return Promise.reject('No sync_table available');\n }\n switch (sqlObj.mode) {\n case 'partial': {\n tables = await this.getTablesPartial(mDB, resTables);\n break;\n }\n case 'full': {\n tables = await this.getTablesFull(mDB, resTables);\n break;\n }\n default: {\n errmsg =\n 'createExportObject: expMode ' + sqlObj.mode + ' not defined';\n break;\n }\n }\n if (errmsg.length > 0) {\n return Promise.reject(errmsg);\n }\n if (tables.length > 0) {\n retObj.database = sqlObj.database;\n retObj.version = sqlObj.version;\n retObj.encrypted = sqlObj.encrypted;\n retObj.mode = sqlObj.mode;\n retObj.tables = tables;\n if (views.length > 0) {\n retObj.views = views;\n }\n }\n return Promise.resolve(retObj);\n }\n }\n catch (err) {\n return Promise.reject('createExportObject: ' + err);\n }\n }\n /**\n * GetTablesNameSQL\n * @param mDb\n */\n async getTablesNameSQL(mDb) {\n let sql = 'SELECT name,sql FROM sqlite_master WHERE ';\n sql += \"type='table' AND name NOT LIKE 'sync_table' \";\n sql += \"AND name NOT LIKE '_temp_%' \";\n sql += \"AND name NOT LIKE 'sqlite_%';\";\n let retQuery = [];\n try {\n retQuery = await this.sqliteUtil.queryAll(mDb, sql, []);\n return Promise.resolve(retQuery);\n }\n catch (err) {\n return Promise.reject(`getTablesNameSQL: ${err}`);\n }\n }\n async getLastExportDate(mDb) {\n return new Promise((resolve, reject) => {\n let retDate = -1;\n // get the last sync date\n const stmt = `SELECT sync_date FROM sync_table WHERE id = 2;`;\n mDb.get(stmt, [], (err, row) => {\n // process the row here\n if (err) {\n reject(`getLastExportDate: ${err.message}`);\n }\n else {\n if (row != null) {\n const key = Object.keys(row)[0];\n retDate = row[key];\n }\n resolve(retDate);\n }\n });\n });\n }\n /**\n * SetLastExportDate\n * @param mDb\n * @param lastExportedDate\n * @returns\n */\n async setLastExportDate(mDb, lastExportedDate) {\n try {\n const isTable = await this.jsonUtil.isTableExists(mDb, true, 'sync_table');\n if (!isTable) {\n return Promise.reject(new Error('setLastExportDate: No sync_table available'));\n }\n const sDate = Math.round(new Date(lastExportedDate).getTime() / 1000);\n let stmt = '';\n if ((await this.getLastExportDate(mDb)) > 0) {\n stmt = `UPDATE sync_table SET sync_date = ${sDate} WHERE id = 2;`;\n }\n else {\n stmt = `INSERT INTO sync_table (sync_date) VALUES (${sDate});`;\n }\n const changes = await this.sqliteUtil.execute(mDb, stmt, false);\n if (changes < 0) {\n return { result: false, message: 'setLastExportDate failed' };\n }\n else {\n return { result: true };\n }\n }\n catch (err) {\n return {\n result: false,\n message: `setLastExportDate failed: ${err.message}`,\n };\n }\n }\n async delExportedRows(mDb) {\n let lastExportDate;\n try {\n // check if synchronization table exists\n const isTable = await this.jsonUtil.isTableExists(mDb, true, 'sync_table');\n if (!isTable) {\n return Promise.reject('DelExportedRows: No sync_table available');\n }\n // get the last export date\n lastExportDate = await this.getLastExportDate(mDb);\n if (lastExportDate < 0) {\n return Promise.reject('DelExportedRows: no last exported date available');\n }\n // get the table' name list\n const resTables = await this.sqliteUtil.getTablesNames(mDb);\n if (resTables.length === 0) {\n return Promise.reject(\"DelExportedRows: No table's names returned\");\n }\n // Loop through the tables\n for (const table of resTables) {\n let lastId = -1;\n // define the delete statement\n const delStmt = `DELETE FROM ${table}\n WHERE sql_deleted = 1 AND last_modified < ${lastExportDate};`;\n lastId = await this.sqliteUtil.prepareRun(mDb, delStmt, [], true);\n if (lastId < 0) {\n return Promise.reject('DelExportedRows: lastId < 0');\n }\n }\n }\n catch (err) {\n return Promise.reject(`DelExportedRows failed: ${err.message}`);\n }\n }\n /**\n * GetViewsNameSQL\n * @param mDb\n */\n async getViewsName(mDb) {\n const views = [];\n let sql = 'SELECT name,sql FROM sqlite_master WHERE ';\n sql += \"type='view' AND name NOT LIKE 'sqlite_%';\";\n let retQuery = [];\n try {\n retQuery = await this.sqliteUtil.queryAll(mDb, sql, []);\n for (const query of retQuery) {\n const view = {};\n view.name = query.name;\n view.value = query.sql.substring(query.sql.indexOf('AS ') + 3);\n views.push(view);\n }\n return Promise.resolve(views);\n }\n catch (err) {\n return Promise.reject(`getViewsName: ${err}`);\n }\n }\n /**\n * GetSyncDate\n * @param mDb\n */\n async getSyncDate(mDb) {\n return new Promise((resolve, reject) => {\n let retDate = -1;\n // get the last sync date\n const stmt = `SELECT sync_date FROM sync_table WHERE id = 1;`;\n mDb.get(stmt, [], (err, row) => {\n // process the row here\n if (err) {\n reject(`GetSyncDate: ${err.message}`);\n }\n else {\n if (row != null) {\n const key = Object.keys(row)[0];\n retDate = row[key];\n resolve(retDate);\n }\n else {\n reject(`GetSyncDate: no syncDate`);\n }\n }\n });\n });\n }\n /**\n * GetTablesFull\n * @param mDb\n * @param resTables\n */\n async getTablesFull(mDb, resTables) {\n const tables = [];\n let errmsg = '';\n try {\n // Loop through the tables\n for (const rTable of resTables) {\n let tableName;\n let sqlStmt;\n if (rTable.name) {\n tableName = rTable.name;\n }\n else {\n errmsg = 'GetTablesFull: no name';\n break;\n }\n if (rTable.sql) {\n sqlStmt = rTable.sql;\n }\n else {\n errmsg = 'GetTablesFull: no sql';\n break;\n }\n const table = {};\n // create Table's Schema\n const schema = await this.getSchema(sqlStmt);\n if (schema.length === 0) {\n errmsg = 'GetTablesFull: no Schema returned';\n break;\n }\n // check schema validity\n await this.jsonUtil.checkSchemaValidity(schema);\n // create Table's indexes if any\n const indexes = await this.getIndexes(mDb, tableName);\n if (indexes.length > 0) {\n // check indexes validity\n await this.jsonUtil.checkIndexesValidity(indexes);\n }\n // create Table's triggers if any\n const triggers = await this.getTriggers(mDb, tableName);\n if (triggers.length > 0) {\n // check triggers validity\n await this.jsonUtil.checkTriggersValidity(triggers);\n }\n // create Table's Data\n const query = `SELECT * FROM ${tableName};`;\n const values = await this.jsonUtil.getValues(mDb, query, tableName);\n table.name = tableName;\n if (schema.length > 0) {\n table.schema = schema;\n }\n else {\n errmsg = `GetTablesFull: must contain schema`;\n break;\n }\n if (indexes.length > 0) {\n table.indexes = indexes;\n }\n if (triggers.length > 0) {\n table.triggers = triggers;\n }\n if (values.length > 0) {\n table.values = values;\n }\n if (Object.keys(table).length <= 1) {\n errmsg = `GetTablesFull: table ${tableName} is not a jsonTable`;\n break;\n }\n tables.push(table);\n }\n if (errmsg.length > 0) {\n return Promise.reject(errmsg);\n }\n return Promise.resolve(tables);\n }\n catch (err) {\n return Promise.reject(`GetTablesFull: ${err}`);\n }\n }\n /**\n * GetSchema\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getSchema(sqlStmt /*,tableName: string,*/) {\n const schema = [];\n // take the substring between parenthesis\n const openPar = sqlStmt.indexOf('(');\n const closePar = sqlStmt.lastIndexOf(')');\n let sstr = sqlStmt.substring(openPar + 1, closePar);\n // check if there is other parenthesis and replace the ',' by '§'\n try {\n sstr = await this.modEmbeddedParentheses(sstr);\n const sch = sstr.split(',');\n // for each element of the array split the\n // first word as key\n for (const sc of sch) {\n const row = [];\n const scht = sc.replace(/\\n/g, '').trim();\n row[0] = scht.substring(0, scht.indexOf(' '));\n row[1] = scht.substring(scht.indexOf(' ') + 1);\n const jsonRow = {};\n if (row[0].toUpperCase() === 'FOREIGN') {\n const oPar = scht.indexOf('(');\n const cPar = scht.indexOf(')');\n const fk = scht.substring(oPar + 1, cPar);\n const fknames = fk.split('§');\n row[0] = fknames.join(',');\n row[0] = row[0].replace(/, /g, ',');\n row[1] = scht.substring(cPar + 2);\n jsonRow['foreignkey'] = row[0];\n }\n else if (row[0].toUpperCase() === 'PRIMARY') {\n const oPar = scht.indexOf('(');\n const cPar = scht.indexOf(')');\n const pk = scht.substring(oPar + 1, cPar);\n const pknames = pk.split('§');\n row[0] = 'CPK_' + pknames.join('_');\n row[0] = row[0].replace(/_ /g, '_');\n row[1] = scht;\n jsonRow['constraint'] = row[0];\n }\n else if (row[0].toUpperCase() === 'CONSTRAINT') {\n const tRow = [];\n const row1t = row[1].trim();\n tRow[0] = row1t.substring(0, row1t.indexOf(' '));\n tRow[1] = row1t.substring(row1t.indexOf(' ') + 1);\n row[0] = tRow[0];\n jsonRow['constraint'] = row[0];\n row[1] = tRow[1];\n }\n else {\n jsonRow['column'] = row[0];\n }\n jsonRow['value'] = row[1].replace(/§/g, ',');\n schema.push(jsonRow);\n }\n return Promise.resolve(schema);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n /**\n * GetIndexes\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getIndexes(mDb, tableName) {\n const indexes = [];\n let errmsg = '';\n try {\n let stmt = 'SELECT name,tbl_name,sql FROM sqlite_master WHERE ';\n stmt += `type = 'index' AND tbl_name = '${tableName}' `;\n stmt += `AND sql NOTNULL;`;\n const retIndexes = await this.sqliteUtil.queryAll(mDb, stmt, []);\n if (retIndexes.length > 0) {\n for (const rIndex of retIndexes) {\n const keys = Object.keys(rIndex);\n if (keys.length === 3) {\n if (rIndex['tbl_name'] === tableName) {\n const sql = rIndex['sql'];\n const mode = sql.includes('UNIQUE') ? 'UNIQUE' : '';\n const oPar = sql.lastIndexOf('(');\n const cPar = sql.lastIndexOf(')');\n const index = {};\n index.name = rIndex['name'];\n index.value = sql.slice(oPar + 1, cPar);\n if (mode.length > 0)\n index.mode = mode;\n indexes.push(index);\n }\n else {\n errmsg = `GetIndexes: Table ${tableName} doesn't match`;\n break;\n }\n }\n else {\n errmsg = `GetIndexes: Table ${tableName} creating indexes`;\n break;\n }\n }\n if (errmsg.length > 0) {\n return Promise.reject(errmsg);\n }\n }\n return Promise.resolve(indexes);\n }\n catch (err) {\n return Promise.reject(`GetIndexes: ${err}`);\n }\n }\n /**\n * GetTriggers\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getTriggers(mDb, tableName) {\n const triggers = [];\n try {\n let stmt = 'SELECT name,tbl_name,sql FROM sqlite_master WHERE ';\n stmt += `type = 'trigger' AND tbl_name = '${tableName}' `;\n stmt += `AND sql NOT NULL;`;\n const retTriggers = await this.sqliteUtil.queryAll(mDb, stmt, []);\n if (retTriggers.length > 0) {\n for (const rTrg of retTriggers) {\n const keys = Object.keys(rTrg);\n if (keys.length === 3) {\n if (rTrg['tbl_name'] === tableName) {\n const sql = rTrg['sql'];\n const name = rTrg['name'];\n let sqlArr = sql.split(name);\n if (sqlArr.length != 2) {\n return Promise.reject(`GetTriggers: sql split name does not return 2 values`);\n }\n if (!sqlArr[1].includes(tableName)) {\n return Promise.reject(`GetTriggers: sql split does not contains ${tableName}`);\n }\n const timeEvent = sqlArr[1].split(tableName, 1)[0].trim();\n sqlArr = sqlArr[1].split(timeEvent + ' ' + tableName);\n if (sqlArr.length != 2) {\n return Promise.reject(`GetTriggers: sql split tableName does not return 2 values`);\n }\n let condition = '';\n let logic = '';\n if (sqlArr[1].trim().substring(0, 5).toUpperCase() !== 'BEGIN') {\n sqlArr = sqlArr[1].trim().split('BEGIN');\n if (sqlArr.length != 2) {\n return Promise.reject(`GetTriggers: sql split BEGIN does not return 2 values`);\n }\n condition = sqlArr[0].trim();\n logic = 'BEGIN' + sqlArr[1];\n }\n else {\n logic = sqlArr[1].trim();\n }\n const trigger = {};\n trigger.name = name;\n trigger.logic = logic;\n if (condition.length > 0)\n trigger.condition = condition;\n trigger.timeevent = timeEvent;\n triggers.push(trigger);\n }\n else {\n return Promise.reject(`GetTriggers: Table ${tableName} doesn't match`);\n }\n }\n else {\n return Promise.reject(`GetTriggers: Table ${tableName} creating indexes`);\n }\n }\n }\n return Promise.resolve(triggers);\n }\n catch (err) {\n return Promise.reject(`GetTriggers: ${err}`);\n }\n }\n /**\n * GetTablesPartial\n * @param mDb\n * @param resTables\n */\n async getTablesPartial(mDb, resTables) {\n const tables = [];\n let modTables = {};\n let syncDate = 0;\n let modTablesKeys = [];\n let errmsg = '';\n try {\n // Get the syncDate and the Modified Tables\n const partialModeData = await this.getPartialModeData(mDb, resTables);\n if (Object.keys(partialModeData).includes('syncDate')) {\n syncDate = partialModeData.syncDate;\n }\n if (Object.keys(partialModeData).includes('modTables')) {\n modTables = partialModeData.modTables;\n modTablesKeys = Object.keys(modTables);\n }\n // Loop trough tables\n for (const rTable of resTables) {\n let tableName = '';\n let sqlStmt = '';\n if (rTable.name) {\n tableName = rTable.name;\n }\n else {\n errmsg = 'GetTablesFull: no name';\n break;\n }\n if (rTable.sql) {\n sqlStmt = rTable.sql;\n }\n else {\n errmsg = 'GetTablesFull: no sql';\n break;\n }\n if (modTablesKeys.length == 0 ||\n modTablesKeys.indexOf(tableName) === -1 ||\n modTables[tableName] == 'No') {\n continue;\n }\n const table = {};\n let schema = [];\n let indexes = [];\n let triggers = [];\n table.name = rTable;\n if (modTables[table.name] === 'Create') {\n // create Table's Schema\n schema = await this.getSchema(sqlStmt);\n if (schema.length > 0) {\n // check schema validity\n await this.jsonUtil.checkSchemaValidity(schema);\n }\n // create Table's indexes if any\n indexes = await this.getIndexes(mDb, tableName);\n if (indexes.length > 0) {\n // check indexes validity\n await this.jsonUtil.checkIndexesValidity(indexes);\n }\n // create Table's triggers if any\n triggers = await this.getTriggers(mDb, tableName);\n if (triggers.length > 0) {\n // check triggers validity\n await this.jsonUtil.checkTriggersValidity(triggers);\n }\n }\n // create Table's Data\n let query = '';\n if (modTables[tableName] === 'Create') {\n query = `SELECT * FROM ${tableName};`;\n }\n else {\n query =\n `SELECT * FROM ${tableName} ` +\n `WHERE last_modified > ${syncDate};`;\n }\n const values = await this.jsonUtil.getValues(mDb, query, tableName);\n // check the table object validity\n table.name = tableName;\n if (schema.length > 0) {\n table.schema = schema;\n }\n if (indexes.length > 0) {\n table.indexes = indexes;\n }\n if (triggers.length > 0) {\n table.triggers = triggers;\n }\n if (values.length > 0) {\n table.values = values;\n }\n if (Object.keys(table).length <= 1) {\n errmsg = `GetTablesPartial: table ${tableName} is not a jsonTable`;\n break;\n }\n tables.push(table);\n }\n if (errmsg.length > 0) {\n return Promise.reject(errmsg);\n }\n return Promise.resolve(tables);\n }\n catch (err) {\n return Promise.reject(`GetTablesPartial: ${err}`);\n }\n }\n /**\n * GetPartialModeData\n * @param mDb\n * @param resTables\n */\n async getPartialModeData(mDb, resTables) {\n const retData = {};\n try {\n // get the synchronization date\n const syncDate = await this.getSyncDate(mDb);\n if (syncDate <= 0) {\n return Promise.reject(`GetPartialModeData: no syncDate`);\n }\n // get the tables which have been updated\n // since last synchronization\n const modTables = await this.getTablesModified(mDb, resTables, syncDate);\n if (modTables.length <= 0) {\n return Promise.reject(`GetPartialModeData: no modTables`);\n }\n retData.syncDate = syncDate;\n retData.modTables = modTables;\n return Promise.resolve(retData);\n }\n catch (err) {\n return Promise.reject(`GetPartialModeData: ${err}`);\n }\n }\n async getTablesModified(db, tables, syncDate) {\n let errmsg = '';\n try {\n const retModified = {};\n for (const rTable of tables) {\n let mode;\n // get total count of the table\n let stmt = 'SELECT count(*) AS tcount ';\n stmt += `FROM ${rTable.name};`;\n let retQuery = await this.sqliteUtil.queryAll(db, stmt, []);\n if (retQuery.length != 1) {\n errmsg = 'GetTableModified: total ' + 'count not returned';\n break;\n }\n const totalCount = retQuery[0]['tcount'];\n // get total count of modified since last sync\n stmt = 'SELECT count(*) AS mcount FROM ';\n stmt += `${rTable.name} WHERE last_modified > `;\n stmt += `${syncDate};`;\n retQuery = await this.sqliteUtil.queryAll(db, stmt, []);\n if (retQuery.length != 1)\n break;\n const totalModifiedCount = retQuery[0]['mcount'];\n if (totalModifiedCount === 0) {\n mode = 'No';\n }\n else if (totalCount === totalModifiedCount) {\n mode = 'Create';\n }\n else {\n mode = 'Modified';\n }\n const key = rTable.name;\n retModified[key] = mode;\n }\n if (errmsg.length > 0) {\n return Promise.reject(errmsg);\n }\n return Promise.resolve(retModified);\n }\n catch (err) {\n return Promise.reject(`GetTableModified: ${err}`);\n }\n }\n async modEmbeddedParentheses(sstr) {\n const oParArray = this.indexOfChar(sstr, '(');\n const cParArray = this.indexOfChar(sstr, ')');\n if (oParArray.length != cParArray.length) {\n return Promise.reject(\"ModEmbeddedParentheses: Not same number of '(' & ')'\");\n }\n if (oParArray.length === 0) {\n return Promise.resolve(sstr);\n }\n let resStmt = sstr.substring(0, oParArray[0] - 1);\n for (let i = 0; i < oParArray.length; i++) {\n let str;\n if (i < oParArray.length - 1) {\n if (oParArray[i + 1] < cParArray[i]) {\n str = sstr.substring(oParArray[i] - 1, cParArray[i + 1]);\n i++;\n }\n else {\n str = sstr.substring(oParArray[i] - 1, cParArray[i]);\n }\n }\n else {\n str = sstr.substring(oParArray[i] - 1, cParArray[i]);\n }\n const newS = str.replace(/,/g, '§');\n resStmt += newS;\n if (i < oParArray.length - 1) {\n resStmt += sstr.substring(cParArray[i], oParArray[i + 1] - 1);\n }\n }\n resStmt += sstr.substring(cParArray[cParArray.length - 1], sstr.length);\n return Promise.resolve(resStmt);\n }\n indexOfChar(str, char) {\n const tmpArr = [...str];\n char = char.toLowerCase();\n return tmpArr.reduce((results, elem, idx) => elem.toLowerCase() === char ? [...results, idx] : results, []);\n }\n}\nexports.ExportToJson = ExportToJson;\n//# sourceMappingURL=exportToJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsDrop = void 0;\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nclass UtilsDrop {\n constructor() {\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n }\n /**\n * DropElements\n * @param db\n * @param type [\"table\",\"index\",\"trigger\"]\n */\n async dropElements(db, type) {\n let msg = '';\n let stmt1 = `AND name NOT LIKE ('sqlite_%')`;\n switch (type) {\n case 'index':\n msg = 'DropIndexes';\n break;\n case 'trigger':\n msg = 'DropTriggers';\n break;\n case 'table':\n msg = 'DropTables';\n stmt1 += ` AND name NOT IN ('sync_table')`;\n break;\n case 'view':\n msg = 'DropViews';\n break;\n default:\n return Promise.reject(`DropElements: ${type} ` + 'not found');\n }\n // get the element's names\n let stmt = 'SELECT name FROM sqlite_master WHERE ';\n stmt += `type = '${type}' ${stmt1};`;\n try {\n const elements = await this.sqliteUtil.queryAll(db, stmt, []);\n if (elements.length > 0) {\n const upType = type.toUpperCase();\n const statements = [];\n for (const elem of elements) {\n let stmt = `DROP ${upType} IF EXISTS `;\n stmt += `${elem.name};`;\n statements.push(stmt);\n }\n for (const stmt of statements) {\n const lastId = await this.sqliteUtil.prepareRun(db, stmt, [], false);\n if (lastId < 0) {\n return Promise.reject(`${msg}: lastId < 0`);\n }\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`${msg}: ${err}`);\n }\n }\n /**\n * DropAll\n * Drop all database's elements\n * @param db\n */\n async dropAll(db) {\n try {\n // drop tables\n await this.dropElements(db, 'table');\n // drop indexes\n await this.dropElements(db, 'index');\n // drop triggers\n await this.dropElements(db, 'trigger');\n // drop views\n await this.dropElements(db, 'view');\n // vacuum the database\n await this.sqliteUtil.prepareRun(db, 'VACUUM;', [], false);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`DropAll: ${err}`);\n }\n }\n /**\n * DropTempTables\n * @param db\n * @param alterTables\n */\n async dropTempTables(db, alterTables) {\n const tempTables = Object.keys(alterTables);\n const statements = [];\n for (const tTable of tempTables) {\n let stmt = 'DROP TABLE IF EXISTS ';\n stmt += `_temp_${tTable};`;\n statements.push(stmt);\n }\n try {\n const changes = await this.sqliteUtil.execute(db, statements.join('\\n'), false);\n if (changes < 0) {\n return Promise.reject('DropTempTables: changes < 0');\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`DropTempTables: ${err}`);\n }\n }\n}\nexports.UtilsDrop = UtilsDrop;\n//# sourceMappingURL=utilsDrop.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImportFromJson = void 0;\nconst utilsDrop_1 = require(\"../utilsDrop\");\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nconst utilsJson_1 = require(\"./utilsJson\");\nclass ImportFromJson {\n constructor() {\n this.jsonUtil = new utilsJson_1.UtilsJson();\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n this.dropUtil = new utilsDrop_1.UtilsDrop();\n }\n /**\n * CreateDatabaseSchema\n * @param mDB\n * @param jsonData\n */\n async createDatabaseSchema(mDB, jsonData) {\n let changes = -1;\n const version = jsonData.version;\n try {\n // set User Version PRAGMA\n await this.sqliteUtil.setVersion(mDB, version);\n // DROP ALL when mode=\"full\"\n if (jsonData.mode === 'full') {\n await this.dropUtil.dropAll(mDB);\n }\n // create database schema\n changes = await this.jsonUtil.createSchema(mDB, jsonData);\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject('CreateDatabaseSchema: ' + `${err}`);\n }\n }\n async createTablesData(mDB, jsonData) {\n let changes = 0;\n let isValue = false;\n let lastId = -1;\n let msg = '';\n let initChanges = -1;\n try {\n initChanges = await this.sqliteUtil.dbChanges(mDB);\n // start a transaction\n await this.sqliteUtil.beginTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(`createTablesData: ${err}`);\n }\n for (const jTable of jsonData.tables) {\n if (jTable.values != null && jTable.values.length >= 1) {\n // Create the table's data\n try {\n lastId = await this.jsonUtil.createDataTable(mDB, jTable, jsonData.mode);\n if (lastId < 0)\n break;\n isValue = true;\n }\n catch (err) {\n msg = err;\n isValue = false;\n break;\n }\n }\n }\n if (isValue) {\n try {\n await this.sqliteUtil.commitTransaction(mDB, true);\n changes = (await this.sqliteUtil.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject('createTablesData: ' + `${err}`);\n }\n }\n else {\n if (msg.length > 0) {\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n return Promise.reject(new Error(`createTablesData: ${msg}`));\n }\n catch (err) {\n return Promise.reject('createTablesData: ' + `${err}: ${msg}`);\n }\n }\n else {\n // case were no values given\n return Promise.resolve(0);\n }\n }\n }\n /**\n * CreateViews\n * @param mDB\n * @param jsonData\n */\n async createViews(mDB, jsonData) {\n let isView = false;\n let msg = '';\n let initChanges = -1;\n let changes = -1;\n try {\n initChanges = await this.sqliteUtil.dbChanges(mDB);\n // start a transaction\n await this.sqliteUtil.beginTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(`createViews: ${err}`);\n }\n for (const jView of jsonData.views) {\n if (jView.value != null) {\n // Create the view\n try {\n await this.jsonUtil.createView(mDB, jView);\n isView = true;\n }\n catch (err) {\n msg = err;\n isView = false;\n break;\n }\n }\n }\n if (isView) {\n try {\n await this.sqliteUtil.commitTransaction(mDB, true);\n changes = (await this.sqliteUtil.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject('createViews: ' + `${err}`);\n }\n }\n else {\n if (msg.length > 0) {\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n return Promise.reject(new Error(`createViews: ${msg}`));\n }\n catch (err) {\n return Promise.reject('createViews: ' + `${err}: ${msg}`);\n }\n }\n else {\n // case were no views given\n return Promise.resolve(0);\n }\n }\n }\n}\nexports.ImportFromJson = ImportFromJson;\n//# sourceMappingURL=importFromJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsFile = void 0;\nconst promises_1 = require(\"node:fs/promises\");\nclass UtilsFile {\n constructor() {\n this.pathDB = 'Databases';\n this.Path = null;\n this.NodeFs = null;\n this.NodeFetch = null;\n this.JSZip = null;\n this.Os = null;\n this.Electron = null;\n this.AppName = '';\n this.HomeDir = '';\n this.sep = '/';\n this.Path = require('path');\n this.NodeFs = require('fs');\n this.NodeFetch = require('node-fetch');\n this.Os = require('os');\n this.JSZip = require('jszip');\n this.Electron = require('electron');\n this.HomeDir = this.Os.homedir();\n const dir = __dirname;\n const idx = dir.indexOf('\\\\');\n if (idx != -1)\n this.sep = '\\\\';\n this.appPath = this.Electron.app.getAppPath();\n const rawdata = this.NodeFs.readFileSync(this.Path.resolve(this.appPath, 'package.json'));\n this.AppName = JSON.parse(rawdata).name;\n const pathToBuild = this.Path.join(this.appPath, 'build');\n if (this.NodeFs.existsSync(this.Path.join(pathToBuild, 'capacitor.config.js'))) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n this.capConfig = require(this.Path.join(pathToBuild, 'capacitor.config.js')).default;\n }\n else {\n this.capConfig = JSON.parse(this.NodeFs.readFileSync(this.Path.join(this.appPath, 'capacitor.config.json')).toString());\n }\n this.osType = this.Os.type();\n switch (this.osType) {\n case 'Darwin':\n this.pathDB =\n this.capConfig.plugins.CapacitorSQLite.electronMacLocation;\n break;\n case 'Linux':\n this.pathDB =\n this.capConfig.plugins.CapacitorSQLite.electronLinuxLocation;\n break;\n case 'Windows_NT':\n this.pathDB =\n this.capConfig.plugins.CapacitorSQLite.electronWindowsLocation;\n break;\n default:\n console.log('other operating system');\n }\n console.log(`&&& Databases path: ${this.pathDB}`);\n }\n /**\n * GetExtName\n * @param filePath\n * @returns\n */\n getExtName(filePath) {\n return this.Path.extname(filePath);\n }\n getBaseName(filePath) {\n return this.Path.basename(filePath, this.Path.extname(filePath));\n }\n /**\n * IsPathExists\n * @param filePath\n */\n isPathExists(filePath) {\n let ret = false;\n try {\n if (this.NodeFs.existsSync(filePath)) {\n ret = true;\n }\n }\n catch (err) {\n console.error('Error isFileExist: ' + err);\n ret = false;\n }\n return ret;\n }\n /**\n * IsFileExists\n * @param fileName\n */\n isFileExists(fileName) {\n let ret = false;\n const filePath = this.getFilePath(fileName);\n if (filePath.length > 0) {\n ret = this.isPathExists(filePath);\n }\n return ret;\n }\n /**\n * GetFilePath\n * get the file path\n * @param fileName\n */\n getFilePath(fileName) {\n return this.Path.join(this.getDatabasesPath(), fileName);\n }\n /**\n * GetDatabasesPath\n * get the database folder path\n */\n getDatabasesPath() {\n let retPath = '';\n const sep = this.Path.sep;\n const dbFolder = this.pathDB;\n if (dbFolder.includes(sep)) {\n retPath = dbFolder;\n if (this.Path.basename(dbFolder) !== this.AppName) {\n retPath = this.Path.join(dbFolder, this.AppName);\n }\n }\n else {\n retPath = this.Path.join(this.HomeDir, dbFolder, this.AppName);\n }\n const retB = this._createFolderIfNotExists(retPath);\n if (!retB)\n retPath = '';\n return retPath;\n }\n /**\n * GetCachePath\n * get the database cache folder path\n */\n getCachePath() {\n let retPath = '';\n const databasePath = this.getDatabasesPath();\n retPath = this.Path.join(databasePath, 'cache');\n const retB = this._createFolderIfNotExists(retPath);\n if (!retB)\n retPath = '';\n return retPath;\n }\n /**\n * GetAssetsDatabasesPath\n * get the assets databases folder path\n */\n getAssetsDatabasesPath() {\n let retPath = '';\n const webDir = this.capConfig.webDir;\n const dir = webDir === 'www' ? 'src' : 'public';\n let mAppPath = this.appPath;\n if (this.Path.basename(this.appPath) === 'electron') {\n mAppPath = this.Path.dirname(this.appPath);\n }\n retPath = this.Path.resolve(mAppPath, dir, 'assets', 'databases');\n return retPath;\n }\n /**\n * SetPathSuffix\n * @param db\n */\n setPathSuffix(db) {\n let toDb = db;\n const ext = '.db';\n const dirName = this.Path.dirname(db);\n const baseName = this.getBaseName(db);\n if (this.getExtName(db) === ext) {\n if (!baseName.includes('SQLite')) {\n const dbName = `${baseName}SQLite`;\n toDb = `${this.Path.join(dirName, dbName)}${ext}`;\n }\n }\n return toDb;\n }\n /**\n * GetFileList\n * get the file list for a given folder\n * @param path\n */\n async getFileList(path) {\n const filenames = this.NodeFs.readdirSync(path);\n const dbs = [];\n filenames.forEach((file) => {\n if (this.getExtName(file) == '.db' || this.getExtName(file) == '.zip')\n dbs.push(file);\n });\n return Promise.resolve(dbs);\n }\n /**\n * CopyFromAssetToDatabase\n * @param db\n * @param overwrite\n */\n async copyFromAssetToDatabase(db, overwrite) {\n const pAsset = this.Path.join(this.getAssetsDatabasesPath(), db);\n const toDb = this.setPathSuffix(db);\n const pDb = this.Path.join(this.getDatabasesPath(), toDb);\n await this.copyFilePath(pAsset, pDb, overwrite);\n return Promise.resolve();\n }\n /**\n * unzipDatabase\n * @param db\n * @param overwrite\n */\n async unzipDatabase(db, fPath, overwrite) {\n const pZip = this.Path.join(fPath, db);\n // Read the Zip file\n this.NodeFs.readFile(pZip, (err, data) => {\n if (err) {\n console.log(err);\n return Promise.reject(`unzipDatabase ${JSON.stringify(err)}`);\n }\n const zip = new this.JSZip();\n zip.loadAsync(data).then((contents) => {\n Object.keys(contents.files).forEach(filename => {\n zip\n .file(filename)\n .async('nodebuffer')\n .then(async (content) => {\n const toDb = this.setPathSuffix(filename);\n const pDb = this.Path.join(this.getDatabasesPath(), toDb);\n // check filePath exists\n const isPath = this.isPathExists(pDb);\n if (!isPath || overwrite) {\n if (overwrite && isPath) {\n await this.deleteFilePath(pDb);\n }\n this.NodeFs.writeFileSync(pDb, content);\n }\n return Promise.resolve();\n });\n });\n });\n });\n }\n /**\n * CopyFileName\n * Copy file name\n * @param fileName\n * @param toFileName\n */\n async copyFileName(fileName, toFileName) {\n // get File Paths\n const filePath = this.getFilePath(fileName);\n const toFilePath = this.getFilePath(toFileName);\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n try {\n await this.copyFilePath(filePath, toFilePath, true);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`CopyFileName: ${err}`);\n }\n }\n else {\n return Promise.reject('CopyFileName: cannot get the ' + 'filePath');\n }\n }\n /**\n * CopyFilePath\n * Copy file Path\n * @param filePath\n * @param toFilePath\n */\n async copyFilePath(filePath, toFilePath, overwrite) {\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n // check filePath exists\n const isPath = this.isPathExists(toFilePath);\n if (!isPath || overwrite) {\n try {\n if (overwrite && isPath) {\n await this.deleteFilePath(toFilePath);\n }\n this.NodeFs.copyFileSync(filePath, toFilePath);\n }\n catch (err) {\n return Promise.reject(`CopyFilePath: ${err}`);\n }\n }\n return Promise.resolve();\n }\n else {\n return Promise.reject('CopyFilePath: cannot get the ' + 'filePath');\n }\n }\n async copyFile(fromPath, fromFile, toPath, toFile) {\n const fPath = this.Path.join(fromPath, fromFile);\n const tPath = this.Path.join(toPath, toFile);\n try {\n this.NodeFs.copyFileSync(fPath, tPath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`CopyFile: ${err}`);\n }\n }\n /**\n * DeleteFileName\n * Delete a file by its name\n * @param fileName\n */\n async deleteFileName(fileName) {\n // get file path\n const filePath = this.getFilePath(fileName);\n if (filePath.length !== 0) {\n try {\n await this.deleteFilePath(filePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject('DeleteFileName: delete filePath ' + `failed ${err}`);\n }\n }\n else {\n return Promise.reject('DeleteFileName: get filePath ' + 'failed');\n }\n }\n /**\n * DeleteFilePath\n * Delete a file by its path\n * @param filePath\n */\n async deleteFilePath(filePath) {\n let unlinkRetries = 50000;\n /**\n * On windows, the file lock behaves unpredictable. Often it claims a databsae file is locked / busy, although\n * the file stream is already closed.\n * Even though we already checked the status with the `waitForFilePathLock()` method previously.\n *\n * The only way to handle this reliably is to retry deletion until it works.\n */\n const deleteFile = async () => {\n try {\n await promises_1.unlink(filePath);\n }\n catch (err) {\n unlinkRetries--;\n if (unlinkRetries > 0) {\n await deleteFile();\n }\n else {\n throw err;\n }\n }\n };\n if (filePath.length !== 0) {\n // check if path exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n try {\n await this.waitForFilePathLock(filePath);\n // actually delete the file\n await deleteFile();\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`DeleteFilePath: ${err}`);\n }\n }\n else {\n return Promise.resolve();\n }\n }\n else {\n return Promise.reject('DeleteFilePath: delete filePath' + 'failed');\n }\n }\n async waitForFilePathLock(filePath, timeoutMS = 4000) {\n let timeIsOver = false;\n setTimeout(() => {\n timeIsOver = true;\n }, timeoutMS);\n return new Promise((resolve, reject) => {\n const check = async () => {\n if (timeIsOver) {\n reject(new Error(`WaitForFilePathLock: The resource is still locked / busy after ${timeoutMS} milliseconds.`));\n return;\n }\n // check if path exists\n const isPath = this.isPathExists(filePath);\n // The file path does not exist. A non existant path cannot be locked.\n if (!isPath) {\n resolve();\n return;\n }\n try {\n const stream = await promises_1.open(filePath, 'r+');\n // We need to close the stream afterwards, because otherwise, we're locking the file\n await stream.close();\n resolve();\n }\n catch (err) {\n if (err.code === 'EBUSY') {\n // The resource is busy. Retry in 100ms\n setTimeout(() => {\n check();\n }, 100);\n return;\n }\n else if (err.code === 'ENOENT') {\n // The file does not exist (anymore). So it cannot be locked.\n resolve();\n return;\n }\n else {\n // Something else went wrong.\n reject(new Error(`WaitForFilePathLock: Error while checking the file: ${err}`));\n }\n }\n };\n check();\n });\n }\n /**\n * RenameFileName\n * @param fileName\n * @param toFileName\n */\n async renameFileName(fileName, toFileName) {\n // get File Paths\n const filePath = this.getFilePath(fileName);\n const toFilePath = this.getFilePath(toFileName);\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n try {\n await this.renameFilePath(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`RenameFileName: ${err}`);\n }\n }\n else {\n return Promise.reject('RenameFileName: filePaths do not ' + 'exist');\n }\n }\n /**\n * RenameFilePath\n * @param filePath\n * @param toFilePath\n */\n async renameFilePath(filePath, toFilePath) {\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n // check filePath exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n // delete toFilePath if exists\n try {\n await this.deleteFilePath(toFilePath);\n this.NodeFs.renameSync(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject('RenameFilePath: ' + `${err}`);\n }\n }\n else {\n return Promise.reject(`RenameFilePath: ${filePath} does not exist`);\n }\n }\n else {\n return Promise.reject('RenameFilePath: filePath not found');\n }\n }\n async moveDatabaseFromCache() {\n const cachePath = this.getCachePath();\n const databasePath = this.getDatabasesPath();\n const dbCacheList = await this.getFileList(cachePath);\n for (const name of dbCacheList) {\n const ext = this.getExtName(name);\n const fromDBName = this.Path.join(cachePath, name);\n if (ext === '.db') {\n const pDb = this.setPathSuffix(this.Path.join(databasePath, name));\n try {\n await this.renameFilePath(fromDBName, pDb);\n }\n catch (err) {\n return Promise.reject('moveDatabaseFromCache: ' + `${err}`);\n }\n }\n if (ext === '.zip') {\n try {\n await this.deleteFilePath(fromDBName);\n }\n catch (err) {\n return Promise.reject('moveDatabaseFromCache: ' + `${err}`);\n }\n }\n }\n }\n /**\n * RestoreFileName\n * @param fileName\n * @param prefix\n */\n async restoreFileName(fileName, prefix) {\n const mFileName = `${prefix}-${fileName}`;\n // check if file exists\n const isFilePre = this.isFileExists(mFileName);\n if (isFilePre) {\n const isFile = this.isFileExists(fileName);\n if (isFile) {\n try {\n await this.deleteFileName(fileName);\n await this.renameFileName(mFileName, fileName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject('RestoreFileName: ' + `${err}`);\n }\n }\n else {\n return Promise.reject(`RestoreFileName: ${fileName} ` + 'does not exist');\n }\n }\n else {\n return Promise.reject(`RestoreFileName: ${mFileName} ` + 'does not exist');\n }\n }\n /**\n * DownloadFileFromHTTP\n * @param url\n * @param path\n */\n async downloadFileFromHTTP(url, pathFolder) {\n const res = await this.NodeFetch(url);\n const ext = this.getExtName(url);\n const dbName = this.getBaseName(url);\n const filePath = `${this.Path.join(pathFolder, dbName)}${ext}`;\n const fileStream = this.NodeFs.createWriteStream(filePath);\n await new Promise((resolve, reject) => {\n res.body.pipe(fileStream);\n res.body.on('error', reject);\n fileStream.on('finish', resolve);\n });\n }\n /**\n * CreateFolderIfNotExists\n * Create directory\n * @param folder\n */\n _createFolderIfNotExists(folder) {\n let ret;\n try {\n if (!this.NodeFs.existsSync(folder)) {\n this._mkdirSyncRecursive(folder);\n }\n ret = true;\n }\n catch (e) {\n console.log('Error: in getDBPath', e);\n ret = false;\n }\n return ret;\n }\n /**\n * MkdirSyncRecursive\n * Create directories recursively\n * @param directory\n */\n _mkdirSyncRecursive(directory) {\n const sep = this.Path.sep;\n const path = directory.replace(/\\/$/, '').split(sep);\n for (let i = 1; i <= path.length; i++) {\n const segment = path.slice(0, i).join(sep);\n segment.length > 0 && !this.NodeFs.existsSync(segment)\n ? this.NodeFs.mkdirSync(segment)\n : null;\n }\n return;\n }\n}\nexports.UtilsFile = UtilsFile;\n//# sourceMappingURL=utilsFile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsUpgrade = void 0;\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nclass UtilsUpgrade {\n constructor() {\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n }\n /**\n * OnUpgrade\n * @param mDB\n * @param vUpgDict\n * @param dbName\n * @param curVersion\n * @param targetVersion\n */\n async onUpgrade(mDB, vUpgDict, curVersion, targetVersion) {\n let changes;\n const sortedKeys = new Int32Array(Object.keys(vUpgDict).map(item => parseInt(item))).sort();\n console.log(`@@@ sortedKeys: ${sortedKeys}`);\n for (const versionKey of sortedKeys) {\n if (versionKey > curVersion && versionKey <= targetVersion) {\n const statements = vUpgDict[versionKey].statements;\n if (statements.length === 0) {\n return Promise.reject('onUpgrade: statements not given');\n }\n try {\n // set Foreign Keys Off\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(mDB, false);\n const initChanges = await this.sqliteUtil.dbChanges(mDB);\n await this.executeStatementsProcess(mDB, statements);\n await this.sqliteUtil.setVersion(mDB, versionKey);\n // set Foreign Keys On\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(mDB, true);\n changes = (await this.sqliteUtil.dbChanges(mDB)) - initChanges;\n }\n catch (err) {\n console.log(`@@@@ onUpgrade: ${err}`);\n return Promise.reject(`onUpgrade: ${err}`);\n }\n }\n }\n return Promise.resolve(changes);\n }\n /**\n * ExecuteStatementProcess\n * @param mDB\n * @param statements\n */\n async executeStatementsProcess(mDB, statements) {\n try {\n await this.sqliteUtil.beginTransaction(mDB, true);\n for (const statement of statements) {\n console.log(`@@@ statement: ${statement}`);\n await this.sqliteUtil.execute(mDB, statement, false);\n }\n await this.sqliteUtil.commitTransaction(mDB, true);\n return Promise.resolve();\n }\n catch (err) {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n console.log(`@@@ ExecuteStatementProcess: ${err}`);\n return Promise.reject(`ExecuteStatementProcess: ${err}`);\n }\n }\n}\nexports.UtilsUpgrade = UtilsUpgrade;\n//# sourceMappingURL=utilsUpgrade.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Database = void 0;\nconst exportToJson_1 = require(\"./ImportExportJson/exportToJson\");\nconst importFromJson_1 = require(\"./ImportExportJson/importFromJson\");\nconst utilsJson_1 = require(\"./ImportExportJson/utilsJson\");\n//import { UtilsEncryption } from './utilsEncryption';\nconst utilsFile_1 = require(\"./utilsFile\");\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nconst utilsUpgrade_1 = require(\"./utilsUpgrade\");\nclass Database {\n constructor(dbName, \n // encrypted: boolean,\n // mode: string,\n version, readonly, upgDict) {\n this.fileUtil = new utilsFile_1.UtilsFile();\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n this.jsonUtil = new utilsJson_1.UtilsJson();\n // private _uGlobal: GlobalSQLite = new GlobalSQLite();\n // private _uEncrypt: UtilsEncryption = new UtilsEncryption();\n this.upgradeUtil = new utilsUpgrade_1.UtilsUpgrade();\n this.importFromJsonUtil = new importFromJson_1.ImportFromJson();\n this.exportToJsonUtil = new exportToJson_1.ExportToJson();\n this.upgradeVersionDict = {};\n this.dbName = dbName;\n // this._encrypted = encrypted;\n // this._mode = mode;\n this.version = version;\n this.readonly = readonly;\n this.upgradeVersionDict = upgDict;\n this.pathDB = this.fileUtil.getFilePath(dbName);\n this._isDbOpen = false;\n if (this.pathDB.length === 0)\n throw new Error('Could not generate a path to ' + dbName);\n }\n /**\n * IsDBOpen\n * return the database status\n * @param options: capSQLiteOptions\n * @returns boolean\n * @since 0.0.1\n */\n isDBOpen() {\n return this._isDbOpen;\n }\n /**\n * Open\n * open the @journeyapps/sqlcipher sqlite3 database\n * @returns Promise<boolean>\n */\n async open() {\n this._isDbOpen = false;\n // let password = '';\n try {\n /*\n if (\n this._encrypted &&\n (this._mode === 'secret' || this._mode === 'encryption')\n ) {\n password = this._uGlobal.secret;\n }\n if (this._mode === 'newsecret') {\n // change the password\n const oPassword: string = this._uGlobal.secret;\n const nPassword: string = this._uGlobal.newsecret;\n await this._uSQLite.changePassword(this._pathDB, oPassword, nPassword);\n password = nPassword;\n }\n \n if (this._mode === 'encryption') {\n await this._uEncrypt.encryptDatabase(this._pathDB, password);\n }\n */\n this.database = await this.sqliteUtil.openOrCreateDatabase(this.pathDB /*,\n password,*/, this.readonly);\n this._isDbOpen = true;\n if (!this.readonly) {\n const curVersion = await this.sqliteUtil.getVersion(this.database);\n console.log(`@@@@ this.readonly: ${this.readonly}`);\n console.log(`@@@@ this.version: ${this.version} curVersion: ${curVersion}`);\n if (this.version > curVersion &&\n Object.keys(this.upgradeVersionDict).length > 0) {\n try {\n await this.fileUtil.copyFileName(this.dbName, `backup-${this.dbName}`);\n // execute the upgrade flow process\n await this.upgradeUtil.onUpgrade(this.database, this.upgradeVersionDict, curVersion, this.version);\n // delete the backup database\n await this.fileUtil.deleteFileName(`backup-${this.dbName}`);\n }\n catch (err) {\n // restore the database from backup\n try {\n await this.fileUtil.restoreFileName(this.dbName, 'backup');\n }\n catch (err) {\n throw new Error(`Open: ${err}`);\n }\n }\n }\n }\n return;\n }\n catch (err) {\n if (this._isDbOpen)\n this.close();\n throw new Error(`Open: ${err}`);\n }\n }\n /**\n * Close\n * close the @journeyapps/sqlcipher sqlite3 database\n * @returns Promise<boolean>\n */\n async close() {\n this.ensureDatabaseIsOpen();\n return new Promise((resolve, reject) => {\n this.database.close((err) => {\n if (err) {\n reject(new Error(`Close failed: ${this.dbName} ${err}`));\n return;\n }\n this._isDbOpen = false;\n resolve();\n });\n });\n }\n /**\n * GetVersion\n * get the database version\n * @returns Promise<number>\n */\n async getVersion() {\n this.ensureDatabaseIsOpen();\n try {\n const currentVersion = await this.sqliteUtil.getVersion(this.database);\n return currentVersion;\n }\n catch (err) {\n if (this._isDbOpen)\n this.close();\n throw new Error(`getVersion: ${err}`);\n }\n }\n /**\n * DeleteDB\n * delete a database\n * @param dbName: string\n * @returns Promise<boolean>\n */\n async deleteDB(dbName) {\n // test if file exists\n const isExists = this.fileUtil.isFileExists(dbName);\n if (isExists && !this._isDbOpen) {\n // open the database\n try {\n await this.open();\n }\n catch (err) {\n throw new Error(`DeleteDB: ${err}`);\n }\n }\n // close the database\n try {\n await this.close();\n }\n catch (err) {\n throw new Error('DeleteDB: Close failed');\n }\n // delete the database\n if (isExists) {\n try {\n await this.fileUtil.deleteFileName(dbName);\n }\n catch (err) {\n throw new Error(`DeleteDB: deleteFile ${dbName} failed ${err}`);\n }\n }\n return;\n }\n /**\n * IsTableExists\n * @param tableName\n * @returns\n */\n async isTableExists(tableName) {\n this.ensureDatabaseIsOpen();\n const isOpen = this._isDbOpen;\n try {\n const tableExistsResult = await this.jsonUtil.isTableExists(this.database, isOpen, tableName);\n return tableExistsResult;\n }\n catch (err) {\n throw new Error(`IsTableExists: ${err}`);\n }\n }\n /**\n * CreateSyncTable\n * create the synchronization table\n * @returns Promise<number>\n */\n async createSyncTable() {\n this.ensureDatabaseIsOpen();\n let changes = -1;\n const isOpen = this._isDbOpen;\n // check if the table has already being created\n try {\n const retB = await this.jsonUtil.isTableExists(this.database, isOpen, 'sync_table');\n if (!retB) {\n const isLastModified = await this.sqliteUtil.isLastModified(this.database, isOpen);\n const isSqlDeleted = await this.sqliteUtil.isSqlDeleted(this.database, isOpen);\n if (isLastModified && isSqlDeleted) {\n const date = Math.round(new Date().getTime() / 1000);\n let stmts = `\n CREATE TABLE IF NOT EXISTS sync_table (\n id INTEGER PRIMARY KEY NOT NULL,\n sync_date INTEGER\n );`;\n stmts += `INSERT INTO sync_table (sync_date) VALUES (\n \"${date}\");`;\n changes = await this.sqliteUtil.execute(this.database, stmts, false);\n if (changes < 0) {\n throw new Error(`CreateSyncTable: failed changes < 0`);\n }\n }\n else {\n throw new Error('No last_modified/sql_deleted columns in tables');\n }\n }\n else {\n changes = 0;\n }\n return changes;\n }\n catch (err) {\n throw new Error(`CreateSyncTable: ${err}`);\n }\n }\n /**\n * SetSyncDate\n * store the synchronization date\n * @param syncDate: string\n * @returns Promise<{result: boolean, message: string}>\n */\n async setSyncDate(syncDate) {\n this.ensureDatabaseIsOpen();\n try {\n const isTable = await this.jsonUtil.isTableExists(this.database, this._isDbOpen, 'sync_table');\n if (!isTable) {\n throw new Error('No sync_table available');\n }\n const syncDateUnixTimestamp = Math.round(new Date(syncDate).getTime() / 1000);\n let stmt = `UPDATE sync_table SET sync_date = `;\n stmt += `${syncDateUnixTimestamp} WHERE id = 1;`;\n const changes = await this.sqliteUtil.execute(this.database, stmt, false);\n if (changes < 0) {\n return { result: false, message: 'setSyncDate failed' };\n }\n else {\n return { result: true };\n }\n }\n catch (err) {\n return { result: false, message: `setSyncDate failed: ${err}` };\n }\n }\n /**\n * GetSyncDate\n * store the synchronization date\n * @returns Promise<{syncDate: number, message: string}>\n */\n async getSyncDate() {\n this.ensureDatabaseIsOpen();\n try {\n const isTable = await this.jsonUtil.isTableExists(this.database, this._isDbOpen, 'sync_table');\n if (!isTable) {\n throw new Error('No sync_table available');\n }\n const syncDate = await this.exportToJsonUtil.getSyncDate(this.database);\n if (syncDate > 0) {\n return { syncDate };\n }\n else {\n return { syncDate: 0, message: `setSyncDate failed` };\n }\n }\n catch (err) {\n return { syncDate: 0, message: `setSyncDate failed: ${err}` };\n }\n }\n /**\n * ExecuteSQL\n * execute raw sql statements store in a string\n * @param sql: string\n * @returns Promise<number>\n */\n async executeSQL(sql, transaction) {\n this.ensureDatabaseIsOpen();\n try {\n if (transaction) {\n const mode = await this.sqliteUtil.getJournalMode(this.database);\n console.log(`$$$ in executeSQL journal_mode: ${mode} $$$`);\n await this.sqliteUtil.beginTransaction(this.database, this._isDbOpen);\n }\n const changes = await this.sqliteUtil.execute(this.database, sql, false);\n if (changes < 0) {\n throw new Error('ExecuteSQL: changes < 0');\n }\n if (transaction) {\n await this.sqliteUtil.commitTransaction(this.database, this._isDbOpen);\n }\n return changes;\n }\n catch (executeError) {\n let message = `${executeError}`;\n try {\n if (transaction) {\n await this.sqliteUtil.rollbackTransaction(this.database, this._isDbOpen);\n }\n }\n catch (rollbackErr) {\n message += ` : ${rollbackErr}`;\n }\n throw new Error(`ExecuteSQL: ${message}`);\n }\n }\n /**\n * SelectSQL\n * execute a sql query with/without binding values\n * @param sql: string\n * @param values: string[]\n * @returns Promise<any[]>\n */\n async selectSQL(sql, values) {\n this.ensureDatabaseIsOpen();\n try {\n const selectResult = await this.sqliteUtil.queryAll(this.database, sql, values);\n return selectResult;\n }\n catch (err) {\n throw new Error(`SelectSQL: ${err}`);\n }\n }\n /**\n * runSQL\n * execute a raw sql statement with/without binding values\n * @param sql: string\n * @param values: string[]\n * @returns Promise<{changes:number, lastId:number}>\n */\n async runSQL(statement, values, transaction) {\n this.ensureDatabaseIsOpen();\n const result = { changes: -1, lastId: -1 };\n let initChanges = -1;\n try {\n initChanges = await this.sqliteUtil.dbChanges(this.database);\n // start a transaction\n if (transaction) {\n const mode = await this.sqliteUtil.getJournalMode(this.database);\n console.log(`$$$ in runSQL journal_mode: ${mode} $$$`);\n await this.sqliteUtil.beginTransaction(this.database, this._isDbOpen);\n }\n }\n catch (err) {\n throw new Error(`RunSQL: ${err}`);\n }\n try {\n const lastId = await this.sqliteUtil.prepareRun(this.database, statement, values, false);\n if (lastId < 0) {\n if (transaction) {\n await this.sqliteUtil.rollbackTransaction(this.database, this._isDbOpen);\n }\n throw new Error(`RunSQL: return LastId < 0`);\n }\n if (transaction) {\n await this.sqliteUtil.commitTransaction(this.database, this._isDbOpen);\n }\n result.changes =\n (await this.sqliteUtil.dbChanges(this.database)) - initChanges;\n result.lastId = lastId;\n return result;\n }\n catch (err) {\n if (transaction) {\n await this.sqliteUtil.rollbackTransaction(this.database, this._isDbOpen);\n }\n throw new Error(`RunSQL: ${err}`);\n }\n }\n /**\n * ExecSet\n * execute a set of raw sql statements with/without binding values\n * @param set: any[]\n * @returns Promise<{changes:number, lastId:number}>\n */\n async execSet(set, transaction) {\n this.ensureDatabaseIsOpen();\n const result = { changes: -1, lastId: -1 };\n let initChanges = -1;\n try {\n initChanges = await this.sqliteUtil.dbChanges(this.database);\n // start a transaction\n if (transaction) {\n const mode = await this.sqliteUtil.getJournalMode(this.database);\n console.log(`$$$ in execSet journal_mode: ${mode} $$$`);\n await this.sqliteUtil.beginTransaction(this.database, this._isDbOpen);\n }\n }\n catch (err) {\n throw new Error(`ExecSet: ${err}`);\n }\n try {\n result.lastId = await this.sqliteUtil.executeSet(this.database, set, false);\n if (transaction) {\n await this.sqliteUtil.commitTransaction(this.database, this._isDbOpen);\n }\n result.changes =\n (await this.sqliteUtil.dbChanges(this.database)) - initChanges;\n return result;\n }\n catch (err) {\n const message = err;\n try {\n if (transaction) {\n await this.sqliteUtil.rollbackTransaction(this.database, this._isDbOpen);\n }\n }\n catch (err) {\n throw new Error(`ExecSet: ${message}: ` + `${err}`);\n }\n }\n }\n async deleteExportedRows() {\n this.ensureDatabaseIsOpen();\n try {\n await this.exportToJsonUtil.delExportedRows(this.database);\n return;\n }\n catch (err) {\n throw new Error(`DeleteExportedRows: ${err}`);\n }\n }\n /**\n * GetTableList\n * get the table's list\n * @returns\n */\n async getTableList() {\n this.ensureDatabaseIsOpen();\n try {\n const tableNames = await this.sqliteUtil.getTablesNames(this.database);\n return tableNames;\n }\n catch (err) {\n throw new Error(`GetTableList: ${err}`);\n }\n }\n async importJson(jsonData) {\n let changes = 0;\n this.ensureDatabaseIsOpen();\n try {\n // set Foreign Keys Off\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(this.database, false);\n if (jsonData.tables && jsonData.tables.length > 0) {\n // create the database schema\n changes = await this.importFromJsonUtil.createDatabaseSchema(this.database, jsonData);\n if (changes != -1) {\n // create the tables data\n changes += await this.importFromJsonUtil.createTablesData(this.database, jsonData);\n }\n }\n if (jsonData.views && jsonData.views.length > 0) {\n // create the views\n changes += await this.importFromJsonUtil.createViews(this.database, jsonData);\n }\n // set Foreign Keys On\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(this.database, true);\n return changes;\n }\n catch (err) {\n throw new Error(`ImportJson: ${err}`);\n }\n }\n async exportJson(mode) {\n const inJson = {};\n inJson.database = this.dbName.slice(0, -9);\n inJson.version = this.version;\n inJson.encrypted = false;\n inJson.mode = mode;\n this.ensureDatabaseIsOpen();\n try {\n const isTable = await this.jsonUtil.isTableExists(this.database, this._isDbOpen, 'sync_table');\n if (isTable) {\n await this.exportToJsonUtil.setLastExportDate(this.database, new Date().toISOString());\n }\n const jsonResult = await this.exportToJsonUtil.createExportObject(this.database, inJson);\n const keys = Object.keys(jsonResult);\n if (keys.length === 0) {\n const msg = `ExportJson: return Object is empty ` + `No data to synchronize`;\n throw new Error(msg);\n }\n const isValid = this.jsonUtil.isJsonSQLite(jsonResult);\n if (isValid) {\n return jsonResult;\n }\n else {\n throw new Error(`ExportJson: retJson not valid`);\n }\n }\n catch (err) {\n throw new Error(`ExportJson: ${err}`);\n }\n }\n /**\n * Throws an error if `this._isDbOpen` is `false`.\n */\n ensureDatabaseIsOpen() {\n if (!this._isDbOpen || !this.database) {\n throw new Error(`getVersion: Database ${this.dbName} is not open yet. You should open it first.`);\n }\n }\n}\nexports.Database = Database;\n//# sourceMappingURL=Database.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CapacitorSQLite = void 0;\nconst Database_1 = require(\"./electron-utils/Database\");\nconst utilsJson_1 = require(\"./electron-utils/ImportExportJson/utilsJson\");\nconst utilsFile_1 = require(\"./electron-utils/utilsFile\");\nclass CapacitorSQLite {\n constructor() {\n this.versionUpgrades = {};\n this.databases = {};\n this.fileUtil = new utilsFile_1.UtilsFile();\n this.jsonUtil = new utilsJson_1.UtilsJson();\n }\n async createConnection(options) {\n const optionKeys = Object.keys(options);\n if (!optionKeys.includes('database')) {\n throw new Error('Must provide a database name');\n }\n const dbName = options.database;\n const version = options.version ? options.version : 1;\n /* const encrypted = false;\n const inMode = \"no-encryption\";\n \n const encrypted: boolean =\n options.encrypted && this._osType === 'Darwin'\n ? options.encrypted\n : false;\n const inMode: string =\n options.mode && this._osType === 'Darwin'\n ? options.mode\n : 'no-encryption';\n */\n const readonly = options.readonly ? options.readonly : false;\n let upgrades = {};\n const versionUpgradeKeys = Object.keys(this.versionUpgrades);\n if (versionUpgradeKeys.length !== 0 &&\n versionUpgradeKeys.includes(dbName)) {\n upgrades = this.versionUpgrades[dbName];\n }\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const databaseConnection = new Database_1.Database(dbName + 'SQLite.db', \n /* encrypted,\n inMode,\n */\n version, readonly, upgrades);\n this.databases[connName] = databaseConnection;\n return;\n }\n async closeConnection(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n // close the database\n try {\n await database.close();\n }\n catch (err) {\n throw new Error(`CloseConnection command failed: close ${dbName} failed ${err.message}`);\n }\n }\n // remove the connection from dictionary\n delete this.databases[connName];\n }\n async echo(options) {\n const echoValue = this.getOptionValue(options, 'value');\n const echoResult = {};\n echoResult.value = echoValue;\n return echoResult;\n }\n async open(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n try {\n await database.open();\n return;\n }\n catch (err) {\n throw new Error(`Open: ${err}`);\n }\n }\n async close(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n await database.close();\n return;\n }\n catch (err) {\n throw new Error(`Close: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`Close: ${msg}`);\n }\n }\n async getVersion(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const version = await database.getVersion();\n const versionResult = {};\n versionResult.version = version;\n return versionResult;\n }\n catch (err) {\n throw new Error(`GetVersion: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`GetVersion: ${msg}`);\n }\n }\n async getTableList(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const tableList = await database.getTableList();\n const tableListResult = {};\n tableListResult.values = tableList;\n return tableListResult;\n }\n catch (err) {\n throw new Error(`GetTableList: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`GetTableList: ${msg}`);\n }\n }\n async execute(options) {\n const dbName = this.getOptionValue(options, 'database');\n const statements = this.getOptionValue(options, 'statements');\n const transaction = this.getOptionValue(options, 'transaction', true);\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`Execute: ${msg}`);\n }\n try {\n const executeResult = await database.executeSQL(statements, transaction);\n if (executeResult < 0) {\n throw new Error('Execute changes < 0');\n }\n else {\n return { changes: { changes: executeResult } };\n }\n }\n catch (err) {\n throw new Error(`Execute: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`Execute: ${msg}`);\n }\n }\n async executeSet(options) {\n const dbName = this.getOptionValue(options, 'database');\n const setOfStatements = this.getOptionValue(options, 'set');\n const transaction = this.getOptionValue(options, 'transaction', true);\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n for (const sStmt of setOfStatements) {\n if (!('statement' in sStmt) || !('values' in sStmt)) {\n throw new Error('ExecuteSet: Must provide a set as ' + 'Array of {statement,values}');\n }\n }\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`ExecuteSet failed: ${msg}`);\n }\n try {\n const execSetResult = await database.execSet(setOfStatements, transaction);\n if (execSetResult < 0) {\n throw new Error(`ExecuteSet failed changes <0`);\n }\n else {\n return { changes: execSetResult };\n }\n }\n catch (err) {\n throw new Error(`ExecuteSet failed: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`ExecuteSet failed: ${msg}`);\n }\n }\n async run(options) {\n const dbName = this.getOptionValue(options, 'database');\n const statement = this.getOptionValue(options, 'statement');\n const values = this.getOptionValue(options, 'values', []);\n const transaction = this.getOptionValue(options, 'transaction', true);\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`Run failed: ${msg}`);\n }\n try {\n const runResult = await database.runSQL(statement, values, transaction);\n return { changes: runResult };\n }\n catch (err) {\n throw new Error(`RUN failed: ${err} `);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`Run failed: ${msg}`);\n }\n }\n async query(options) {\n const dbName = this.getOptionValue(options, 'database');\n const statement = this.getOptionValue(options, 'statement');\n const values = this.getOptionValue(options, 'values', []);\n if (statement.length === 0) {\n throw new Error('Query: Statement may not be an empty string.');\n }\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const queryResult = await database.selectSQL(statement, values);\n return { values: queryResult };\n }\n catch (err) {\n throw new Error(`Query: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`Query: ${msg}`);\n }\n }\n async isDBExists(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n this.getDatabaseConnectionOrThrowError(connName);\n // if (database.isDBOpen()) {\n const isExists = this.fileUtil.isFileExists(dbName + 'SQLite.db');\n return { result: isExists };\n // } else {\n // const msg = `Database ${dbName} not opened`;\n // throw new Error(`isDBExists: ${msg}`);\n // }\n }\n async isDBOpen(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n const isOpen = database.isDBOpen();\n return { result: isOpen };\n }\n async isDatabase(options) {\n const dbName = this.getOptionValue(options, 'database');\n const isExists = this.fileUtil.isFileExists(dbName + 'SQLite.db');\n return { result: isExists };\n }\n async isTableExists(options) {\n const dbName = this.getOptionValue(options, 'database');\n const tableName = this.getOptionValue(options, 'table');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const isTableExistsResult = await database.isTableExists(tableName);\n return { result: isTableExistsResult };\n }\n catch (err) {\n throw new Error(`isTableExists: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`isTableExists: ${msg}`);\n }\n }\n async deleteDatabase(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`DeleteDatabase failed: ${msg}`);\n }\n try {\n await database.deleteDB(dbName + 'SQLite.db');\n return;\n }\n catch (err) {\n throw new Error(`DeleteDatabase: ${err}`);\n }\n }\n async isJsonValid(options) {\n const jsonString = this.getOptionValue(options, 'jsonstring');\n const jsonObj = JSON.parse(jsonString);\n const isValid = this.jsonUtil.isJsonSQLite(jsonObj);\n if (!isValid) {\n throw new Error('Stringify Json Object not Valid');\n }\n else {\n return { result: true };\n }\n }\n async importFromJson(options) {\n var _a, _b;\n const jsonString = this.getOptionValue(options, 'jsonstring');\n const jsonObj = JSON.parse(jsonString);\n const isValid = this.jsonUtil.isJsonSQLite(jsonObj);\n if (!isValid) {\n throw new Error('Must provide a valid JsonSQLite Object');\n }\n const vJsonObj = jsonObj;\n const dbName = `${vJsonObj.database}SQLite.db`;\n const targetDbVersion = (_a = vJsonObj.version) !== null && _a !== void 0 ? _a : 1;\n const mode = vJsonObj.mode;\n const overwrite = (_b = vJsonObj.overwrite) !== null && _b !== void 0 ? _b : false;\n // const encrypted: boolean = vJsonObj.encrypted ?? false;\n // const mode: string = encrypted ? 'secret' : 'no-encryption';\n // Create the database\n const database = new Database_1.Database(dbName, \n /*encrypted, mode, */\n targetDbVersion, false, {});\n try {\n if (overwrite && mode === 'full') {\n const isExists = this.fileUtil.isFileExists(dbName);\n if (isExists) {\n await this.fileUtil.deleteFileName(dbName);\n }\n }\n // Open the database\n await database.open();\n const tableList = await database.getTableList();\n if (mode === 'full' && tableList.length > 0) {\n const currentVersion = await database.getVersion();\n if (targetDbVersion < currentVersion) {\n throw new Error(`ImportFromJson: Cannot import a version lower than ${currentVersion}`);\n }\n if (currentVersion === targetDbVersion) {\n return { changes: { changes: 0 } };\n }\n }\n // Import the JsonSQLite Object\n const changes = await database.importJson(vJsonObj);\n // Close the database\n await database.close();\n return { changes: { changes: changes } };\n }\n catch (err) {\n throw new Error(`ImportFromJson: ${err}`);\n }\n }\n async exportToJson(options) {\n const dbName = this.getOptionValue(options, 'database');\n const exportMode = this.getOptionValue(options, 'jsonexportmode');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const exportJsonResult = await database.exportJson(exportMode);\n const resultKeys = Object.keys(exportJsonResult);\n if (resultKeys.includes('message')) {\n throw new Error(`exportToJson: ${exportJsonResult.message}`);\n }\n else {\n return { export: exportJsonResult };\n }\n }\n catch (err) {\n throw new Error(`ExportToJson: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`ExportToJson: ${msg}`);\n }\n }\n async createSyncTable(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`CreateSyncTable failed: ${msg}`);\n }\n try {\n const createTableSyncResult = await database.createSyncTable();\n return {\n changes: { changes: createTableSyncResult },\n };\n }\n catch (err) {\n throw new Error(`CreateSyncTable: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`CreateSyncTable: ${msg}`);\n }\n }\n async setSyncDate(options) {\n const dbName = this.getOptionValue(options, 'database');\n const syncDate = this.getOptionValue(options, 'syncdate');\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`SetSyncDate failed: ${msg}`);\n }\n try {\n await database.setSyncDate(syncDate);\n return;\n }\n catch (err) {\n throw new Error(`SetSyncDate: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`SetSyncDate: ${msg}`);\n }\n }\n async getSyncDate(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const ret = await database.getSyncDate();\n return Promise.resolve(ret);\n }\n catch (err) {\n throw new Error(`GetSyncDate: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`GetSyncDate: ${msg}`);\n }\n }\n async deleteExportedRows(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`DeleteExportedRows: ${msg}`);\n }\n try {\n await database.deleteExportedRows();\n return Promise.resolve();\n }\n catch (err) {\n throw new Error(`DeleteExportedRows: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`DeleteExportedRows: ${msg}`);\n }\n }\n async addUpgradeStatement(options) {\n const dbName = this.getOptionValue(options, 'database');\n const upgrades = this.getOptionValue(options, 'upgrade');\n for (const upgrade of upgrades) {\n const versionUpgradeKeys = Object.keys(upgrade);\n if (!versionUpgradeKeys.includes('toVersion') ||\n !versionUpgradeKeys.includes('statements')) {\n throw new Error('Must provide an upgrade capSQLiteVersionUpgrade Object');\n }\n if (typeof upgrade.toVersion != 'number') {\n throw new Error('upgrade.toVersion must be a number');\n }\n if (this.versionUpgrades[dbName]) {\n this.versionUpgrades[dbName][upgrade.toVersion] = upgrade;\n }\n else {\n const upgradeVersionDict = {};\n upgradeVersionDict[upgrade.toVersion] = upgrade;\n this.versionUpgrades[dbName] = upgradeVersionDict;\n }\n }\n console.log(`this.versionUpgrades: ${JSON.stringify(this.versionUpgrades)}`);\n return;\n }\n async copyFromAssets(options) {\n const overwrite = this.getOptionValue(options, 'overwrite', false);\n // check if the assets/database folder exists\n const assetsDbPath = this.fileUtil.getAssetsDatabasesPath();\n const pathExists = this.fileUtil.isPathExists(assetsDbPath);\n if (pathExists) {\n // get the database files\n const dbList = await this.fileUtil.getFileList(assetsDbPath);\n // loop through the database files\n dbList.forEach(async (db) => {\n if (this.fileUtil.getExtName(db) === '.db') {\n // for each copy the file to the Application database folder\n await this.fileUtil.copyFromAssetToDatabase(db, overwrite);\n }\n if (this.fileUtil.getExtName(db) === '.zip') {\n const assetPath = this.fileUtil.getAssetsDatabasesPath();\n await this.fileUtil.unzipDatabase(db, assetPath, overwrite);\n }\n });\n return;\n }\n else {\n throw new Error(`CopyFromAssets: assets/databases folder does not exist:[${assetsDbPath}]`);\n }\n }\n async getFromHTTPRequest(options) {\n const url = this.getOptionValue(options, 'url', '');\n const overwrite = this.getOptionValue(options, 'overwrite', false);\n if (url.length === 0) {\n throw new Error(`getFromHTTPRequest: You must give a database url`);\n }\n const cachePath = this.fileUtil.getCachePath();\n await this.fileUtil.downloadFileFromHTTP(url, cachePath);\n if (this.fileUtil.getExtName(url) === '.zip') {\n const zipName = `${this.fileUtil.getBaseName(url)}.zip`;\n await this.fileUtil.unzipDatabase(zipName, cachePath, overwrite);\n }\n if (overwrite) {\n await this.fileUtil.moveDatabaseFromCache();\n }\n else {\n throw new Error(`getFromHTTPRequest: cannot move file from cache overwrite: ${overwrite}`);\n }\n }\n async getDatabaseList() {\n // get the database folder\n const pathDatabase = this.fileUtil.getDatabasesPath();\n // get the list of databases\n const files = await this.fileUtil.getFileList(pathDatabase);\n if (files.length > 0) {\n return { values: files };\n }\n else {\n throw new Error(`isTableExists: No databases found in [${pathDatabase}]`);\n }\n }\n async checkConnectionsConsistency(options) {\n const dbNames = this.getOptionValue(options, 'dbNames');\n const openModes = this.getOptionValue(options, 'openModes');\n const checkConsistencyResult = {};\n checkConsistencyResult.result = false;\n const dbConns = [];\n dbNames.forEach((value, i) => {\n dbConns.push(`${openModes[i]}_${value}`);\n });\n try {\n let inConnectionsSet = new Set(Object.keys(this.databases));\n const outConnectionSet = new Set(dbConns);\n if (outConnectionSet.size === 0) {\n await this.resetDbDict(Object.keys(this.databases));\n return Promise.resolve(checkConsistencyResult);\n }\n if (inConnectionsSet.size < outConnectionSet.size) {\n await this.resetDbDict(Object.keys(this.databases));\n return Promise.resolve(checkConsistencyResult);\n }\n if (inConnectionsSet.size > outConnectionSet.size) {\n for (const key of inConnectionsSet) {\n if (!Array.from(outConnectionSet.keys()).includes(key)) {\n const opt = {};\n let readonly = false;\n if (key.substring(0, 3) === 'RO_') {\n readonly = true;\n }\n opt.database = key.substring(3);\n opt.readonly = readonly;\n await this.closeConnection(opt);\n }\n }\n }\n inConnectionsSet = new Set(Object.keys(this.databases));\n if (inConnectionsSet.size === outConnectionSet.size) {\n const symmetricDifferenceSet = await this.symmetricDifference(inConnectionsSet, outConnectionSet);\n if (symmetricDifferenceSet.size === 0) {\n checkConsistencyResult.result = true;\n return checkConsistencyResult;\n }\n else {\n await this.resetDbDict(Object.keys(this.databases));\n return checkConsistencyResult;\n }\n }\n else {\n await this.resetDbDict(Object.keys(this.databases));\n return checkConsistencyResult;\n }\n }\n catch (err) {\n throw new Error(`CheckConnectionsConsistency: ${err}`);\n }\n }\n async resetDbDict(keys) {\n try {\n for (const key of keys) {\n const opt = {};\n let readonly = false;\n if (key.substring(0, 3) === 'RO_') {\n readonly = true;\n }\n opt.database = key.substring(3);\n opt.readonly = readonly;\n await this.closeConnection(opt);\n }\n }\n catch (err) {\n throw new Error(`ResetDbDict: ${err}`);\n }\n }\n async symmetricDifference(setA, setB) {\n const difference = new Set(setA);\n for (const elem of setB) {\n if (difference.has(elem)) {\n difference.delete(elem);\n }\n else {\n difference.add(elem);\n }\n }\n return difference;\n }\n /**\n * Returns a database connection, if it already exists.\n * If the conneciton does not exist yet, it throws an error.\n *\n * @param dbName\n * @returns\n */\n getDatabaseConnectionOrThrowError(dbName) {\n const databaseNames = Object.keys(this.databases);\n if (!databaseNames.includes(dbName)) {\n throw new Error(`No connection available for database \"${dbName}\"`);\n }\n return this.databases[dbName];\n }\n /**\n * Gets the value of an option from the options object.\n * If the `optionKey` does not exist and there is no `defaultValue` defined, an exception is thrown.\n * If the `optionKey` does not exist but there is a `defaultValue`, the `defaultValue` is returned.\n *\n * @param options\n * @param optionKey\n * @param defaultValue\n * @returns\n */\n getOptionValue(options, optionKey, defaultValue = undefined) {\n const optionKeys = Object.keys(options);\n if (!optionKeys.includes(optionKey)) {\n if (defaultValue === undefined) {\n throw new Error(`Must provide \"${optionKey}\" in options.`);\n }\n else {\n return defaultValue;\n }\n }\n return options[optionKey];\n }\n ////////////////////////////////\n //// UNIMPLEMENTED METHODS\n ////////////////////////////////\n async getMigratableDbList(options) {\n console.log('getCordovaDbList', options);\n throw new Error('Method not implemented.');\n }\n async addSQLiteSuffix(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async deleteOldDatabases(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async moveDatabasesAndAddSuffix(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async getUrl() {\n throw new Error('Method not implemented.');\n }\n async initWebStore() {\n throw new Error('Method not implemented.');\n }\n async saveToStore(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async saveToLocalDisk(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async getFromLocalDiskToStore(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async isSecretStored() {\n throw new Error('Method not implemented.');\n }\n async setEncryptionSecret(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async changeEncryptionSecret(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async clearEncryptionSecret() {\n console.log('clearEncryptionSecret');\n throw new Error('Method not implemented.');\n }\n async checkEncryptionSecret(options) {\n console.log('checkEncryptionSecret', options);\n throw new Error('Method not implemented.');\n }\n async getNCDatabasePath(options) {\n console.log('getNCDatabasePath', options);\n throw new Error('Method not implemented.');\n }\n async createNCConnection(options) {\n console.log('createNCConnection', options);\n throw new Error('Method not implemented.');\n }\n async closeNCConnection(options) {\n console.log('closeNCConnection', options);\n throw new Error('Method not implemented.');\n }\n async isNCDatabase(options) {\n console.log('isNCDatabase', options);\n throw new Error('Method not implemented.');\n }\n async isDatabaseEncrypted(options) {\n console.log('isDatabaseEncrypted', options);\n throw new Error('Not implemented on web.');\n }\n async isInConfigEncryption() {\n throw new Error('Not implemented on web.');\n }\n async isInConfigBiometricAuth() {\n throw new Error('Not implemented on web.');\n }\n}\nexports.CapacitorSQLite = CapacitorSQLite;\n//# sourceMappingURL=index.js.map"],"names":["require$$0","utilsSQLite_1","utilsJson_1","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","Database_1","utilsFile_1","CapacitorSQLite_1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../build/electron/src/GlobalSQLite.js","../build/electron/src/electron-utils/utilsSQLite.js","../build/electron/src/electron-utils/ImportExportJson/utilsJson.js","../build/electron/src/electron-utils/ImportExportJson/exportToJson.js","../build/electron/src/electron-utils/utilsDrop.js","../build/electron/src/electron-utils/ImportExportJson/importFromJson.js","../build/electron/src/electron-utils/utilsFile.js","../build/electron/src/electron-utils/utilsEncryption.js","../build/electron/src/electron-utils/utilsUpgrade.js","../build/electron/src/electron-utils/Database.js","../build/electron/src/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GlobalSQLite = void 0;\nclass GlobalSQLite {\n constructor() {\n this.secret = 'sqlite secret';\n this.newsecret = 'sqlite new secret';\n }\n}\nexports.GlobalSQLite = GlobalSQLite;\n//# sourceMappingURL=GlobalSQLite.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsSQLite = void 0;\nconst SQLITE_OPEN_READONLY = 1;\nclass UtilsSQLite {\n // public SQLite3: any;\n constructor() {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n this.JSQlite = require('@journeyapps/sqlcipher').verbose();\n // this.SQLite3 = require('sqlite3');\n }\n /**\n * OpenOrCreateDatabase\n * @param pathDB\n * @param password\n */\n async openOrCreateDatabase(pathDB, password, readonly) {\n const msg = 'OpenOrCreateDatabase: ';\n // open sqlite3 database\n let mDB;\n if (!readonly) {\n mDB = new this.JSQlite.Database(pathDB, {\n verbose: console.log,\n });\n }\n else {\n mDB = new this.JSQlite.Database(pathDB, SQLITE_OPEN_READONLY, {\n verbose: console.log,\n });\n }\n if (mDB != null) {\n try {\n await this.dbChanges(mDB);\n }\n catch (err) {\n return Promise.reject(msg + `dbChanges ${err}`);\n }\n try {\n // set the password\n if (password.length > 0) {\n await this.setCipherPragma(mDB, password);\n }\n // set Foreign Keys On\n await this.setForeignKeyConstraintsEnabled(mDB, true);\n }\n catch (err) {\n return Promise.reject(msg + `${err}`);\n }\n return Promise.resolve(mDB);\n }\n else {\n return Promise.reject(msg + 'open database failed');\n }\n }\n /**\n * SetCipherPragma\n * @param mDB\n * @param password\n */\n async setCipherPragma(mDB, password) {\n console.log(\"setCipherPragma\");\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.run('PRAGMA cipher_compatibility = 4');\n mDB.run(`PRAGMA key = '${password}'`, (err) => {\n if (err) {\n reject(new Error('SetForeignKey: ' + `${err.message}`));\n }\n resolve();\n });\n });\n });\n }\n /**\n * SetForeignKeyConstraintsEnabled\n * @param mDB\n * @param toggle\n */\n async setForeignKeyConstraintsEnabled(mDB, toggle) {\n return new Promise((resolve, reject) => {\n let key = 'OFF';\n if (toggle) {\n key = 'ON';\n }\n mDB.run(`PRAGMA foreign_keys = '${key}'`, (err) => {\n if (err) {\n reject(`SetForeignKey: ${err.message}`);\n }\n resolve();\n });\n });\n }\n /**\n * GetVersion\n * @param mDB\n */\n async getVersion(mDB) {\n return new Promise((resolve, reject) => {\n let version = 0;\n const SELECT_VERSION = 'PRAGMA user_version;';\n mDB.get(SELECT_VERSION, [], (err, row) => {\n // process the row here\n if (err) {\n reject('getVersion failed: ' + `${err.message}`);\n }\n else {\n if (row == null) {\n version = 0;\n }\n else {\n const key = Object.keys(row)[0];\n version = row[key];\n }\n resolve(version);\n }\n });\n });\n }\n /**\n * SetVersion\n * @param mDB\n * @param version\n */\n async setVersion(mDB, version) {\n return new Promise((resolve, reject) => {\n mDB.run(`PRAGMA user_version = ${version}`, (err) => {\n if (err) {\n reject('setVersion failed: ' + `${err.message}`);\n }\n resolve();\n });\n });\n }\n /**\n * ChangePassword\n * @param pathDB\n * @param password\n * @param newpassword\n */\n async changePassword(pathDB, password, newpassword) {\n let mDB;\n try {\n mDB = await this.openOrCreateDatabase(pathDB, password, false);\n await this.pragmaReKey(mDB, password, newpassword);\n }\n catch (err) {\n return Promise.reject(err);\n }\n finally {\n mDB.close();\n }\n }\n /**\n * PragmaReKey\n * @param mDB\n * @param password\n * @param newpassword\n */\n async pragmaReKey(mDB, password, newpassword) {\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.run('PRAGMA cipher_compatibility = 4');\n mDB.run(`PRAGMA key = '${password}'`);\n mDB.run(`PRAGMA rekey = '${newpassword}'`, (err) => {\n if (err) {\n reject(new Error('ChangePassword: ' + `${err.message}`));\n }\n resolve();\n });\n });\n });\n }\n /**\n * BeginTransaction\n * @param db\n * @param isOpen\n */\n async beginTransaction(db, isOpen) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise((resolve, reject) => {\n const msg = 'BeginTransaction: ';\n if (!isOpen) {\n return Promise.reject(`${msg}database not opened`);\n }\n const sql = 'BEGIN TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(`${msg}${err.message}`);\n }\n resolve();\n });\n });\n }\n /**\n * RollbackTransaction\n * @param db\n * @param isOpen\n */\n async rollbackTransaction(db, isOpen) {\n return new Promise((resolve, reject) => {\n const msg = 'RollbackTransaction: ';\n if (!isOpen) {\n reject(`${msg}database not opened`);\n }\n const sql = 'ROLLBACK TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(`${msg}${err.message}`);\n }\n resolve();\n });\n });\n }\n /**\n * CommitTransaction\n * @param db\n * @param isOpen\n */\n async commitTransaction(db, isOpen) {\n return new Promise((resolve, reject) => {\n const msg = 'CommitTransaction: ';\n if (!isOpen) {\n reject(`${msg}database not opened`);\n }\n const sql = 'COMMIT TRANSACTION;';\n db.run(sql, (err) => {\n if (err) {\n reject(`${msg}${err.message}`);\n }\n resolve();\n });\n });\n }\n /**\n * DbChanges\n * return total number of changes\n * @param db\n */\n async dbChanges(db) {\n return new Promise((resolve, reject) => {\n const SELECT_CHANGE = 'SELECT total_changes()';\n let changes = 0;\n db.get(SELECT_CHANGE, [], (err, row) => {\n // process the row here\n if (err) {\n reject(`DbChanges failed: ${err.message}`);\n }\n else {\n if (row == null) {\n changes = 0;\n }\n else {\n const key = Object.keys(row)[0];\n changes = row[key];\n }\n resolve(changes);\n }\n });\n });\n }\n /**\n * GetLastId\n * @param db\n */\n getLastId(db) {\n return new Promise((resolve, reject) => {\n const SELECT_LAST_ID = 'SELECT last_insert_rowid()';\n let lastId = -1;\n db.get(SELECT_LAST_ID, [], (err, row) => {\n // process the row here\n if (err) {\n reject(`GetLastId failed: ${err.message}`);\n }\n else {\n if (row == null)\n resolve(lastId);\n const key = Object.keys(row)[0];\n lastId = row[key];\n resolve(lastId);\n }\n });\n });\n }\n /**\n * Execute\n * @param mDB\n * @param sql\n */\n async execute(mDB, sql, fromJson) {\n let changes = -1;\n let initChanges = -1;\n try {\n initChanges = await this.dbChanges(mDB);\n let sqlStmt = sql;\n // Check for DELETE FROM in sql string\n if (!fromJson &&\n sql.toLowerCase().includes('DELETE FROM'.toLowerCase())) {\n sqlStmt = sql.replace(/\\n/g, '');\n const sqlStmts = sqlStmt.split(';');\n const resArr = [];\n for (const stmt of sqlStmts) {\n const trimStmt = stmt\n .trim()\n .substring(0, Math.min(stmt.trim().length, 11))\n .toUpperCase();\n if (trimStmt === 'DELETE FROM' &&\n stmt.toLowerCase().includes('WHERE'.toLowerCase())) {\n const whereStmt = `${stmt.trim()};`;\n const rStmt = await this.deleteSQL(mDB, whereStmt, []);\n resArr.push(rStmt);\n }\n else {\n resArr.push(stmt);\n }\n }\n sqlStmt = resArr.join(';');\n }\n await this.execDB(mDB, sqlStmt);\n changes = (await this.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n const msg = err.message ? err.message : err;\n return Promise.reject(`Execute: ${msg}`);\n }\n }\n /**\n * ExecDB\n * @param mDB\n * @param sql\n */\n async execDB(mDB, sql) {\n return new Promise((resolve, reject) => {\n mDB.exec(sql, async (err) => {\n if (err) {\n console.log(`in execDB err: ${JSON.stringify(err)}`);\n reject(`Execute: ${err}: `);\n }\n resolve();\n });\n });\n }\n /**\n * ExecuteSet\n * @param db\n * @param set\n */\n async executeSet(db, set, fromJson) {\n let lastId = -1;\n for (let i = 0; i < set.length; i++) {\n const statement = 'statement' in set[i] ? set[i].statement : null;\n const values = 'values' in set[i] && set[i].values.length > 0 ? set[i].values : [];\n if (statement == null) {\n let msg = 'ExecuteSet: Error Nostatement';\n msg += ` for index ${i}`;\n return Promise.reject(msg);\n }\n try {\n if (Array.isArray(values[0])) {\n for (const val of values) {\n const mVal = await this.replaceUndefinedByNull(val);\n lastId = await this.prepareRun(db, statement, mVal, fromJson);\n }\n }\n else {\n const mVal = await this.replaceUndefinedByNull(values);\n lastId = await this.prepareRun(db, statement, mVal, fromJson);\n }\n }\n catch (err) {\n return Promise.reject(`ExecuteSet: ${err}`);\n }\n }\n return Promise.resolve(lastId);\n }\n /**\n * PrepareRun\n * @param db\n * @param statement\n * @param values\n */\n async prepareRun(db, statement, values, fromJson) {\n const stmtType = statement\n .replace(/\\n/g, '')\n .trim()\n .substring(0, 6)\n .toUpperCase();\n let sqlStmt = statement;\n let lastId = -1;\n try {\n if (!fromJson && stmtType === 'DELETE') {\n sqlStmt = await this.deleteSQL(db, statement, values);\n }\n let mVal = [];\n if (values != null && values.length > 0) {\n mVal = await this.replaceUndefinedByNull(values);\n }\n await this.runExec(db, sqlStmt, mVal);\n lastId = await this.getLastId(db);\n return Promise.resolve(lastId);\n }\n catch (err) {\n return Promise.reject(`PrepareRun: ${err}`);\n }\n }\n async runExec(db, stmt, values = []) {\n return new Promise((resolve, reject) => {\n if (values != null && values.length > 0) {\n ``;\n db.run(stmt, values, (err) => {\n if (err) {\n console.log(`in runExec err1: ${JSON.stringify(err)}`);\n const msg = err.message ? err.message : err;\n reject(msg);\n }\n else {\n resolve();\n }\n });\n }\n else {\n db.exec(stmt, (err) => {\n if (err) {\n console.log(`in runExec err2: ${JSON.stringify(err)}`);\n const msg = err.message ? err.message : err;\n reject(msg);\n }\n else {\n resolve();\n }\n });\n }\n });\n }\n /**\n * replaceUndefinedByNull\n * @param values\n * @returns\n */\n async replaceUndefinedByNull(values) {\n const retValues = [];\n if (values.length > 0) {\n for (const val of values) {\n let mVal = val;\n if (typeof val === 'undefined')\n mVal = null;\n retValues.push(mVal);\n }\n }\n return Promise.resolve(retValues);\n }\n /**\n * deleteSQL\n * @param db\n * @param statement\n * @param values\n * @returns\n */\n async deleteSQL(db, statement, values) {\n let sqlStmt = statement;\n try {\n const isLast = await this.isLastModified(db, true);\n const isDel = await this.isSqlDeleted(db, true);\n if (isLast && isDel) {\n // Replace DELETE by UPDATE and set sql_deleted to 1\n const wIdx = statement.toUpperCase().indexOf('WHERE');\n const preStmt = statement.substring(0, wIdx - 1);\n const clauseStmt = statement.substring(wIdx, statement.length);\n const tableName = preStmt\n .substring('DELETE FROM'.length)\n .trim();\n sqlStmt = `UPDATE ${tableName} SET sql_deleted = 1 ${clauseStmt}`;\n // Find REFERENCES if any and update the sql_deleted column\n await this.findReferencesAndUpdate(db, tableName, clauseStmt, values);\n }\n return sqlStmt;\n }\n catch (err) {\n return Promise.reject(`DeleteSQL: ${err}`);\n }\n }\n /**\n * findReferencesAndUpdate\n * @param db\n * @param tableName\n * @param whereStmt\n * @param values\n * @returns\n */\n async findReferencesAndUpdate(db, tableName, whereStmt, values) {\n try {\n const references = await this.getReferences(db, tableName);\n if (references.length <= 0) {\n return;\n }\n const tableNameWithRefs = references.pop();\n for (const refe of references) {\n // get the tableName of the reference\n const refTable = await this.getReferenceTableName(refe);\n if (refTable.length <= 0) {\n continue;\n }\n // get the with references columnName\n const withRefsNames = await this.getWithRefsColumnName(refe);\n if (withRefsNames.length <= 0) {\n continue;\n }\n // get the referenced columnName\n const colNames = await this.getReferencedColumnName(refe);\n if (colNames.length <= 0) {\n continue;\n }\n // update the where clause\n const uWhereStmt = await this.updateWhere(whereStmt, withRefsNames, colNames);\n if (uWhereStmt.length <= 0) {\n continue;\n }\n let updTableName = tableNameWithRefs;\n let updColNames = colNames;\n if (tableNameWithRefs === tableName) {\n updTableName = refTable;\n updColNames = withRefsNames;\n }\n //update sql_deleted for this reference\n const stmt = 'UPDATE ' + updTableName + ' SET sql_deleted = 1 ' + uWhereStmt;\n if (values != null && values.length > 0) {\n const mVal = await this.replaceUndefinedByNull(values);\n let arrVal = whereStmt.split('?');\n if (arrVal[arrVal.length - 1] === ';')\n arrVal = arrVal.slice(0, -1);\n const selValues = [];\n for (const [j, val] of arrVal.entries()) {\n for (const updVal of updColNames) {\n const idxVal = val.indexOf(updVal);\n if (idxVal > -1) {\n selValues.push(mVal[j]);\n }\n }\n }\n await db.run(stmt, selValues);\n }\n else {\n await db.exec(stmt);\n }\n const lastId = await this.getLastId(db);\n if (lastId == -1) {\n const msg = `UPDATE sql_deleted failed for references table: ${refTable}`;\n return Promise.reject(new Error(`findReferencesAndUpdate: ${msg}`));\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(new Error(`findReferencesAndUpdate: ${err.message}`));\n }\n }\n async getReferenceTableName(refValue) {\n let tableName = '';\n if (refValue.length > 0) {\n const arr = refValue.split(new RegExp('REFERENCES', 'i'));\n if (arr.length === 2) {\n const oPar = arr[1].indexOf('(');\n tableName = arr[1].substring(0, oPar).trim();\n }\n }\n return tableName;\n }\n async getReferencedColumnName(refValue) {\n let colNames = [];\n if (refValue.length > 0) {\n const arr = refValue.split(new RegExp('REFERENCES', 'i'));\n if (arr.length === 2) {\n const oPar = arr[1].indexOf('(');\n const cPar = arr[1].indexOf(')');\n const colStr = arr[1].substring(oPar + 1, cPar).trim();\n colNames = colStr.split(',');\n }\n }\n return colNames;\n }\n async getWithRefsColumnName(refValue) {\n let colNames = [];\n if (refValue.length > 0) {\n const arr = refValue.split(new RegExp('REFERENCES', 'i'));\n if (arr.length === 2) {\n const oPar = arr[0].indexOf('(');\n const cPar = arr[0].indexOf(')');\n const colStr = arr[0].substring(oPar + 1, cPar).trim();\n colNames = colStr.split(',');\n }\n }\n return colNames;\n }\n async updateWhere(whStmt, withRefsNames, colNames) {\n let whereStmt = '';\n if (whStmt.length > 0) {\n const index = whStmt.toLowerCase().indexOf('WHERE'.toLowerCase());\n const stmt = whStmt.substring(index + 6);\n if (withRefsNames.length === colNames.length) {\n for (let i = 0; i < withRefsNames.length; i++) {\n let colType = 'withRefsNames';\n let idx = stmt.indexOf(withRefsNames[i]);\n if (idx === -1) {\n idx = stmt.indexOf(colNames[i]);\n colType = 'colNames';\n }\n if (idx > -1) {\n let valStr = '';\n const fEqual = stmt.indexOf('=', idx);\n if (fEqual > -1) {\n const iAnd = stmt.indexOf('AND', fEqual);\n const ilAnd = stmt.indexOf('and', fEqual);\n if (iAnd > -1) {\n valStr = stmt.substring(fEqual + 1, iAnd - 1).trim();\n }\n else if (ilAnd > -1) {\n valStr = stmt.substring(fEqual + 1, ilAnd - 1).trim();\n }\n else {\n valStr = stmt.substring(fEqual + 1, stmt.length).trim();\n }\n if (i > 0) {\n whereStmt += ' AND ';\n }\n if (colType === 'withRefsNames') {\n whereStmt += `${colNames[i]} = ${valStr}`;\n }\n else {\n whereStmt += `${withRefsNames[i]} = ${valStr}`;\n }\n }\n }\n }\n whereStmt = 'WHERE ' + whereStmt;\n }\n }\n return whereStmt;\n }\n async getReferences(db, tableName) {\n const sqlStmt = 'SELECT sql FROM sqlite_master ' +\n \"WHERE sql LIKE('%FOREIGN KEY%') AND sql LIKE('%REFERENCES%') AND \" +\n \"sql LIKE('%\" +\n tableName +\n \"%') AND sql LIKE('%ON DELETE%');\";\n try {\n const res = await this.queryAll(db, sqlStmt, []);\n // get the reference's string(s)\n let retRefs = [];\n if (res.length > 0) {\n retRefs = await this.getRefs(res[0].sql);\n }\n return Promise.resolve(retRefs);\n }\n catch (err) {\n return Promise.reject(new Error(`getReferences: ${err.message}`));\n }\n }\n async getRefs(str) {\n const retRefs = [];\n const arrFor = str.split(new RegExp('FOREIGN KEY', 'i'));\n // Loop through Foreign Keys\n for (let i = 1; i < arrFor.length; i++) {\n retRefs.push(arrFor[i].split(new RegExp('ON DELETE', 'i'))[0].trim());\n }\n // find table name with references\n if (str.substring(0, 12).toLowerCase() === 'CREATE TABLE'.toLowerCase()) {\n const oPar = str.indexOf('(');\n const tableName = str.substring(13, oPar).trim();\n retRefs.push(tableName);\n }\n return retRefs;\n }\n /**\n * QueryAll\n * @param mDB\n * @param sql\n * @param values\n */\n queryAll(mDB, sql, values) {\n return new Promise((resolve, reject) => {\n mDB.serialize(() => {\n mDB.all(sql, values, (err, rows) => {\n if (err) {\n reject(`QueryAll: ${err.message}`);\n }\n else {\n if (rows == null) {\n rows = [];\n }\n resolve(rows);\n }\n });\n });\n });\n }\n /**\n * GetTablesNames\n * @param mDb\n */\n async getTablesNames(mDb) {\n let sql = 'SELECT name FROM sqlite_master WHERE ';\n sql += \"type='table' AND name NOT LIKE 'sync_table' \";\n sql += \"AND name NOT LIKE '_temp_%' \";\n sql += \"AND name NOT LIKE 'sqlite_%' \";\n sql += 'ORDER BY rootpage DESC;';\n const retArr = [];\n try {\n const retQuery = await this.queryAll(mDb, sql, []);\n for (const query of retQuery) {\n retArr.push(query.name);\n }\n return Promise.resolve(retArr);\n }\n catch (err) {\n return Promise.reject(`getTablesNames: ${err}`);\n }\n }\n /**\n * GetViewsNames\n * @param mDb\n */\n async getViewsNames(mDb) {\n let sql = 'SELECT name FROM sqlite_master WHERE ';\n sql += \"type='view' AND name NOT LIKE 'sqlite_%' \";\n sql += 'ORDER BY rootpage DESC;';\n const retArr = [];\n try {\n const retQuery = await this.queryAll(mDb, sql, []);\n for (const query of retQuery) {\n retArr.push(query.name);\n }\n return Promise.resolve(retArr);\n }\n catch (err) {\n return Promise.reject(`getViewsNames: ${err}`);\n }\n }\n /**\n * isLastModified\n * @param db\n * @param isOpen\n */\n async isLastModified(db, isOpen) {\n if (!isOpen) {\n return Promise.reject('isLastModified: database not opened');\n }\n try {\n const tableList = await this.getTablesNames(db);\n for (const table of tableList) {\n const tableNamesTypes = await this.getTableColumnNamesTypes(db, table);\n const tableColumnNames = tableNamesTypes.names;\n if (tableColumnNames.includes('last_modified')) {\n return Promise.resolve(true);\n }\n }\n }\n catch (err) {\n return Promise.reject(`isLastModified: ${err}`);\n }\n }\n /**\n * isSqlDeleted\n * @param db\n * @param isOpen\n */\n async isSqlDeleted(db, isOpen) {\n if (!isOpen) {\n return Promise.reject('isSqlDeleted: database not opened');\n }\n try {\n const tableList = await this.getTablesNames(db);\n for (const table of tableList) {\n const tableNamesTypes = await this.getTableColumnNamesTypes(db, table);\n const tableColumnNames = tableNamesTypes.names;\n if (tableColumnNames.includes('sql_deleted')) {\n return Promise.resolve(true);\n }\n }\n }\n catch (err) {\n return Promise.reject(`isSqlDeleted: ${err}`);\n }\n }\n async getJournalMode(mDB) {\n let resQuery = [];\n let retMode = 'delete';\n const query = `PRAGMA journal_mode;`;\n try {\n resQuery = await this.queryAll(mDB, query, []);\n if (resQuery.length === 1) {\n for (const query of resQuery) {\n retMode = query.journal_mode;\n }\n }\n return retMode;\n }\n catch (err) {\n return Promise.reject('GetJournalMode: ' + `${err}`);\n }\n }\n /**\n * GetTableColumnNamesTypes\n * @param mDB\n * @param tableName\n */\n async getTableColumnNamesTypes(mDB, tableName) {\n let resQuery = [];\n const retNames = [];\n const retTypes = [];\n const query = `PRAGMA table_info('${tableName}');`;\n try {\n resQuery = await this.queryAll(mDB, query, []);\n if (resQuery.length > 0) {\n for (const query of resQuery) {\n retNames.push(query.name);\n retTypes.push(query.type);\n }\n }\n return Promise.resolve({ names: retNames, types: retTypes });\n }\n catch (err) {\n return Promise.reject('GetTableColumnNamesTypes: ' + `${err}`);\n }\n }\n}\nexports.UtilsSQLite = UtilsSQLite;\n//# sourceMappingURL=utilsSQLite.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsJson = void 0;\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nclass UtilsJson {\n constructor() {\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n }\n /**\n * IsTableExists\n * @param db\n * @param isOpen\n * @param tableName\n */\n async isTableExists(db, isOpen, tableName) {\n return new Promise((resolve, reject) => {\n if (!isOpen) {\n reject('isTableExists: database not opened');\n }\n let query = 'SELECT name FROM sqlite_master WHERE ';\n query += `type='table' AND name='${tableName}';`;\n db.all(query, [], (err, rows) => {\n // process the row here\n if (err) {\n reject(`isTableExists: failed: ${err.message}`);\n }\n else {\n if (rows.length === 0) {\n resolve(false);\n }\n else {\n resolve(true);\n }\n }\n });\n });\n }\n /**\n * IsViewExists\n * @param db\n * @param isOpen\n * @param viewName\n */\n async isViewExists(db, isOpen, viewName) {\n return new Promise((resolve, reject) => {\n if (!isOpen) {\n reject('isViewExists: database not opened');\n }\n let query = 'SELECT name FROM sqlite_master WHERE ';\n query += `type='view' AND name='${viewName}';`;\n db.all(query, [], (err, rows) => {\n // process the row here\n if (err) {\n reject(`isViewExists: failed: ${err.message}`);\n }\n else {\n if (rows.length === 0) {\n resolve(false);\n }\n else {\n resolve(true);\n }\n }\n });\n });\n }\n /**\n * CreateSchema\n * @param mDB\n * @param jsonData\n */\n async createSchema(mDB, jsonData) {\n // create the database schema\n let changes = 0;\n try {\n // start a transaction\n await this.sqliteUtil.beginTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(`CreateDatabaseSchema: ${err}`);\n }\n const stmts = await this.createSchemaStatement(jsonData);\n if (stmts.length > 0) {\n const schemaStmt = stmts.join('\\n');\n try {\n changes = await this.sqliteUtil.execute(mDB, schemaStmt, true);\n if (changes < 0) {\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject('CreateSchema: changes < 0 ' + `${err}`);\n }\n }\n }\n catch (err) {\n const msg = err;\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n return Promise.reject(`CreateSchema: ${msg}`);\n }\n catch (err) {\n return Promise.reject('CreateSchema: changes < 0 ' + `${err}: ${msg}`);\n }\n }\n }\n try {\n await this.sqliteUtil.commitTransaction(mDB, true);\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject('CreateSchema: commit ' + `${err}`);\n }\n }\n /**\n * CreateSchemaStatement\n * @param jsonData\n */\n async createSchemaStatement(jsonData) {\n const statements = [];\n let isLastModified = false;\n let isSqlDeleted = false;\n // Prepare the statement to execute\n try {\n for (const jTable of jsonData.tables) {\n if (jTable.schema != null && jTable.schema.length >= 1) {\n // create table\n statements.push('CREATE TABLE IF NOT EXISTS ' + `${jTable.name} (`);\n for (let j = 0; j < jTable.schema.length; j++) {\n if (j === jTable.schema.length - 1) {\n if (jTable.schema[j].column) {\n statements.push(`${jTable.schema[j].column} ${jTable.schema[j].value}`);\n if (jTable.schema[j].column === 'last_modified') {\n isLastModified = true;\n }\n if (jTable.schema[j].column === 'sql_deleted') {\n isSqlDeleted = true;\n }\n }\n else if (jTable.schema[j].foreignkey) {\n statements.push(`FOREIGN KEY (${jTable.schema[j].foreignkey}) ${jTable.schema[j].value}`);\n }\n else if (jTable.schema[j].constraint) {\n statements.push(`CONSTRAINT ${jTable.schema[j].constraint} ${jTable.schema[j].value}`);\n }\n }\n else {\n if (jTable.schema[j].column) {\n statements.push(`${jTable.schema[j].column} ${jTable.schema[j].value},`);\n if (jTable.schema[j].column === 'last_modified') {\n isLastModified = true;\n }\n if (jTable.schema[j].column === 'sql_deleted') {\n isSqlDeleted = true;\n }\n }\n else if (jTable.schema[j].foreignkey) {\n statements.push(`FOREIGN KEY (${jTable.schema[j].foreignkey}) ${jTable.schema[j].value},`);\n }\n else if (jTable.schema[j].constraint) {\n statements.push(`CONSTRAINT ${jTable.schema[j].constraint} ${jTable.schema[j].value},`);\n }\n }\n }\n statements.push(');');\n if (isLastModified && isSqlDeleted) {\n // create trigger last_modified associated with the table\n let trig = 'CREATE TRIGGER IF NOT EXISTS ';\n trig += `${jTable.name}`;\n trig += `_trigger_last_modified `;\n trig += `AFTER UPDATE ON ${jTable.name} `;\n trig += 'FOR EACH ROW WHEN NEW.last_modified < ';\n trig += 'OLD.last_modified BEGIN UPDATE ';\n trig += `${jTable.name} `;\n trig += `SET last_modified = `;\n trig += \"(strftime('%s','now')) WHERE id=OLD.id; END;\";\n statements.push(trig);\n }\n }\n if (jTable.indexes != null && jTable.indexes.length >= 1) {\n for (const jIndex of jTable.indexes) {\n const tableName = jTable.name;\n let stmt = `CREATE ${Object.keys(jIndex).includes('mode') ? jIndex.mode + ' ' : ''} INDEX IF NOT EXISTS `;\n stmt += `${jIndex.name} ON ${tableName} (${jIndex.value});`;\n statements.push(stmt);\n }\n }\n if (jTable.triggers != null && jTable.triggers.length >= 1) {\n for (const jTrg of jTable.triggers) {\n const tableName = jTable.name;\n if (jTrg.timeevent.toUpperCase().endsWith(' ON')) {\n jTrg.timeevent = jTrg.timeevent.substring(0, jTrg.timeevent.length - 3);\n }\n let stmt = `CREATE TRIGGER IF NOT EXISTS `;\n stmt += `${jTrg.name} ${jTrg.timeevent} ON ${tableName} `;\n if (jTrg.condition)\n stmt += `${jTrg.condition} `;\n stmt += `${jTrg.logic};`;\n statements.push(stmt);\n }\n }\n }\n return Promise.resolve(statements);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n /**\n * CreateDataTable\n * @param mDB\n * @param table\n * @param mode\n */\n async createDataTable(mDB, table, mode) {\n let lastId = -1;\n try {\n // Check if the table exists\n const tableExists = await this.isTableExists(mDB, true, table.name);\n if (!tableExists) {\n return Promise.reject('CreateDataTable: Table ' + `${table.name} does not exist`);\n }\n // Get the column names and types\n const tableNamesTypes = await this.sqliteUtil.getTableColumnNamesTypes(mDB, table.name);\n const tableColumnTypes = tableNamesTypes.types;\n const tableColumnNames = tableNamesTypes.names;\n if (tableColumnTypes.length === 0) {\n return Promise.reject('CreateDataTable: Table ' + `${table.name} info does not exist`);\n }\n // Loop on Table Values\n for (let j = 0; j < table.values.length; j++) {\n let row = table.values[j];\n let isRun = true;\n const stmt = await this.createRowStatement(mDB, tableColumnNames, row, j, table.name, mode);\n isRun = await this.checkUpdate(mDB, stmt, row, table.name, tableColumnNames);\n if (isRun) {\n if (stmt.substring(0, 6).toUpperCase() === 'DELETE') {\n row = [];\n }\n lastId = await this.sqliteUtil.prepareRun(mDB, stmt, row, true);\n if (lastId < 0) {\n return Promise.reject('CreateDataTable: lastId < 0');\n }\n }\n else {\n lastId = 0;\n }\n }\n return Promise.resolve(lastId);\n }\n catch (err) {\n return Promise.reject(`CreateDataTable: ${err}`);\n }\n }\n /**\n * CreateRowStatement\n * @param mDB\n * @param tColNames\n * @param row\n * @param j\n * @param tableName\n * @param mode\n * @returns\n */\n async createRowStatement(mDB, tColNames, row, j, tableName, mode) {\n // Check the row number of columns\n if (row.length != tColNames.length ||\n row.length === 0 ||\n tColNames.length === 0) {\n return Promise.reject(new Error(`CreateRowStatement: Table ${tableName} ` +\n `values row ${j} not correct length`));\n }\n try {\n const retisIdExists = await this.isIdExists(mDB, tableName, tColNames[0], row[0]);\n let stmt;\n if (mode === 'full' || (mode === 'partial' && !retisIdExists)) {\n // Insert\n const nameString = tColNames.join();\n const questionMarkString = await this.createQuestionMarkString(tColNames.length);\n stmt = `INSERT INTO ${tableName} (${nameString}) VALUES (`;\n stmt += `${questionMarkString});`;\n }\n else {\n // Update or Delete\n let isUpdate = true;\n const isColDeleted = (element) => element === `sql_deleted`;\n const idxDelete = tColNames.findIndex(isColDeleted);\n if (idxDelete >= 0) {\n if (row[idxDelete] === 1) {\n isUpdate = false;\n stmt = `DELETE FROM ${tableName} WHERE `;\n if (typeof row[0] == 'string') {\n stmt += `${tColNames[0]} = '${row[0]}';`;\n }\n else {\n stmt += `${tColNames[0]} = ${row[0]};`;\n }\n }\n }\n if (isUpdate) {\n // Update\n const setString = await this.setNameForUpdate(tColNames);\n if (setString.length === 0) {\n return Promise.reject(new Error(`CreateRowStatement: Table ${tableName} ` +\n `values row ${j} not set to String`));\n }\n stmt = `UPDATE ${tableName} SET ${setString} WHERE `;\n if (typeof row[0] == 'string') {\n stmt += `${tColNames[0]} = '${row[0]}';`;\n }\n else {\n stmt += `${tColNames[0]} = ${row[0]};`;\n }\n }\n }\n return Promise.resolve(stmt);\n }\n catch (err) {\n return Promise.reject(new Error(`CreateRowStatement: ${err.message}`));\n }\n }\n /**\n *\n * @param db\n * @param values\n * @param tbName\n * @param tColNames\n * @returns\n */\n async checkUpdate(db, stmt, values, tbName, tColNames) {\n const isRun = true;\n if (stmt.substring(0, 6) === 'UPDATE') {\n try {\n let query = `SELECT * FROM ${tbName} WHERE `;\n if (typeof values[0] == 'string') {\n query += `${tColNames[0]} = '${values[0]}';`;\n }\n else {\n query += `${tColNames[0]} = ${values[0]};`;\n }\n const resQuery = await this.getValues(db, query, tbName);\n let resValues = [];\n if (resQuery.length > 0) {\n resValues = resQuery[0];\n }\n if (values.length > 0 &&\n resValues.length > 0 &&\n values.length === resValues.length) {\n for (let i = 0; i < values.length; i++) {\n if (values[i] !== resValues[i]) {\n return Promise.resolve(true);\n }\n }\n return Promise.resolve(false);\n }\n else {\n const msg = 'Both arrays not the same length';\n return Promise.reject(new Error(`CheckUpdate: ${msg}`));\n }\n }\n catch (err) {\n return Promise.reject(new Error(`CheckUpdate: ${err.message}`));\n }\n }\n else {\n return Promise.resolve(isRun);\n }\n }\n /**\n * GetValues\n * @param mDb\n * @param query\n * @param tableName\n */\n async getValues(mDb, query, tableName) {\n const values = [];\n try {\n // get table column names and types\n const tableNamesTypes = await this.sqliteUtil.getTableColumnNamesTypes(mDb, tableName);\n let rowNames = [];\n if (Object.keys(tableNamesTypes).includes('names')) {\n rowNames = tableNamesTypes.names;\n }\n else {\n return Promise.reject(`GetValues: Table ${tableName} no names`);\n }\n const retValues = await this.sqliteUtil.queryAll(mDb, query, []);\n for (const rValue of retValues) {\n const row = [];\n for (const rName of rowNames) {\n if (Object.keys(rValue).includes(rName)) {\n row.push(rValue[rName]);\n }\n else {\n row.push('NULL');\n }\n }\n values.push(row);\n }\n return Promise.resolve(values);\n }\n catch (err) {\n return Promise.reject(`GetValues: ${err}`);\n }\n }\n /**\n * CheckColumnTypes\n * @param tableTypes\n * @param rowValues\n */\n /*\n private async checkColumnTypes(\n tableTypes: any[],\n rowValues: any[],\n ): Promise<boolean> {\n const isType = true;\n for (let i = 0; i < rowValues.length; i++) {\n if (rowValues[i].toString().toUpperCase() != 'NULL') {\n try {\n await this.isType(tableTypes[i], rowValues[i]);\n } catch (err) {\n return Promise.reject(new Error('checkColumnTypes: Type not found'));\n }\n }\n }\n return Promise.resolve(isType);\n }\n */\n /**\n * IsType\n * @param type\n * @param value\n */\n /*\n private async isType(type: string, value: any): Promise<void> {\n let ret = false;\n if (type === 'NULL' && typeof value === 'object') ret = true;\n if (type === 'TEXT' && typeof value === 'string') ret = true;\n if (type === 'INTEGER' && typeof value === 'number') ret = true;\n if (type === 'REAL' && typeof value === 'number') ret = true;\n if (type === 'BLOB' && typeof value === 'string') ret = true;\n if (ret) {\n return Promise.resolve();\n } else {\n return Promise.reject(new Error('IsType: not a SQL Type'));\n }\n }\n */\n /**\n * IsIdExists\n * @param db\n * @param dbName\n * @param firstColumnName\n * @param key\n */\n async isIdExists(db, dbName, firstColumnName, key) {\n let ret = false;\n let query = `SELECT ${firstColumnName} FROM ` +\n `${dbName} WHERE ${firstColumnName} = `;\n if (typeof key === 'number')\n query += `${key};`;\n if (typeof key === 'string')\n query += `'${key}';`;\n try {\n const resQuery = await this.sqliteUtil.queryAll(db, query, []);\n if (resQuery.length === 1)\n ret = true;\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(`IsIdExists: ${err}`);\n }\n }\n /**\n * CreateQuestionMarkString\n * @param length\n */\n createQuestionMarkString(length) {\n return new Promise((resolve, reject) => {\n let retString = '';\n for (let i = 0; i < length; i++) {\n retString += '?,';\n }\n if (retString.length > 1) {\n retString = retString.slice(0, -1);\n resolve(retString);\n }\n else {\n reject('CreateQuestionMarkString: length = 0');\n }\n });\n }\n /**\n * SetNameForUpdate\n * @param names\n */\n async setNameForUpdate(names) {\n let retString = '';\n for (const name of names) {\n retString += `${name} = ? ,`;\n }\n if (retString.length > 1) {\n retString = retString.slice(0, -1);\n return Promise.resolve(retString);\n }\n else {\n return Promise.reject('SetNameForUpdate: length = 0');\n }\n }\n /**\n * IsJsonSQLite\n * @param obj\n */\n isJsonSQLite(obj) {\n const keyFirstLevel = [\n 'database',\n 'version',\n 'overwrite',\n 'encrypted',\n 'mode',\n 'tables',\n 'views',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyFirstLevel.indexOf(key) === -1)\n return false;\n if (key === 'database' && typeof obj[key] != 'string')\n return false;\n if (key === 'version' && typeof obj[key] != 'number')\n return false;\n if (key === 'overwrite' && typeof obj[key] != 'boolean')\n return false;\n if (key === 'encrypted' && typeof obj[key] != 'boolean')\n return false;\n if (key === 'mode' && typeof obj[key] != 'string')\n return false;\n if (key === 'tables' && typeof obj[key] != 'object')\n return false;\n if (key === 'tables') {\n for (const oKey of obj[key]) {\n const retTable = this.isTable(oKey);\n if (!retTable)\n return false;\n }\n }\n if (key === 'views' && typeof obj[key] != 'object')\n return false;\n if (key === 'views') {\n for (const oKey of obj[key]) {\n const retView = this.isView(oKey);\n if (!retView)\n return false;\n }\n }\n }\n return true;\n }\n /**\n * IsTable\n * @param obj\n */\n isTable(obj) {\n const keyTableLevel = [\n 'name',\n 'schema',\n 'indexes',\n 'triggers',\n 'values',\n ];\n let nbColumn = 0;\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyTableLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'schema' && typeof obj[key] != 'object')\n return false;\n if (key === 'indexes' && typeof obj[key] != 'object')\n return false;\n if (key === 'triggers' && typeof obj[key] != 'object')\n return false;\n if (key === 'values' && typeof obj[key] != 'object')\n return false;\n if (key === 'schema') {\n obj['schema'].forEach((element) => {\n if (element.column) {\n nbColumn++;\n }\n });\n for (let i = 0; i < nbColumn; i++) {\n const retSchema = this.isSchema(obj[key][i]);\n if (!retSchema)\n return false;\n }\n }\n if (key === 'indexes') {\n for (const oKey of obj[key]) {\n const retIndexes = this.isIndexes(oKey);\n if (!retIndexes)\n return false;\n }\n }\n if (key === 'triggers') {\n for (const oKey of obj[key]) {\n const retTriggers = this.isTriggers(oKey);\n if (!retTriggers)\n return false;\n }\n }\n if (key === 'values') {\n if (nbColumn > 0) {\n for (const oKey of obj[key]) {\n if (typeof oKey != 'object' || oKey.length != nbColumn)\n return false;\n }\n }\n }\n }\n return true;\n }\n /**\n * IsSchema\n * @param obj\n */\n isSchema(obj) {\n const keySchemaLevel = [\n 'column',\n 'value',\n 'foreignkey',\n 'primarykey',\n 'constraint',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keySchemaLevel.indexOf(key) === -1)\n return false;\n if (key === 'column' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n if (key === 'foreignkey' && typeof obj[key] != 'string')\n return false;\n if (key === 'primarykey' && typeof obj[key] != 'string')\n return false;\n if (key === 'constraint' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n }\n /**\n * isIndexes\n * @param obj\n */\n isIndexes(obj) {\n const keyIndexesLevel = ['name', 'value', 'mode'];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyIndexesLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n if (key === 'mode' &&\n (typeof obj[key] != 'string' || obj[key].toUpperCase() != 'UNIQUE'))\n return false;\n }\n return true;\n }\n /**\n * isTriggers\n * @param obj\n */\n isTriggers(obj) {\n const keyTriggersLevel = [\n 'name',\n 'timeevent',\n 'condition',\n 'logic',\n ];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyTriggersLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'timeevent' && typeof obj[key] != 'string')\n return false;\n if (key === 'condition' && typeof obj[key] != 'string')\n return false;\n if (key === 'logic' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n }\n /**\n * IsViews\n * @param obj\n */\n isView(obj) {\n const keyViewLevel = ['name', 'value'];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object))\n return false;\n for (const key of Object.keys(obj)) {\n if (keyViewLevel.indexOf(key) === -1)\n return false;\n if (key === 'name' && typeof obj[key] != 'string')\n return false;\n if (key === 'value' && typeof obj[key] != 'string')\n return false;\n }\n return true;\n }\n /**\n * checkSchemaValidity\n * @param schema\n */\n async checkSchemaValidity(schema) {\n for (let i = 0; i < schema.length; i++) {\n const sch = {};\n const keys = Object.keys(schema[i]);\n if (keys.includes('column')) {\n sch.column = schema[i].column;\n }\n if (keys.includes('value')) {\n sch.value = schema[i].value;\n }\n if (keys.includes('foreignkey')) {\n sch.foreignkey = schema[i].foreignkey;\n }\n if (keys.includes('constraint')) {\n sch.constraint = schema[i].constraint;\n }\n const isValid = this.isSchema(sch);\n if (!isValid) {\n return Promise.reject(`CheckSchemaValidity: schema[${i}] not valid`);\n }\n }\n return Promise.resolve();\n }\n /**\n * checkIndexesSchemaValidity\n * @param indexes\n */\n async checkIndexesValidity(indexes) {\n for (let i = 0; i < indexes.length; i++) {\n const index = {};\n const keys = Object.keys(indexes[i]);\n if (keys.includes('value')) {\n index.value = indexes[i].value;\n }\n if (keys.includes('name')) {\n index.name = indexes[i].name;\n }\n if (keys.includes('mode')) {\n index.mode = indexes[i].mode;\n }\n const isValid = this.isIndexes(index);\n if (!isValid) {\n return Promise.reject(`CheckIndexesValidity: indexes[${i}] not valid`);\n }\n }\n return Promise.resolve();\n }\n /**\n * checkTriggersValidity\n * @param triggers\n */\n async checkTriggersValidity(triggers) {\n for (let i = 0; i < triggers.length; i++) {\n const trigger = {};\n const keys = Object.keys(triggers[i]);\n if (keys.includes('logic')) {\n trigger.logic = triggers[i].logic;\n }\n if (keys.includes('name')) {\n trigger.name = triggers[i].name;\n }\n if (keys.includes('timeevent')) {\n trigger.timeevent = triggers[i].timeevent;\n }\n if (keys.includes('condition')) {\n trigger.condition = triggers[i].condition;\n }\n const isValid = this.isTriggers(trigger);\n if (!isValid) {\n return Promise.reject(`CheckTriggersValidity: triggers[${i}] not valid`);\n }\n }\n return Promise.resolve();\n }\n /**\n * checkViewsValidity\n * @param views\n */\n async checkViewsValidity(views) {\n for (let i = 0; i < views.length; i++) {\n const view = {};\n const keys = Object.keys(views[i]);\n if (keys.includes('value')) {\n view.value = views[i].value;\n }\n if (keys.includes('name')) {\n view.name = views[i].name;\n }\n const isValid = this.isView(view);\n if (!isValid) {\n return Promise.reject(`CheckViewsValidity: views[${i}] not valid`);\n }\n }\n return Promise.resolve();\n }\n /**\n * CreateView\n * @param mDB\n * @param table\n */\n async createView(mDB, view) {\n const stmt = `CREATE VIEW IF NOT EXISTS ${view.name} AS ${view.value};`;\n try {\n const changes = await this.sqliteUtil.execute(mDB, stmt, true);\n if (changes < 0) {\n return Promise.reject(`CreateView: ${view.name} failed`);\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`CreateView: ${err}`);\n }\n }\n}\nexports.UtilsJson = UtilsJson;\n//# sourceMappingURL=utilsJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportToJson = void 0;\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nconst utilsJson_1 = require(\"./utilsJson\");\nclass ExportToJson {\n constructor() {\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n this.jsonUtil = new utilsJson_1.UtilsJson();\n }\n /**\n * CreateExportObject\n * @param mDB\n * @param sqlObj\n */\n async createExportObject(mDB, sqlObj) {\n const retObj = {};\n let tables = [];\n let views = [];\n let errmsg = '';\n try {\n // get View's name\n views = await this.getViewsName(mDB);\n // get Table's name\n const resTables = await this.getTablesNameSQL(mDB);\n if (resTables.length === 0) {\n return Promise.reject(\"createExportObject: table's names failed\");\n }\n else {\n const isTable = await this.jsonUtil.isTableExists(mDB, true, 'sync_table');\n if (!isTable && sqlObj.mode === 'partial') {\n return Promise.reject('No sync_table available');\n }\n switch (sqlObj.mode) {\n case 'partial': {\n tables = await this.getTablesPartial(mDB, resTables);\n break;\n }\n case 'full': {\n tables = await this.getTablesFull(mDB, resTables);\n break;\n }\n default: {\n errmsg =\n 'createExportObject: expMode ' + sqlObj.mode + ' not defined';\n break;\n }\n }\n if (errmsg.length > 0) {\n return Promise.reject(errmsg);\n }\n if (tables.length > 0) {\n retObj.database = sqlObj.database;\n retObj.version = sqlObj.version;\n retObj.encrypted = sqlObj.encrypted;\n retObj.mode = sqlObj.mode;\n retObj.tables = tables;\n if (views.length > 0) {\n retObj.views = views;\n }\n }\n return Promise.resolve(retObj);\n }\n }\n catch (err) {\n return Promise.reject('createExportObject: ' + err);\n }\n }\n /**\n * GetTablesNameSQL\n * @param mDb\n */\n async getTablesNameSQL(mDb) {\n let sql = 'SELECT name,sql FROM sqlite_master WHERE ';\n sql += \"type='table' AND name NOT LIKE 'sync_table' \";\n sql += \"AND name NOT LIKE '_temp_%' \";\n sql += \"AND name NOT LIKE 'sqlite_%';\";\n let retQuery = [];\n try {\n retQuery = await this.sqliteUtil.queryAll(mDb, sql, []);\n return Promise.resolve(retQuery);\n }\n catch (err) {\n return Promise.reject(`getTablesNameSQL: ${err}`);\n }\n }\n async getLastExportDate(mDb) {\n return new Promise((resolve, reject) => {\n let retDate = -1;\n // get the last sync date\n const stmt = `SELECT sync_date FROM sync_table WHERE id = 2;`;\n mDb.get(stmt, [], (err, row) => {\n // process the row here\n if (err) {\n reject(`getLastExportDate: ${err.message}`);\n }\n else {\n if (row != null) {\n const key = Object.keys(row)[0];\n retDate = row[key];\n }\n resolve(retDate);\n }\n });\n });\n }\n /**\n * SetLastExportDate\n * @param mDb\n * @param lastExportedDate\n * @returns\n */\n async setLastExportDate(mDb, lastExportedDate) {\n try {\n const isTable = await this.jsonUtil.isTableExists(mDb, true, 'sync_table');\n if (!isTable) {\n return Promise.reject(new Error('setLastExportDate: No sync_table available'));\n }\n const sDate = Math.round(new Date(lastExportedDate).getTime() / 1000);\n let stmt = '';\n if ((await this.getLastExportDate(mDb)) > 0) {\n stmt = `UPDATE sync_table SET sync_date = ${sDate} WHERE id = 2;`;\n }\n else {\n stmt = `INSERT INTO sync_table (sync_date) VALUES (${sDate});`;\n }\n const changes = await this.sqliteUtil.execute(mDb, stmt, false);\n if (changes < 0) {\n return { result: false, message: 'setLastExportDate failed' };\n }\n else {\n return { result: true };\n }\n }\n catch (err) {\n return {\n result: false,\n message: `setLastExportDate failed: ${err.message}`,\n };\n }\n }\n async delExportedRows(mDb) {\n let lastExportDate;\n try {\n // check if synchronization table exists\n const isTable = await this.jsonUtil.isTableExists(mDb, true, 'sync_table');\n if (!isTable) {\n return Promise.reject('DelExportedRows: No sync_table available');\n }\n // get the last export date\n lastExportDate = await this.getLastExportDate(mDb);\n if (lastExportDate < 0) {\n return Promise.reject('DelExportedRows: no last exported date available');\n }\n // get the table' name list\n const resTables = await this.sqliteUtil.getTablesNames(mDb);\n if (resTables.length === 0) {\n return Promise.reject(\"DelExportedRows: No table's names returned\");\n }\n // Loop through the tables\n for (const table of resTables) {\n let lastId = -1;\n // define the delete statement\n const delStmt = `DELETE FROM ${table}\n WHERE sql_deleted = 1 AND last_modified < ${lastExportDate};`;\n lastId = await this.sqliteUtil.prepareRun(mDb, delStmt, [], true);\n if (lastId < 0) {\n return Promise.reject('DelExportedRows: lastId < 0');\n }\n }\n }\n catch (err) {\n return Promise.reject(`DelExportedRows failed: ${err.message}`);\n }\n }\n /**\n * GetViewsNameSQL\n * @param mDb\n */\n async getViewsName(mDb) {\n const views = [];\n let sql = 'SELECT name,sql FROM sqlite_master WHERE ';\n sql += \"type='view' AND name NOT LIKE 'sqlite_%';\";\n let retQuery = [];\n try {\n retQuery = await this.sqliteUtil.queryAll(mDb, sql, []);\n for (const query of retQuery) {\n const view = {};\n view.name = query.name;\n view.value = query.sql.substring(query.sql.indexOf('AS ') + 3);\n views.push(view);\n }\n return Promise.resolve(views);\n }\n catch (err) {\n return Promise.reject(`getViewsName: ${err}`);\n }\n }\n /**\n * GetSyncDate\n * @param mDb\n */\n async getSyncDate(mDb) {\n return new Promise((resolve, reject) => {\n let retDate = -1;\n // get the last sync date\n const stmt = `SELECT sync_date FROM sync_table WHERE id = 1;`;\n mDb.get(stmt, [], (err, row) => {\n // process the row here\n if (err) {\n reject(`GetSyncDate: ${err.message}`);\n }\n else {\n if (row != null) {\n const key = Object.keys(row)[0];\n retDate = row[key];\n resolve(retDate);\n }\n else {\n reject(`GetSyncDate: no syncDate`);\n }\n }\n });\n });\n }\n /**\n * GetTablesFull\n * @param mDb\n * @param resTables\n */\n async getTablesFull(mDb, resTables) {\n const tables = [];\n let errmsg = '';\n try {\n // Loop through the tables\n for (const rTable of resTables) {\n let tableName;\n let sqlStmt;\n if (rTable.name) {\n tableName = rTable.name;\n }\n else {\n errmsg = 'GetTablesFull: no name';\n break;\n }\n if (rTable.sql) {\n sqlStmt = rTable.sql;\n }\n else {\n errmsg = 'GetTablesFull: no sql';\n break;\n }\n const table = {};\n // create Table's Schema\n const schema = await this.getSchema(sqlStmt);\n if (schema.length === 0) {\n errmsg = 'GetTablesFull: no Schema returned';\n break;\n }\n // check schema validity\n await this.jsonUtil.checkSchemaValidity(schema);\n // create Table's indexes if any\n const indexes = await this.getIndexes(mDb, tableName);\n if (indexes.length > 0) {\n // check indexes validity\n await this.jsonUtil.checkIndexesValidity(indexes);\n }\n // create Table's triggers if any\n const triggers = await this.getTriggers(mDb, tableName);\n if (triggers.length > 0) {\n // check triggers validity\n await this.jsonUtil.checkTriggersValidity(triggers);\n }\n // create Table's Data\n const query = `SELECT * FROM ${tableName};`;\n const values = await this.jsonUtil.getValues(mDb, query, tableName);\n table.name = tableName;\n if (schema.length > 0) {\n table.schema = schema;\n }\n else {\n errmsg = `GetTablesFull: must contain schema`;\n break;\n }\n if (indexes.length > 0) {\n table.indexes = indexes;\n }\n if (triggers.length > 0) {\n table.triggers = triggers;\n }\n if (values.length > 0) {\n table.values = values;\n }\n if (Object.keys(table).length <= 1) {\n errmsg = `GetTablesFull: table ${tableName} is not a jsonTable`;\n break;\n }\n tables.push(table);\n }\n if (errmsg.length > 0) {\n return Promise.reject(errmsg);\n }\n return Promise.resolve(tables);\n }\n catch (err) {\n return Promise.reject(`GetTablesFull: ${err}`);\n }\n }\n /**\n * GetSchema\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getSchema(sqlStmt /*,tableName: string,*/) {\n const schema = [];\n // take the substring between parenthesis\n const openPar = sqlStmt.indexOf('(');\n const closePar = sqlStmt.lastIndexOf(')');\n let sstr = sqlStmt.substring(openPar + 1, closePar);\n // check if there is other parenthesis and replace the ',' by '§'\n try {\n sstr = await this.modEmbeddedParentheses(sstr);\n const sch = sstr.split(',');\n // for each element of the array split the\n // first word as key\n for (const sc of sch) {\n const row = [];\n const scht = sc.replace(/\\n/g, '').trim();\n row[0] = scht.substring(0, scht.indexOf(' '));\n row[1] = scht.substring(scht.indexOf(' ') + 1);\n const jsonRow = {};\n if (row[0].toUpperCase() === 'FOREIGN') {\n const oPar = scht.indexOf('(');\n const cPar = scht.indexOf(')');\n const fk = scht.substring(oPar + 1, cPar);\n const fknames = fk.split('§');\n row[0] = fknames.join(',');\n row[0] = row[0].replace(/, /g, ',');\n row[1] = scht.substring(cPar + 2);\n jsonRow['foreignkey'] = row[0];\n }\n else if (row[0].toUpperCase() === 'PRIMARY') {\n const oPar = scht.indexOf('(');\n const cPar = scht.indexOf(')');\n const pk = scht.substring(oPar + 1, cPar);\n const pknames = pk.split('§');\n row[0] = 'CPK_' + pknames.join('_');\n row[0] = row[0].replace(/_ /g, '_');\n row[1] = scht;\n jsonRow['constraint'] = row[0];\n }\n else if (row[0].toUpperCase() === 'CONSTRAINT') {\n const tRow = [];\n const row1t = row[1].trim();\n tRow[0] = row1t.substring(0, row1t.indexOf(' '));\n tRow[1] = row1t.substring(row1t.indexOf(' ') + 1);\n row[0] = tRow[0];\n jsonRow['constraint'] = row[0];\n row[1] = tRow[1];\n }\n else {\n jsonRow['column'] = row[0];\n }\n jsonRow['value'] = row[1].replace(/§/g, ',');\n schema.push(jsonRow);\n }\n return Promise.resolve(schema);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n /**\n * GetIndexes\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getIndexes(mDb, tableName) {\n const indexes = [];\n let errmsg = '';\n try {\n let stmt = 'SELECT name,tbl_name,sql FROM sqlite_master WHERE ';\n stmt += `type = 'index' AND tbl_name = '${tableName}' `;\n stmt += `AND sql NOTNULL;`;\n const retIndexes = await this.sqliteUtil.queryAll(mDb, stmt, []);\n if (retIndexes.length > 0) {\n for (const rIndex of retIndexes) {\n const keys = Object.keys(rIndex);\n if (keys.length === 3) {\n if (rIndex['tbl_name'] === tableName) {\n const sql = rIndex['sql'];\n const mode = sql.includes('UNIQUE') ? 'UNIQUE' : '';\n const oPar = sql.lastIndexOf('(');\n const cPar = sql.lastIndexOf(')');\n const index = {};\n index.name = rIndex['name'];\n index.value = sql.slice(oPar + 1, cPar);\n if (mode.length > 0)\n index.mode = mode;\n indexes.push(index);\n }\n else {\n errmsg = `GetIndexes: Table ${tableName} doesn't match`;\n break;\n }\n }\n else {\n errmsg = `GetIndexes: Table ${tableName} creating indexes`;\n break;\n }\n }\n if (errmsg.length > 0) {\n return Promise.reject(errmsg);\n }\n }\n return Promise.resolve(indexes);\n }\n catch (err) {\n return Promise.reject(`GetIndexes: ${err}`);\n }\n }\n /**\n * GetTriggers\n * @param mDb\n * @param sqlStmt\n * @param tableName\n */\n async getTriggers(mDb, tableName) {\n const triggers = [];\n try {\n let stmt = 'SELECT name,tbl_name,sql FROM sqlite_master WHERE ';\n stmt += `type = 'trigger' AND tbl_name = '${tableName}' `;\n stmt += `AND sql NOT NULL;`;\n const retTriggers = await this.sqliteUtil.queryAll(mDb, stmt, []);\n if (retTriggers.length > 0) {\n for (const rTrg of retTriggers) {\n const keys = Object.keys(rTrg);\n if (keys.length === 3) {\n if (rTrg['tbl_name'] === tableName) {\n const sql = rTrg['sql'];\n const name = rTrg['name'];\n let sqlArr = sql.split(name);\n if (sqlArr.length != 2) {\n return Promise.reject(`GetTriggers: sql split name does not return 2 values`);\n }\n if (!sqlArr[1].includes(tableName)) {\n return Promise.reject(`GetTriggers: sql split does not contains ${tableName}`);\n }\n const timeEvent = sqlArr[1].split(tableName, 1)[0].trim();\n sqlArr = sqlArr[1].split(timeEvent + ' ' + tableName);\n if (sqlArr.length != 2) {\n return Promise.reject(`GetTriggers: sql split tableName does not return 2 values`);\n }\n let condition = '';\n let logic = '';\n if (sqlArr[1].trim().substring(0, 5).toUpperCase() !== 'BEGIN') {\n sqlArr = sqlArr[1].trim().split('BEGIN');\n if (sqlArr.length != 2) {\n return Promise.reject(`GetTriggers: sql split BEGIN does not return 2 values`);\n }\n condition = sqlArr[0].trim();\n logic = 'BEGIN' + sqlArr[1];\n }\n else {\n logic = sqlArr[1].trim();\n }\n const trigger = {};\n trigger.name = name;\n trigger.logic = logic;\n if (condition.length > 0)\n trigger.condition = condition;\n trigger.timeevent = timeEvent;\n triggers.push(trigger);\n }\n else {\n return Promise.reject(`GetTriggers: Table ${tableName} doesn't match`);\n }\n }\n else {\n return Promise.reject(`GetTriggers: Table ${tableName} creating indexes`);\n }\n }\n }\n return Promise.resolve(triggers);\n }\n catch (err) {\n return Promise.reject(`GetTriggers: ${err}`);\n }\n }\n /**\n * GetTablesPartial\n * @param mDb\n * @param resTables\n */\n async getTablesPartial(mDb, resTables) {\n const tables = [];\n let modTables = {};\n let syncDate = 0;\n let modTablesKeys = [];\n let errmsg = '';\n try {\n // Get the syncDate and the Modified Tables\n const partialModeData = await this.getPartialModeData(mDb, resTables);\n if (Object.keys(partialModeData).includes('syncDate')) {\n syncDate = partialModeData.syncDate;\n }\n if (Object.keys(partialModeData).includes('modTables')) {\n modTables = partialModeData.modTables;\n modTablesKeys = Object.keys(modTables);\n }\n // Loop trough tables\n for (const rTable of resTables) {\n let tableName = '';\n let sqlStmt = '';\n if (rTable.name) {\n tableName = rTable.name;\n }\n else {\n errmsg = 'GetTablesFull: no name';\n break;\n }\n if (rTable.sql) {\n sqlStmt = rTable.sql;\n }\n else {\n errmsg = 'GetTablesFull: no sql';\n break;\n }\n if (modTablesKeys.length == 0 ||\n modTablesKeys.indexOf(tableName) === -1 ||\n modTables[tableName] == 'No') {\n continue;\n }\n const table = {};\n let schema = [];\n let indexes = [];\n let triggers = [];\n table.name = rTable;\n if (modTables[table.name] === 'Create') {\n // create Table's Schema\n schema = await this.getSchema(sqlStmt);\n if (schema.length > 0) {\n // check schema validity\n await this.jsonUtil.checkSchemaValidity(schema);\n }\n // create Table's indexes if any\n indexes = await this.getIndexes(mDb, tableName);\n if (indexes.length > 0) {\n // check indexes validity\n await this.jsonUtil.checkIndexesValidity(indexes);\n }\n // create Table's triggers if any\n triggers = await this.getTriggers(mDb, tableName);\n if (triggers.length > 0) {\n // check triggers validity\n await this.jsonUtil.checkTriggersValidity(triggers);\n }\n }\n // create Table's Data\n let query = '';\n if (modTables[tableName] === 'Create') {\n query = `SELECT * FROM ${tableName};`;\n }\n else {\n query =\n `SELECT * FROM ${tableName} ` +\n `WHERE last_modified > ${syncDate};`;\n }\n const values = await this.jsonUtil.getValues(mDb, query, tableName);\n // check the table object validity\n table.name = tableName;\n if (schema.length > 0) {\n table.schema = schema;\n }\n if (indexes.length > 0) {\n table.indexes = indexes;\n }\n if (triggers.length > 0) {\n table.triggers = triggers;\n }\n if (values.length > 0) {\n table.values = values;\n }\n if (Object.keys(table).length <= 1) {\n errmsg = `GetTablesPartial: table ${tableName} is not a jsonTable`;\n break;\n }\n tables.push(table);\n }\n if (errmsg.length > 0) {\n return Promise.reject(errmsg);\n }\n return Promise.resolve(tables);\n }\n catch (err) {\n return Promise.reject(`GetTablesPartial: ${err}`);\n }\n }\n /**\n * GetPartialModeData\n * @param mDb\n * @param resTables\n */\n async getPartialModeData(mDb, resTables) {\n const retData = {};\n try {\n // get the synchronization date\n const syncDate = await this.getSyncDate(mDb);\n if (syncDate <= 0) {\n return Promise.reject(`GetPartialModeData: no syncDate`);\n }\n // get the tables which have been updated\n // since last synchronization\n const modTables = await this.getTablesModified(mDb, resTables, syncDate);\n if (modTables.length <= 0) {\n return Promise.reject(`GetPartialModeData: no modTables`);\n }\n retData.syncDate = syncDate;\n retData.modTables = modTables;\n return Promise.resolve(retData);\n }\n catch (err) {\n return Promise.reject(`GetPartialModeData: ${err}`);\n }\n }\n async getTablesModified(db, tables, syncDate) {\n let errmsg = '';\n try {\n const retModified = {};\n for (const rTable of tables) {\n let mode;\n // get total count of the table\n let stmt = 'SELECT count(*) AS tcount ';\n stmt += `FROM ${rTable.name};`;\n let retQuery = await this.sqliteUtil.queryAll(db, stmt, []);\n if (retQuery.length != 1) {\n errmsg = 'GetTableModified: total ' + 'count not returned';\n break;\n }\n const totalCount = retQuery[0]['tcount'];\n // get total count of modified since last sync\n stmt = 'SELECT count(*) AS mcount FROM ';\n stmt += `${rTable.name} WHERE last_modified > `;\n stmt += `${syncDate};`;\n retQuery = await this.sqliteUtil.queryAll(db, stmt, []);\n if (retQuery.length != 1)\n break;\n const totalModifiedCount = retQuery[0]['mcount'];\n if (totalModifiedCount === 0) {\n mode = 'No';\n }\n else if (totalCount === totalModifiedCount) {\n mode = 'Create';\n }\n else {\n mode = 'Modified';\n }\n const key = rTable.name;\n retModified[key] = mode;\n }\n if (errmsg.length > 0) {\n return Promise.reject(errmsg);\n }\n return Promise.resolve(retModified);\n }\n catch (err) {\n return Promise.reject(`GetTableModified: ${err}`);\n }\n }\n async modEmbeddedParentheses(sstr) {\n const oParArray = this.indexOfChar(sstr, '(');\n const cParArray = this.indexOfChar(sstr, ')');\n if (oParArray.length != cParArray.length) {\n return Promise.reject(\"ModEmbeddedParentheses: Not same number of '(' & ')'\");\n }\n if (oParArray.length === 0) {\n return Promise.resolve(sstr);\n }\n let resStmt = sstr.substring(0, oParArray[0] - 1);\n for (let i = 0; i < oParArray.length; i++) {\n let str;\n if (i < oParArray.length - 1) {\n if (oParArray[i + 1] < cParArray[i]) {\n str = sstr.substring(oParArray[i] - 1, cParArray[i + 1]);\n i++;\n }\n else {\n str = sstr.substring(oParArray[i] - 1, cParArray[i]);\n }\n }\n else {\n str = sstr.substring(oParArray[i] - 1, cParArray[i]);\n }\n const newS = str.replace(/,/g, '§');\n resStmt += newS;\n if (i < oParArray.length - 1) {\n resStmt += sstr.substring(cParArray[i], oParArray[i + 1] - 1);\n }\n }\n resStmt += sstr.substring(cParArray[cParArray.length - 1], sstr.length);\n return Promise.resolve(resStmt);\n }\n indexOfChar(str, char) {\n const tmpArr = [...str];\n char = char.toLowerCase();\n return tmpArr.reduce((results, elem, idx) => elem.toLowerCase() === char ? [...results, idx] : results, []);\n }\n}\nexports.ExportToJson = ExportToJson;\n//# sourceMappingURL=exportToJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsDrop = void 0;\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nclass UtilsDrop {\n constructor() {\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n }\n /**\n * DropElements\n * @param db\n * @param type [\"table\",\"index\",\"trigger\"]\n */\n async dropElements(db, type) {\n let msg = '';\n let stmt1 = `AND name NOT LIKE ('sqlite_%')`;\n switch (type) {\n case 'index':\n msg = 'DropIndexes';\n break;\n case 'trigger':\n msg = 'DropTriggers';\n break;\n case 'table':\n msg = 'DropTables';\n stmt1 += ` AND name NOT IN ('sync_table')`;\n break;\n case 'view':\n msg = 'DropViews';\n break;\n default:\n return Promise.reject(`DropElements: ${type} ` + 'not found');\n }\n // get the element's names\n let stmt = 'SELECT name FROM sqlite_master WHERE ';\n stmt += `type = '${type}' ${stmt1};`;\n try {\n const elements = await this.sqliteUtil.queryAll(db, stmt, []);\n if (elements.length > 0) {\n const upType = type.toUpperCase();\n const statements = [];\n for (const elem of elements) {\n let stmt = `DROP ${upType} IF EXISTS `;\n stmt += `${elem.name};`;\n statements.push(stmt);\n }\n for (const stmt of statements) {\n const lastId = await this.sqliteUtil.prepareRun(db, stmt, [], false);\n if (lastId < 0) {\n return Promise.reject(`${msg}: lastId < 0`);\n }\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`${msg}: ${err}`);\n }\n }\n /**\n * DropAll\n * Drop all database's elements\n * @param db\n */\n async dropAll(db) {\n try {\n // drop tables\n await this.dropElements(db, 'table');\n // drop indexes\n await this.dropElements(db, 'index');\n // drop triggers\n await this.dropElements(db, 'trigger');\n // drop views\n await this.dropElements(db, 'view');\n // vacuum the database\n await this.sqliteUtil.prepareRun(db, 'VACUUM;', [], false);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`DropAll: ${err}`);\n }\n }\n /**\n * DropTempTables\n * @param db\n * @param alterTables\n */\n async dropTempTables(db, alterTables) {\n const tempTables = Object.keys(alterTables);\n const statements = [];\n for (const tTable of tempTables) {\n let stmt = 'DROP TABLE IF EXISTS ';\n stmt += `_temp_${tTable};`;\n statements.push(stmt);\n }\n try {\n const changes = await this.sqliteUtil.execute(db, statements.join('\\n'), false);\n if (changes < 0) {\n return Promise.reject('DropTempTables: changes < 0');\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`DropTempTables: ${err}`);\n }\n }\n}\nexports.UtilsDrop = UtilsDrop;\n//# sourceMappingURL=utilsDrop.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImportFromJson = void 0;\nconst utilsDrop_1 = require(\"../utilsDrop\");\nconst utilsSQLite_1 = require(\"../utilsSQLite\");\nconst utilsJson_1 = require(\"./utilsJson\");\nclass ImportFromJson {\n constructor() {\n this.jsonUtil = new utilsJson_1.UtilsJson();\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n this.dropUtil = new utilsDrop_1.UtilsDrop();\n }\n /**\n * CreateDatabaseSchema\n * @param mDB\n * @param jsonData\n */\n async createDatabaseSchema(mDB, jsonData) {\n let changes = -1;\n const version = jsonData.version;\n try {\n // set User Version PRAGMA\n await this.sqliteUtil.setVersion(mDB, version);\n // DROP ALL when mode=\"full\"\n if (jsonData.mode === 'full') {\n await this.dropUtil.dropAll(mDB);\n }\n // create database schema\n changes = await this.jsonUtil.createSchema(mDB, jsonData);\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject('CreateDatabaseSchema: ' + `${err}`);\n }\n }\n async createTablesData(mDB, jsonData) {\n let changes = 0;\n let isValue = false;\n let lastId = -1;\n let msg = '';\n let initChanges = -1;\n try {\n initChanges = await this.sqliteUtil.dbChanges(mDB);\n // start a transaction\n await this.sqliteUtil.beginTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(`createTablesData: ${err}`);\n }\n for (const jTable of jsonData.tables) {\n if (jTable.values != null && jTable.values.length >= 1) {\n // Create the table's data\n try {\n lastId = await this.jsonUtil.createDataTable(mDB, jTable, jsonData.mode);\n if (lastId < 0)\n break;\n isValue = true;\n }\n catch (err) {\n msg = err;\n isValue = false;\n break;\n }\n }\n }\n if (isValue) {\n try {\n await this.sqliteUtil.commitTransaction(mDB, true);\n changes = (await this.sqliteUtil.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject('createTablesData: ' + `${err}`);\n }\n }\n else {\n if (msg.length > 0) {\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n return Promise.reject(new Error(`createTablesData: ${msg}`));\n }\n catch (err) {\n return Promise.reject('createTablesData: ' + `${err}: ${msg}`);\n }\n }\n else {\n // case were no values given\n return Promise.resolve(0);\n }\n }\n }\n /**\n * CreateViews\n * @param mDB\n * @param jsonData\n */\n async createViews(mDB, jsonData) {\n let isView = false;\n let msg = '';\n let initChanges = -1;\n let changes = -1;\n try {\n initChanges = await this.sqliteUtil.dbChanges(mDB);\n // start a transaction\n await this.sqliteUtil.beginTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject(`createViews: ${err}`);\n }\n for (const jView of jsonData.views) {\n if (jView.value != null) {\n // Create the view\n try {\n await this.jsonUtil.createView(mDB, jView);\n isView = true;\n }\n catch (err) {\n msg = err;\n isView = false;\n break;\n }\n }\n }\n if (isView) {\n try {\n await this.sqliteUtil.commitTransaction(mDB, true);\n changes = (await this.sqliteUtil.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject('createViews: ' + `${err}`);\n }\n }\n else {\n if (msg.length > 0) {\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n return Promise.reject(new Error(`createViews: ${msg}`));\n }\n catch (err) {\n return Promise.reject('createViews: ' + `${err}: ${msg}`);\n }\n }\n else {\n // case were no views given\n return Promise.resolve(0);\n }\n }\n }\n}\nexports.ImportFromJson = ImportFromJson;\n//# sourceMappingURL=importFromJson.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsFile = void 0;\nconst promises_1 = require(\"node:fs/promises\");\nclass UtilsFile {\n constructor() {\n this.pathDB = 'Databases';\n this.Path = null;\n this.NodeFs = null;\n this.NodeFetch = null;\n this.JSZip = null;\n this.Os = null;\n this.Electron = null;\n this.AppName = '';\n this.HomeDir = '';\n this.sep = '/';\n this.Path = require('path');\n this.NodeFs = require('fs');\n this.NodeFetch = require('node-fetch');\n this.Os = require('os');\n this.JSZip = require('jszip');\n this.Electron = require('electron');\n this.HomeDir = this.Os.homedir();\n const dir = __dirname;\n const idx = dir.indexOf('\\\\');\n if (idx != -1)\n this.sep = '\\\\';\n this.appPath = this.Electron.app.getAppPath();\n const rawdata = this.NodeFs.readFileSync(this.Path.resolve(this.appPath, 'package.json'));\n this.AppName = JSON.parse(rawdata).name;\n const pathToBuild = this.Path.join(this.appPath, 'build');\n if (this.NodeFs.existsSync(this.Path.join(pathToBuild, 'capacitor.config.js'))) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n this.capConfig = require(this.Path.join(pathToBuild, 'capacitor.config.js')).default;\n }\n else {\n this.capConfig = JSON.parse(this.NodeFs.readFileSync(this.Path.join(this.appPath, 'capacitor.config.json')).toString());\n }\n this.osType = this.Os.type();\n switch (this.osType) {\n case 'Darwin':\n this.pathDB =\n this.capConfig.plugins.CapacitorSQLite.electronMacLocation;\n break;\n case 'Linux':\n this.pathDB =\n this.capConfig.plugins.CapacitorSQLite.electronLinuxLocation;\n break;\n case 'Windows_NT':\n this.pathDB =\n this.capConfig.plugins.CapacitorSQLite.electronWindowsLocation;\n break;\n default:\n console.log('other operating system');\n }\n console.log(`&&& Databases path: ${this.pathDB}`);\n }\n /**\n * GetExtName\n * @param filePath\n * @returns\n */\n getExtName(filePath) {\n return this.Path.extname(filePath);\n }\n getBaseName(filePath) {\n return this.Path.basename(filePath, this.Path.extname(filePath));\n }\n /**\n * IsPathExists\n * @param filePath\n */\n isPathExists(filePath) {\n let ret = false;\n try {\n if (this.NodeFs.existsSync(filePath)) {\n ret = true;\n }\n }\n catch (err) {\n console.error('Error isFileExist: ' + err);\n ret = false;\n }\n return ret;\n }\n /**\n * IsFileExists\n * @param fileName\n */\n isFileExists(fileName) {\n let ret = false;\n const filePath = this.getFilePath(fileName);\n if (filePath.length > 0) {\n ret = this.isPathExists(filePath);\n }\n return ret;\n }\n /**\n * GetFilePath\n * get the file path\n * @param fileName\n */\n getFilePath(fileName) {\n return this.Path.join(this.getDatabasesPath(), fileName);\n }\n /**\n * GetDatabasesPath\n * get the database folder path\n */\n getDatabasesPath() {\n let retPath = '';\n const sep = this.Path.sep;\n const dbFolder = this.pathDB;\n if (dbFolder.includes(sep)) {\n retPath = dbFolder;\n if (this.Path.basename(dbFolder) !== this.AppName) {\n retPath = this.Path.join(dbFolder, this.AppName);\n }\n }\n else {\n retPath = this.Path.join(this.HomeDir, dbFolder, this.AppName);\n }\n const retB = this._createFolderIfNotExists(retPath);\n if (!retB)\n retPath = '';\n return retPath;\n }\n /**\n * GetCachePath\n * get the database cache folder path\n */\n getCachePath() {\n let retPath = '';\n const databasePath = this.getDatabasesPath();\n retPath = this.Path.join(databasePath, 'cache');\n const retB = this._createFolderIfNotExists(retPath);\n if (!retB)\n retPath = '';\n return retPath;\n }\n /**\n * GetAssetsDatabasesPath\n * get the assets databases folder path\n */\n getAssetsDatabasesPath() {\n let retPath = '';\n const webDir = this.capConfig.webDir;\n const dir = webDir === 'www' ? 'src' : 'public';\n let mAppPath = this.appPath;\n if (this.Path.basename(this.appPath) === 'electron') {\n mAppPath = this.Path.dirname(this.appPath);\n }\n retPath = this.Path.resolve(mAppPath, dir, 'assets', 'databases');\n return retPath;\n }\n /**\n * SetPathSuffix\n * @param db\n */\n setPathSuffix(db) {\n let toDb = db;\n const ext = '.db';\n const dirName = this.Path.dirname(db);\n const baseName = this.getBaseName(db);\n if (this.getExtName(db) === ext) {\n if (!baseName.includes('SQLite')) {\n const dbName = `${baseName}SQLite`;\n toDb = `${this.Path.join(dirName, dbName)}${ext}`;\n }\n }\n return toDb;\n }\n /**\n * GetFileList\n * get the file list for a given folder\n * @param path\n */\n async getFileList(path) {\n const filenames = this.NodeFs.readdirSync(path);\n const dbs = [];\n filenames.forEach((file) => {\n if (this.getExtName(file) == '.db' || this.getExtName(file) == '.zip')\n dbs.push(file);\n });\n return Promise.resolve(dbs);\n }\n /**\n * CopyFromAssetToDatabase\n * @param db\n * @param overwrite\n */\n async copyFromAssetToDatabase(db, overwrite) {\n const pAsset = this.Path.join(this.getAssetsDatabasesPath(), db);\n const toDb = this.setPathSuffix(db);\n const pDb = this.Path.join(this.getDatabasesPath(), toDb);\n await this.copyFilePath(pAsset, pDb, overwrite);\n return Promise.resolve();\n }\n /**\n * unzipDatabase\n * @param db\n * @param overwrite\n */\n async unzipDatabase(db, fPath, overwrite) {\n const pZip = this.Path.join(fPath, db);\n // Read the Zip file\n this.NodeFs.readFile(pZip, (err, data) => {\n if (err) {\n console.log(err);\n return Promise.reject(`unzipDatabase ${JSON.stringify(err)}`);\n }\n const zip = new this.JSZip();\n zip.loadAsync(data).then((contents) => {\n Object.keys(contents.files).forEach(filename => {\n zip\n .file(filename)\n .async('nodebuffer')\n .then(async (content) => {\n const toDb = this.setPathSuffix(filename);\n const pDb = this.Path.join(this.getDatabasesPath(), toDb);\n // check filePath exists\n const isPath = this.isPathExists(pDb);\n if (!isPath || overwrite) {\n if (overwrite && isPath) {\n await this.deleteFilePath(pDb);\n }\n this.NodeFs.writeFileSync(pDb, content);\n }\n return Promise.resolve();\n });\n });\n });\n });\n }\n /**\n * CopyFileName\n * Copy file name\n * @param fileName\n * @param toFileName\n */\n async copyFileName(fileName, toFileName) {\n // get File Paths\n const filePath = this.getFilePath(fileName);\n const toFilePath = this.getFilePath(toFileName);\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n try {\n await this.copyFilePath(filePath, toFilePath, true);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`CopyFileName: ${err}`);\n }\n }\n else {\n return Promise.reject('CopyFileName: cannot get the ' + 'filePath');\n }\n }\n /**\n * CopyFilePath\n * Copy file Path\n * @param filePath\n * @param toFilePath\n */\n async copyFilePath(filePath, toFilePath, overwrite) {\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n // check filePath exists\n const isPath = this.isPathExists(toFilePath);\n if (!isPath || overwrite) {\n try {\n if (overwrite && isPath) {\n await this.deleteFilePath(toFilePath);\n }\n this.NodeFs.copyFileSync(filePath, toFilePath);\n }\n catch (err) {\n return Promise.reject(`CopyFilePath: ${err}`);\n }\n }\n return Promise.resolve();\n }\n else {\n return Promise.reject('CopyFilePath: cannot get the ' + 'filePath');\n }\n }\n async copyFile(fromPath, fromFile, toPath, toFile) {\n const fPath = this.Path.join(fromPath, fromFile);\n const tPath = this.Path.join(toPath, toFile);\n try {\n this.NodeFs.copyFileSync(fPath, tPath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`CopyFile: ${err}`);\n }\n }\n /**\n * DeleteFileName\n * Delete a file by its name\n * @param fileName\n */\n async deleteFileName(fileName) {\n // get file path\n const filePath = this.getFilePath(fileName);\n if (filePath.length !== 0) {\n try {\n await this.deleteFilePath(filePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject('DeleteFileName: delete filePath ' + `failed ${err}`);\n }\n }\n else {\n return Promise.reject('DeleteFileName: get filePath ' + 'failed');\n }\n }\n /**\n * DeleteFilePath\n * Delete a file by its path\n * @param filePath\n */\n async deleteFilePath(filePath) {\n let unlinkRetries = 50000;\n /**\n * On windows, the file lock behaves unpredictable. Often it claims a databsae file is locked / busy, although\n * the file stream is already closed.\n * Even though we already checked the status with the `waitForFilePathLock()` method previously.\n *\n * The only way to handle this reliably is to retry deletion until it works.\n */\n const deleteFile = async () => {\n try {\n await promises_1.unlink(filePath);\n }\n catch (err) {\n unlinkRetries--;\n if (unlinkRetries > 0) {\n await deleteFile();\n }\n else {\n throw err;\n }\n }\n };\n if (filePath.length !== 0) {\n // check if path exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n try {\n await this.waitForFilePathLock(filePath);\n // actually delete the file\n await deleteFile();\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`DeleteFilePath: ${err}`);\n }\n }\n else {\n return Promise.resolve();\n }\n }\n else {\n return Promise.reject('DeleteFilePath: delete filePath' + 'failed');\n }\n }\n async waitForFilePathLock(filePath, timeoutMS = 4000) {\n let timeIsOver = false;\n setTimeout(() => {\n timeIsOver = true;\n }, timeoutMS);\n return new Promise((resolve, reject) => {\n const check = async () => {\n if (timeIsOver) {\n reject(new Error(`WaitForFilePathLock: The resource is still locked / busy after ${timeoutMS} milliseconds.`));\n return;\n }\n // check if path exists\n const isPath = this.isPathExists(filePath);\n // The file path does not exist. A non existant path cannot be locked.\n if (!isPath) {\n resolve();\n return;\n }\n try {\n const stream = await promises_1.open(filePath, 'r+');\n // We need to close the stream afterwards, because otherwise, we're locking the file\n await stream.close();\n resolve();\n }\n catch (err) {\n if (err.code === 'EBUSY') {\n // The resource is busy. Retry in 100ms\n setTimeout(() => {\n check();\n }, 100);\n return;\n }\n else if (err.code === 'ENOENT') {\n // The file does not exist (anymore). So it cannot be locked.\n resolve();\n return;\n }\n else {\n // Something else went wrong.\n reject(new Error(`WaitForFilePathLock: Error while checking the file: ${err}`));\n }\n }\n };\n check();\n });\n }\n /**\n * RenameFileName\n * @param fileName\n * @param toFileName\n */\n async renameFileName(fileName, toFileName) {\n // get File Paths\n const filePath = this.getFilePath(fileName);\n const toFilePath = this.getFilePath(toFileName);\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n try {\n await this.renameFilePath(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`RenameFileName: ${err}`);\n }\n }\n else {\n return Promise.reject('RenameFileName: filePaths do not ' + 'exist');\n }\n }\n /**\n * RenameFilePath\n * @param filePath\n * @param toFilePath\n */\n async renameFilePath(filePath, toFilePath) {\n if (filePath.length !== 0 && toFilePath.length !== 0) {\n // check filePath exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n // delete toFilePath if exists\n try {\n await this.deleteFilePath(toFilePath);\n this.NodeFs.renameSync(filePath, toFilePath);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject('RenameFilePath: ' + `${err}`);\n }\n }\n else {\n return Promise.reject(`RenameFilePath: ${filePath} does not exist`);\n }\n }\n else {\n return Promise.reject('RenameFilePath: filePath not found');\n }\n }\n async moveDatabaseFromCache() {\n const cachePath = this.getCachePath();\n const databasePath = this.getDatabasesPath();\n const dbCacheList = await this.getFileList(cachePath);\n for (const name of dbCacheList) {\n const ext = this.getExtName(name);\n const fromDBName = this.Path.join(cachePath, name);\n if (ext === '.db') {\n const pDb = this.setPathSuffix(this.Path.join(databasePath, name));\n try {\n await this.renameFilePath(fromDBName, pDb);\n }\n catch (err) {\n return Promise.reject('moveDatabaseFromCache: ' + `${err}`);\n }\n }\n if (ext === '.zip') {\n try {\n await this.deleteFilePath(fromDBName);\n }\n catch (err) {\n return Promise.reject('moveDatabaseFromCache: ' + `${err}`);\n }\n }\n }\n }\n /**\n * RestoreFileName\n * @param fileName\n * @param prefix\n */\n async restoreFileName(fileName, prefix) {\n const mFileName = `${prefix}-${fileName}`;\n // check if file exists\n const isFilePre = this.isFileExists(mFileName);\n if (isFilePre) {\n const isFile = this.isFileExists(fileName);\n if (isFile) {\n try {\n await this.deleteFileName(fileName);\n await this.renameFileName(mFileName, fileName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject('RestoreFileName: ' + `${err}`);\n }\n }\n else {\n return Promise.reject(`RestoreFileName: ${fileName} ` + 'does not exist');\n }\n }\n else {\n return Promise.reject(`RestoreFileName: ${mFileName} ` + 'does not exist');\n }\n }\n /**\n * DownloadFileFromHTTP\n * @param url\n * @param path\n */\n async downloadFileFromHTTP(url, pathFolder) {\n const res = await this.NodeFetch(url);\n const ext = this.getExtName(url);\n const dbName = this.getBaseName(url);\n const filePath = `${this.Path.join(pathFolder, dbName)}${ext}`;\n const fileStream = this.NodeFs.createWriteStream(filePath);\n await new Promise((resolve, reject) => {\n res.body.pipe(fileStream);\n res.body.on('error', reject);\n fileStream.on('finish', resolve);\n });\n }\n /**\n * CreateFolderIfNotExists\n * Create directory\n * @param folder\n */\n _createFolderIfNotExists(folder) {\n let ret;\n try {\n if (!this.NodeFs.existsSync(folder)) {\n this._mkdirSyncRecursive(folder);\n }\n ret = true;\n }\n catch (e) {\n console.log('Error: in getDBPath', e);\n ret = false;\n }\n return ret;\n }\n /**\n * MkdirSyncRecursive\n * Create directories recursively\n * @param directory\n */\n _mkdirSyncRecursive(directory) {\n const sep = this.Path.sep;\n const path = directory.replace(/\\/$/, '').split(sep);\n for (let i = 1; i <= path.length; i++) {\n const segment = path.slice(0, i).join(sep);\n segment.length > 0 && !this.NodeFs.existsSync(segment)\n ? this.NodeFs.mkdirSync(segment)\n : null;\n }\n return;\n }\n}\nexports.UtilsFile = UtilsFile;\n//# sourceMappingURL=utilsFile.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsEncryption = void 0;\nconst utilsFile_1 = require(\"./utilsFile\");\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nclass UtilsEncryption {\n constructor() {\n this.fileUtil = new utilsFile_1.UtilsFile();\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n }\n /**\n * EncryptDatabase\n * @param pathDB\n * @param password\n */\n encryptDatabase(pathDB, password) {\n return new Promise(async (resolve, reject) => {\n const msg = 'EncryptDatabase: ';\n let retB = this.fileUtil.isPathExists(pathDB);\n if (retB) {\n let tempPath = this.fileUtil.getFilePath('temp.db');\n try {\n await this.fileUtil.renameFilePath(pathDB, tempPath);\n const oDB = await this.sqliteUtil.openOrCreateDatabase(tempPath, '', false);\n const mDB = await this.sqliteUtil.openOrCreateDatabase(pathDB, password, false);\n await this.sqlcipherEncrypt(oDB, pathDB, password);\n oDB.close();\n this.fileUtil.deleteFilePath(tempPath);\n mDB.close();\n resolve();\n }\n catch (err) {\n reject(new Error(`${msg} ${err.message} `));\n }\n }\n else {\n reject(new Error(`${msg}file path ${pathDB} ` + 'does not exist'));\n }\n });\n }\n /**\n * SqlcipherEncrypt\n * @param oDB\n * @param pathDB\n * @param password\n */\n sqlcipherEncrypt(oDB, pathDB, password) {\n return new Promise(async (resolve) => {\n oDB.serialize(() => {\n let stmt = `ATTACH DATABASE '${pathDB}' `;\n stmt += `AS encrypted KEY '${password}';`;\n oDB.run(stmt);\n oDB.run(\"SELECT sqlcipher_export('encrypted');\");\n oDB.run('DETACH DATABASE encrypted;');\n });\n resolve();\n });\n }\n}\nexports.UtilsEncryption = UtilsEncryption;\n//# sourceMappingURL=utilsEncryption.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsUpgrade = void 0;\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nclass UtilsUpgrade {\n constructor() {\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n }\n /**\n * OnUpgrade\n * @param mDB\n * @param vUpgDict\n * @param dbName\n * @param curVersion\n * @param targetVersion\n */\n async onUpgrade(mDB, vUpgDict, curVersion, targetVersion) {\n let changes;\n const sortedKeys = new Int32Array(Object.keys(vUpgDict).map(item => parseInt(item))).sort();\n console.log(`@@@ sortedKeys: ${sortedKeys}`);\n for (const versionKey of sortedKeys) {\n if (versionKey > curVersion && versionKey <= targetVersion) {\n const statements = vUpgDict[versionKey].statements;\n if (statements.length === 0) {\n return Promise.reject('onUpgrade: statements not given');\n }\n try {\n // set Foreign Keys Off\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(mDB, false);\n const initChanges = await this.sqliteUtil.dbChanges(mDB);\n await this.executeStatementsProcess(mDB, statements);\n await this.sqliteUtil.setVersion(mDB, versionKey);\n // set Foreign Keys On\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(mDB, true);\n changes = (await this.sqliteUtil.dbChanges(mDB)) - initChanges;\n }\n catch (err) {\n console.log(`@@@@ onUpgrade: ${err}`);\n return Promise.reject(`onUpgrade: ${err}`);\n }\n }\n }\n return Promise.resolve(changes);\n }\n /**\n * ExecuteStatementProcess\n * @param mDB\n * @param statements\n */\n async executeStatementsProcess(mDB, statements) {\n try {\n await this.sqliteUtil.beginTransaction(mDB, true);\n for (const statement of statements) {\n console.log(`@@@ statement: ${statement}`);\n await this.sqliteUtil.execute(mDB, statement, false);\n }\n await this.sqliteUtil.commitTransaction(mDB, true);\n return Promise.resolve();\n }\n catch (err) {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n console.log(`@@@ ExecuteStatementProcess: ${err}`);\n return Promise.reject(`ExecuteStatementProcess: ${err}`);\n }\n }\n}\nexports.UtilsUpgrade = UtilsUpgrade;\n//# sourceMappingURL=utilsUpgrade.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Database = void 0;\nconst GlobalSQLite_1 = require(\"../GlobalSQLite\");\nconst exportToJson_1 = require(\"./ImportExportJson/exportToJson\");\nconst importFromJson_1 = require(\"./ImportExportJson/importFromJson\");\nconst utilsJson_1 = require(\"./ImportExportJson/utilsJson\");\nconst utilsEncryption_1 = require(\"./utilsEncryption\");\nconst utilsFile_1 = require(\"./utilsFile\");\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nconst utilsUpgrade_1 = require(\"./utilsUpgrade\");\nclass Database {\n constructor(dbName, encrypted, mode, version, readonly, upgDict, globalUtil) {\n this.fileUtil = new utilsFile_1.UtilsFile();\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n this.jsonUtil = new utilsJson_1.UtilsJson();\n this.globalUtil = new GlobalSQLite_1.GlobalSQLite();\n this.encryptionUtil = new utilsEncryption_1.UtilsEncryption();\n this.upgradeUtil = new utilsUpgrade_1.UtilsUpgrade();\n this.importFromJsonUtil = new importFromJson_1.ImportFromJson();\n this.exportToJsonUtil = new exportToJson_1.ExportToJson();\n this.upgradeVersionDict = {};\n this.dbName = dbName;\n this._encrypted = encrypted;\n this._mode = mode;\n this.version = version;\n this.readonly = readonly;\n this.upgradeVersionDict = upgDict;\n this.pathDB = this.fileUtil.getFilePath(dbName);\n this._isDbOpen = false;\n this.globalUtil = globalUtil ? globalUtil : new GlobalSQLite_1.GlobalSQLite();\n if (this.pathDB.length === 0)\n throw new Error('Could not generate a path to ' + dbName);\n }\n /**\n * IsDBOpen\n * return the database status\n * @param options: capSQLiteOptions\n * @returns boolean\n * @since 0.0.1\n */\n isDBOpen() {\n return this._isDbOpen;\n }\n /**\n * Open\n * open the @journeyapps/sqlcipher sqlite3 database\n * @returns Promise<boolean>\n */\n async open() {\n this._isDbOpen = false;\n let password = '';\n try {\n if (this._encrypted &&\n (this._mode === 'secret' || this._mode === 'encryption')) {\n password = this.globalUtil.secret;\n }\n if (this._mode === 'newsecret') {\n // change the password\n const oPassword = this.globalUtil.secret;\n const nPassword = this.globalUtil.newsecret;\n await this.sqliteUtil.changePassword(this.pathDB, oPassword, nPassword);\n password = nPassword;\n }\n if (this._mode === 'encryption') {\n await this.encryptionUtil.encryptDatabase(this.pathDB, password);\n }\n this.database = await this.sqliteUtil.openOrCreateDatabase(this.pathDB, password, this.readonly);\n this._isDbOpen = true;\n if (!this.readonly) {\n const curVersion = await this.sqliteUtil.getVersion(this.database);\n console.log(`@@@@ this.readonly: ${this.readonly}`);\n console.log(`@@@@ this.version: ${this.version} curVersion: ${curVersion}`);\n if (this.version > curVersion &&\n Object.keys(this.upgradeVersionDict).length > 0) {\n try {\n await this.fileUtil.copyFileName(this.dbName, `backup-${this.dbName}`);\n // execute the upgrade flow process\n await this.upgradeUtil.onUpgrade(this.database, this.upgradeVersionDict, curVersion, this.version);\n // delete the backup database\n await this.fileUtil.deleteFileName(`backup-${this.dbName}`);\n }\n catch (err) {\n // restore the database from backup\n try {\n await this.fileUtil.restoreFileName(this.dbName, 'backup');\n }\n catch (err) {\n throw new Error(`Open: ${err}`);\n }\n }\n }\n }\n return;\n }\n catch (err) {\n if (this._isDbOpen)\n this.close();\n throw new Error(`Open: ${err}`);\n }\n }\n /**\n * Close\n * close the @journeyapps/sqlcipher sqlite3 database\n * @returns Promise<boolean>\n */\n async close() {\n this.ensureDatabaseIsOpen();\n return new Promise((resolve, reject) => {\n this.database.close((err) => {\n if (err) {\n reject(new Error(`Close failed: ${this.dbName} ${err}`));\n return;\n }\n this._isDbOpen = false;\n resolve();\n });\n });\n }\n /**\n * ChangeSecret\n * open the @journeyapps/sqlcipher sqlite3 database\n * @returns Promise<void>\n */\n async changeSecret() {\n try {\n if (this._mode === 'encryption') {\n // change the password\n const oPassword = this.globalUtil.secret;\n const nPassword = this.globalUtil.newsecret;\n await this.sqliteUtil.changePassword(this.pathDB, oPassword, nPassword);\n }\n return;\n }\n catch (err) {\n throw new Error(`Change secret: ${err}`);\n }\n }\n /**\n * GetVersion\n * get the database version\n * @returns Promise<number>\n */\n async getVersion() {\n this.ensureDatabaseIsOpen();\n try {\n const currentVersion = await this.sqliteUtil.getVersion(this.database);\n return currentVersion;\n }\n catch (err) {\n if (this._isDbOpen)\n this.close();\n throw new Error(`getVersion: ${err}`);\n }\n }\n /**\n * DeleteDB\n * delete a database\n * @param dbName: string\n * @returns Promise<boolean>\n */\n async deleteDB(dbName) {\n // test if file exists\n const isExists = this.fileUtil.isFileExists(dbName);\n if (isExists && !this._isDbOpen) {\n // open the database\n try {\n await this.open();\n }\n catch (err) {\n throw new Error(`DeleteDB: ${err}`);\n }\n }\n // close the database\n try {\n await this.close();\n }\n catch (err) {\n throw new Error('DeleteDB: Close failed');\n }\n // delete the database\n if (isExists) {\n try {\n await this.fileUtil.deleteFileName(dbName);\n }\n catch (err) {\n throw new Error(`DeleteDB: deleteFile ${dbName} failed ${err}`);\n }\n }\n return;\n }\n /**\n * IsTableExists\n * @param tableName\n * @returns\n */\n async isTableExists(tableName) {\n this.ensureDatabaseIsOpen();\n const isOpen = this._isDbOpen;\n try {\n const tableExistsResult = await this.jsonUtil.isTableExists(this.database, isOpen, tableName);\n return tableExistsResult;\n }\n catch (err) {\n throw new Error(`IsTableExists: ${err}`);\n }\n }\n /**\n * CreateSyncTable\n * create the synchronization table\n * @returns Promise<number>\n */\n async createSyncTable() {\n this.ensureDatabaseIsOpen();\n let changes = -1;\n const isOpen = this._isDbOpen;\n // check if the table has already being created\n try {\n const retB = await this.jsonUtil.isTableExists(this.database, isOpen, 'sync_table');\n if (!retB) {\n const isLastModified = await this.sqliteUtil.isLastModified(this.database, isOpen);\n const isSqlDeleted = await this.sqliteUtil.isSqlDeleted(this.database, isOpen);\n if (isLastModified && isSqlDeleted) {\n const date = Math.round(new Date().getTime() / 1000);\n let stmts = `\n CREATE TABLE IF NOT EXISTS sync_table (\n id INTEGER PRIMARY KEY NOT NULL,\n sync_date INTEGER\n );`;\n stmts += `INSERT INTO sync_table (sync_date) VALUES (\n \"${date}\");`;\n changes = await this.sqliteUtil.execute(this.database, stmts, false);\n if (changes < 0) {\n throw new Error(`CreateSyncTable: failed changes < 0`);\n }\n }\n else {\n throw new Error('No last_modified/sql_deleted columns in tables');\n }\n }\n else {\n changes = 0;\n }\n return changes;\n }\n catch (err) {\n throw new Error(`CreateSyncTable: ${err}`);\n }\n }\n /**\n * SetSyncDate\n * store the synchronization date\n * @param syncDate: string\n * @returns Promise<{result: boolean, message: string}>\n */\n async setSyncDate(syncDate) {\n this.ensureDatabaseIsOpen();\n try {\n const isTable = await this.jsonUtil.isTableExists(this.database, this._isDbOpen, 'sync_table');\n if (!isTable) {\n throw new Error('No sync_table available');\n }\n const syncDateUnixTimestamp = Math.round(new Date(syncDate).getTime() / 1000);\n let stmt = `UPDATE sync_table SET sync_date = `;\n stmt += `${syncDateUnixTimestamp} WHERE id = 1;`;\n const changes = await this.sqliteUtil.execute(this.database, stmt, false);\n if (changes < 0) {\n return { result: false, message: 'setSyncDate failed' };\n }\n else {\n return { result: true };\n }\n }\n catch (err) {\n return { result: false, message: `setSyncDate failed: ${err}` };\n }\n }\n /**\n * GetSyncDate\n * store the synchronization date\n * @returns Promise<{syncDate: number, message: string}>\n */\n async getSyncDate() {\n this.ensureDatabaseIsOpen();\n try {\n const isTable = await this.jsonUtil.isTableExists(this.database, this._isDbOpen, 'sync_table');\n if (!isTable) {\n throw new Error('No sync_table available');\n }\n const syncDate = await this.exportToJsonUtil.getSyncDate(this.database);\n if (syncDate > 0) {\n return { syncDate };\n }\n else {\n return { syncDate: 0, message: `setSyncDate failed` };\n }\n }\n catch (err) {\n return { syncDate: 0, message: `setSyncDate failed: ${err}` };\n }\n }\n /**\n * ExecuteSQL\n * execute raw sql statements store in a string\n * @param sql: string\n * @returns Promise<number>\n */\n async executeSQL(sql, transaction) {\n this.ensureDatabaseIsOpen();\n try {\n if (transaction) {\n const mode = await this.sqliteUtil.getJournalMode(this.database);\n console.log(`$$$ in executeSQL journal_mode: ${mode} $$$`);\n await this.sqliteUtil.beginTransaction(this.database, this._isDbOpen);\n }\n const changes = await this.sqliteUtil.execute(this.database, sql, false);\n if (changes < 0) {\n throw new Error('ExecuteSQL: changes < 0');\n }\n if (transaction) {\n await this.sqliteUtil.commitTransaction(this.database, this._isDbOpen);\n }\n return changes;\n }\n catch (executeError) {\n let message = `${executeError}`;\n try {\n if (transaction) {\n await this.sqliteUtil.rollbackTransaction(this.database, this._isDbOpen);\n }\n }\n catch (rollbackErr) {\n message += ` : ${rollbackErr}`;\n }\n throw new Error(`ExecuteSQL: ${message}`);\n }\n }\n /**\n * SelectSQL\n * execute a sql query with/without binding values\n * @param sql: string\n * @param values: string[]\n * @returns Promise<any[]>\n */\n async selectSQL(sql, values) {\n this.ensureDatabaseIsOpen();\n try {\n const selectResult = await this.sqliteUtil.queryAll(this.database, sql, values);\n return selectResult;\n }\n catch (err) {\n throw new Error(`SelectSQL: ${err}`);\n }\n }\n /**\n * runSQL\n * execute a raw sql statement with/without binding values\n * @param sql: string\n * @param values: string[]\n * @returns Promise<{changes:number, lastId:number}>\n */\n async runSQL(statement, values, transaction) {\n this.ensureDatabaseIsOpen();\n const result = { changes: -1, lastId: -1 };\n let initChanges = -1;\n try {\n initChanges = await this.sqliteUtil.dbChanges(this.database);\n // start a transaction\n if (transaction) {\n const mode = await this.sqliteUtil.getJournalMode(this.database);\n console.log(`$$$ in runSQL journal_mode: ${mode} $$$`);\n await this.sqliteUtil.beginTransaction(this.database, this._isDbOpen);\n }\n }\n catch (err) {\n throw new Error(`RunSQL: ${err}`);\n }\n try {\n const lastId = await this.sqliteUtil.prepareRun(this.database, statement, values, false);\n if (lastId < 0) {\n if (transaction) {\n await this.sqliteUtil.rollbackTransaction(this.database, this._isDbOpen);\n }\n throw new Error(`RunSQL: return LastId < 0`);\n }\n if (transaction) {\n await this.sqliteUtil.commitTransaction(this.database, this._isDbOpen);\n }\n result.changes =\n (await this.sqliteUtil.dbChanges(this.database)) - initChanges;\n result.lastId = lastId;\n return result;\n }\n catch (err) {\n if (transaction) {\n await this.sqliteUtil.rollbackTransaction(this.database, this._isDbOpen);\n }\n throw new Error(`RunSQL: ${err}`);\n }\n }\n /**\n * ExecSet\n * execute a set of raw sql statements with/without binding values\n * @param set: any[]\n * @returns Promise<{changes:number, lastId:number}>\n */\n async execSet(set, transaction) {\n this.ensureDatabaseIsOpen();\n const result = { changes: -1, lastId: -1 };\n let initChanges = -1;\n try {\n initChanges = await this.sqliteUtil.dbChanges(this.database);\n // start a transaction\n if (transaction) {\n const mode = await this.sqliteUtil.getJournalMode(this.database);\n console.log(`$$$ in execSet journal_mode: ${mode} $$$`);\n await this.sqliteUtil.beginTransaction(this.database, this._isDbOpen);\n }\n }\n catch (err) {\n throw new Error(`ExecSet: ${err}`);\n }\n try {\n result.lastId = await this.sqliteUtil.executeSet(this.database, set, false);\n if (transaction) {\n await this.sqliteUtil.commitTransaction(this.database, this._isDbOpen);\n }\n result.changes =\n (await this.sqliteUtil.dbChanges(this.database)) - initChanges;\n return result;\n }\n catch (err) {\n const message = err;\n try {\n if (transaction) {\n await this.sqliteUtil.rollbackTransaction(this.database, this._isDbOpen);\n }\n }\n catch (err) {\n throw new Error(`ExecSet: ${message}: ` + `${err}`);\n }\n }\n }\n async deleteExportedRows() {\n this.ensureDatabaseIsOpen();\n try {\n await this.exportToJsonUtil.delExportedRows(this.database);\n return;\n }\n catch (err) {\n throw new Error(`DeleteExportedRows: ${err}`);\n }\n }\n /**\n * GetTableList\n * get the table's list\n * @returns\n */\n async getTableList() {\n this.ensureDatabaseIsOpen();\n try {\n const tableNames = await this.sqliteUtil.getTablesNames(this.database);\n return tableNames;\n }\n catch (err) {\n throw new Error(`GetTableList: ${err}`);\n }\n }\n async importJson(jsonData) {\n let changes = 0;\n this.ensureDatabaseIsOpen();\n try {\n // set Foreign Keys Off\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(this.database, false);\n if (jsonData.tables && jsonData.tables.length > 0) {\n // create the database schema\n changes = await this.importFromJsonUtil.createDatabaseSchema(this.database, jsonData);\n if (changes != -1) {\n // create the tables data\n changes += await this.importFromJsonUtil.createTablesData(this.database, jsonData);\n }\n }\n if (jsonData.views && jsonData.views.length > 0) {\n // create the views\n changes += await this.importFromJsonUtil.createViews(this.database, jsonData);\n }\n // set Foreign Keys On\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(this.database, true);\n return changes;\n }\n catch (err) {\n throw new Error(`ImportJson: ${err}`);\n }\n }\n async exportJson(mode) {\n const inJson = {};\n inJson.database = this.dbName.slice(0, -9);\n inJson.version = this.version;\n inJson.encrypted = false;\n inJson.mode = mode;\n this.ensureDatabaseIsOpen();\n try {\n const isTable = await this.jsonUtil.isTableExists(this.database, this._isDbOpen, 'sync_table');\n if (isTable) {\n await this.exportToJsonUtil.setLastExportDate(this.database, new Date().toISOString());\n }\n const jsonResult = await this.exportToJsonUtil.createExportObject(this.database, inJson);\n const keys = Object.keys(jsonResult);\n if (keys.length === 0) {\n const msg = `ExportJson: return Object is empty ` + `No data to synchronize`;\n throw new Error(msg);\n }\n const isValid = this.jsonUtil.isJsonSQLite(jsonResult);\n if (isValid) {\n return jsonResult;\n }\n else {\n throw new Error(`ExportJson: retJson not valid`);\n }\n }\n catch (err) {\n throw new Error(`ExportJson: ${err}`);\n }\n }\n /**\n * Throws an error if `this._isDbOpen` is `false`.\n */\n ensureDatabaseIsOpen() {\n if (!this._isDbOpen || !this.database) {\n throw new Error(`getVersion: Database ${this.dbName} is not open yet. You should open it first.`);\n }\n }\n}\nexports.Database = Database;\n//# sourceMappingURL=Database.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CapacitorSQLite = void 0;\nconst GlobalSQLite_1 = require(\"./GlobalSQLite\");\nconst Database_1 = require(\"./electron-utils/Database\");\nconst utilsJson_1 = require(\"./electron-utils/ImportExportJson/utilsJson\");\nconst utilsFile_1 = require(\"./electron-utils/utilsFile\");\nclass CapacitorSQLite {\n constructor() {\n this.versionUpgrades = {};\n this.databases = {};\n this.fileUtil = new utilsFile_1.UtilsFile();\n this.jsonUtil = new utilsJson_1.UtilsJson();\n this.globalUtil = new GlobalSQLite_1.GlobalSQLite();\n }\n async createConnection(options) {\n const optionKeys = Object.keys(options);\n if (!optionKeys.includes('database')) {\n throw new Error('Must provide a database name');\n }\n const dbName = options.database;\n const version = options.version ? options.version : 1;\n // const encrypted = false;\n // const inMode = \"no-encryption\";\n const encrypted = options.encrypted\n ? options.encrypted\n : false;\n const inMode = options.mode === \"secret\"\n ? \"secret\"\n : options.mode === \"encryption\"\n ? \"encryption\"\n : 'no-encryption';\n const readonly = options.readonly ? options.readonly : false;\n let upgrades = {};\n const versionUpgradeKeys = Object.keys(this.versionUpgrades);\n if (versionUpgradeKeys.length !== 0 &&\n versionUpgradeKeys.includes(dbName)) {\n upgrades = this.versionUpgrades[dbName];\n }\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const databaseConnection = new Database_1.Database(dbName + 'SQLite.db', encrypted, inMode, version, readonly, upgrades, this.globalUtil);\n this.databases[connName] = databaseConnection;\n return;\n }\n async closeConnection(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n // close the database\n try {\n await database.close();\n }\n catch (err) {\n throw new Error(`CloseConnection command failed: close ${dbName} failed ${err.message}`);\n }\n }\n // remove the connection from dictionary\n delete this.databases[connName];\n }\n async echo(options) {\n const echoValue = this.getOptionValue(options, 'value');\n const echoResult = {};\n echoResult.value = echoValue;\n return echoResult;\n }\n async open(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n try {\n await database.open();\n return;\n }\n catch (err) {\n throw new Error(`Open: ${err}`);\n }\n }\n async close(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n await database.close();\n return;\n }\n catch (err) {\n throw new Error(`Close: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`Close: ${msg}`);\n }\n }\n async getVersion(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const version = await database.getVersion();\n const versionResult = {};\n versionResult.version = version;\n return versionResult;\n }\n catch (err) {\n throw new Error(`GetVersion: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`GetVersion: ${msg}`);\n }\n }\n async getTableList(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const tableList = await database.getTableList();\n const tableListResult = {};\n tableListResult.values = tableList;\n return tableListResult;\n }\n catch (err) {\n throw new Error(`GetTableList: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`GetTableList: ${msg}`);\n }\n }\n async execute(options) {\n const dbName = this.getOptionValue(options, 'database');\n const statements = this.getOptionValue(options, 'statements');\n const transaction = this.getOptionValue(options, 'transaction', true);\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`Execute: ${msg}`);\n }\n try {\n const executeResult = await database.executeSQL(statements, transaction);\n if (executeResult < 0) {\n throw new Error('Execute changes < 0');\n }\n else {\n return { changes: { changes: executeResult } };\n }\n }\n catch (err) {\n throw new Error(`Execute: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`Execute: ${msg}`);\n }\n }\n async executeSet(options) {\n const dbName = this.getOptionValue(options, 'database');\n const setOfStatements = this.getOptionValue(options, 'set');\n const transaction = this.getOptionValue(options, 'transaction', true);\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n for (const sStmt of setOfStatements) {\n if (!('statement' in sStmt) || !('values' in sStmt)) {\n throw new Error('ExecuteSet: Must provide a set as ' + 'Array of {statement,values}');\n }\n }\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`ExecuteSet failed: ${msg}`);\n }\n try {\n const execSetResult = await database.execSet(setOfStatements, transaction);\n if (execSetResult < 0) {\n throw new Error(`ExecuteSet failed changes <0`);\n }\n else {\n return { changes: execSetResult };\n }\n }\n catch (err) {\n throw new Error(`ExecuteSet failed: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`ExecuteSet failed: ${msg}`);\n }\n }\n async run(options) {\n const dbName = this.getOptionValue(options, 'database');\n const statement = this.getOptionValue(options, 'statement');\n const values = this.getOptionValue(options, 'values', []);\n const transaction = this.getOptionValue(options, 'transaction', true);\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`Run failed: ${msg}`);\n }\n try {\n const runResult = await database.runSQL(statement, values, transaction);\n return { changes: runResult };\n }\n catch (err) {\n throw new Error(`RUN failed: ${err} `);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`Run failed: ${msg}`);\n }\n }\n async query(options) {\n const dbName = this.getOptionValue(options, 'database');\n const statement = this.getOptionValue(options, 'statement');\n const values = this.getOptionValue(options, 'values', []);\n if (statement.length === 0) {\n throw new Error('Query: Statement may not be an empty string.');\n }\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const queryResult = await database.selectSQL(statement, values);\n return { values: queryResult };\n }\n catch (err) {\n throw new Error(`Query: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`Query: ${msg}`);\n }\n }\n async isDBExists(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n this.getDatabaseConnectionOrThrowError(connName);\n // if (database.isDBOpen()) {\n const isExists = this.fileUtil.isFileExists(dbName + 'SQLite.db');\n return { result: isExists };\n // } else {\n // const msg = `Database ${dbName} not opened`;\n // throw new Error(`isDBExists: ${msg}`);\n // }\n }\n async isDBOpen(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n const isOpen = database.isDBOpen();\n return { result: isOpen };\n }\n async isDatabase(options) {\n const dbName = this.getOptionValue(options, 'database');\n const isExists = this.fileUtil.isFileExists(dbName + 'SQLite.db');\n return { result: isExists };\n }\n async isTableExists(options) {\n const dbName = this.getOptionValue(options, 'database');\n const tableName = this.getOptionValue(options, 'table');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const isTableExistsResult = await database.isTableExists(tableName);\n return { result: isTableExistsResult };\n }\n catch (err) {\n throw new Error(`isTableExists: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`isTableExists: ${msg}`);\n }\n }\n async deleteDatabase(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`DeleteDatabase failed: ${msg}`);\n }\n try {\n await database.deleteDB(dbName + 'SQLite.db');\n return;\n }\n catch (err) {\n throw new Error(`DeleteDatabase: ${err}`);\n }\n }\n async isJsonValid(options) {\n const jsonString = this.getOptionValue(options, 'jsonstring');\n const jsonObj = JSON.parse(jsonString);\n const isValid = this.jsonUtil.isJsonSQLite(jsonObj);\n if (!isValid) {\n throw new Error('Stringify Json Object not Valid');\n }\n else {\n return { result: true };\n }\n }\n async importFromJson(options) {\n var _a, _b, _c, _d;\n const jsonString = this.getOptionValue(options, 'jsonstring');\n const jsonObj = JSON.parse(jsonString);\n const isValid = this.jsonUtil.isJsonSQLite(jsonObj);\n if (!isValid) {\n throw new Error('Must provide a valid JsonSQLite Object');\n }\n const vJsonObj = jsonObj;\n const dbName = `${vJsonObj.database}SQLite.db`;\n const targetDbVersion = (_a = vJsonObj.version) !== null && _a !== void 0 ? _a : 1;\n const overwrite = (_b = vJsonObj.overwrite) !== null && _b !== void 0 ? _b : false;\n const encrypted = (_c = vJsonObj.encrypted) !== null && _c !== void 0 ? _c : false;\n const mode = (_d = vJsonObj.mode) !== null && _d !== void 0 ? _d : 'no-encryption';\n // Create the database\n const database = new Database_1.Database(dbName, encrypted, mode, targetDbVersion, false, {}, this.globalUtil);\n try {\n if (overwrite && mode === 'full') {\n const isExists = this.fileUtil.isFileExists(dbName);\n if (isExists) {\n await this.fileUtil.deleteFileName(dbName);\n }\n }\n // Open the database\n await database.open();\n const tableList = await database.getTableList();\n if (mode === 'full' && tableList.length > 0) {\n const currentVersion = await database.getVersion();\n if (targetDbVersion < currentVersion) {\n throw new Error(`ImportFromJson: Cannot import a version lower than ${currentVersion}`);\n }\n if (currentVersion === targetDbVersion) {\n return { changes: { changes: 0 } };\n }\n }\n // Import the JsonSQLite Object\n const changes = await database.importJson(vJsonObj);\n // Close the database\n await database.close();\n return { changes: { changes: changes } };\n }\n catch (err) {\n throw new Error(`ImportFromJson: ${err}`);\n }\n }\n async exportToJson(options) {\n const dbName = this.getOptionValue(options, 'database');\n const exportMode = this.getOptionValue(options, 'jsonexportmode');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const exportJsonResult = await database.exportJson(exportMode);\n const resultKeys = Object.keys(exportJsonResult);\n if (resultKeys.includes('message')) {\n throw new Error(`exportToJson: ${exportJsonResult.message}`);\n }\n else {\n return { export: exportJsonResult };\n }\n }\n catch (err) {\n throw new Error(`ExportToJson: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`ExportToJson: ${msg}`);\n }\n }\n async createSyncTable(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`CreateSyncTable failed: ${msg}`);\n }\n try {\n const createTableSyncResult = await database.createSyncTable();\n return {\n changes: { changes: createTableSyncResult },\n };\n }\n catch (err) {\n throw new Error(`CreateSyncTable: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`CreateSyncTable: ${msg}`);\n }\n }\n async setSyncDate(options) {\n const dbName = this.getOptionValue(options, 'database');\n const syncDate = this.getOptionValue(options, 'syncdate');\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`SetSyncDate failed: ${msg}`);\n }\n try {\n await database.setSyncDate(syncDate);\n return;\n }\n catch (err) {\n throw new Error(`SetSyncDate: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`SetSyncDate: ${msg}`);\n }\n }\n async getSyncDate(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = readonly ? 'RO_' + dbName : 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n try {\n const ret = await database.getSyncDate();\n return Promise.resolve(ret);\n }\n catch (err) {\n throw new Error(`GetSyncDate: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`GetSyncDate: ${msg}`);\n }\n }\n async deleteExportedRows(options) {\n const dbName = this.getOptionValue(options, 'database');\n const readonly = options.readonly ? options.readonly : false;\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n if (database.isDBOpen()) {\n if (readonly) {\n const msg = 'not allowed in read-only mode ';\n throw new Error(`DeleteExportedRows: ${msg}`);\n }\n try {\n await database.deleteExportedRows();\n return Promise.resolve();\n }\n catch (err) {\n throw new Error(`DeleteExportedRows: ${err}`);\n }\n }\n else {\n const msg = `Database ${dbName} not opened`;\n throw new Error(`DeleteExportedRows: ${msg}`);\n }\n }\n async addUpgradeStatement(options) {\n const dbName = this.getOptionValue(options, 'database');\n const upgrades = this.getOptionValue(options, 'upgrade');\n for (const upgrade of upgrades) {\n const versionUpgradeKeys = Object.keys(upgrade);\n if (!versionUpgradeKeys.includes('toVersion') ||\n !versionUpgradeKeys.includes('statements')) {\n throw new Error('Must provide an upgrade capSQLiteVersionUpgrade Object');\n }\n if (typeof upgrade.toVersion != 'number') {\n throw new Error('upgrade.toVersion must be a number');\n }\n if (this.versionUpgrades[dbName]) {\n this.versionUpgrades[dbName][upgrade.toVersion] = upgrade;\n }\n else {\n const upgradeVersionDict = {};\n upgradeVersionDict[upgrade.toVersion] = upgrade;\n this.versionUpgrades[dbName] = upgradeVersionDict;\n }\n }\n console.log(`this.versionUpgrades: ${JSON.stringify(this.versionUpgrades)}`);\n return;\n }\n async copyFromAssets(options) {\n const overwrite = this.getOptionValue(options, 'overwrite', false);\n // check if the assets/database folder exists\n const assetsDbPath = this.fileUtil.getAssetsDatabasesPath();\n const pathExists = this.fileUtil.isPathExists(assetsDbPath);\n if (pathExists) {\n // get the database files\n const dbList = await this.fileUtil.getFileList(assetsDbPath);\n // loop through the database files\n dbList.forEach(async (db) => {\n if (this.fileUtil.getExtName(db) === '.db') {\n // for each copy the file to the Application database folder\n await this.fileUtil.copyFromAssetToDatabase(db, overwrite);\n }\n if (this.fileUtil.getExtName(db) === '.zip') {\n const assetPath = this.fileUtil.getAssetsDatabasesPath();\n await this.fileUtil.unzipDatabase(db, assetPath, overwrite);\n }\n });\n return;\n }\n else {\n throw new Error(`CopyFromAssets: assets/databases folder does not exist:[${assetsDbPath}]`);\n }\n }\n async getFromHTTPRequest(options) {\n const url = this.getOptionValue(options, 'url', '');\n const overwrite = this.getOptionValue(options, 'overwrite', false);\n if (url.length === 0) {\n throw new Error(`getFromHTTPRequest: You must give a database url`);\n }\n const cachePath = this.fileUtil.getCachePath();\n await this.fileUtil.downloadFileFromHTTP(url, cachePath);\n if (this.fileUtil.getExtName(url) === '.zip') {\n const zipName = `${this.fileUtil.getBaseName(url)}.zip`;\n await this.fileUtil.unzipDatabase(zipName, cachePath, overwrite);\n }\n if (overwrite) {\n await this.fileUtil.moveDatabaseFromCache();\n }\n else {\n throw new Error(`getFromHTTPRequest: cannot move file from cache overwrite: ${overwrite}`);\n }\n }\n async getDatabaseList() {\n // get the database folder\n const pathDatabase = this.fileUtil.getDatabasesPath();\n // get the list of databases\n const files = await this.fileUtil.getFileList(pathDatabase);\n if (files.length > 0) {\n return { values: files };\n }\n else {\n throw new Error(`isTableExists: No databases found in [${pathDatabase}]`);\n }\n }\n async checkConnectionsConsistency(options) {\n const dbNames = this.getOptionValue(options, 'dbNames');\n const openModes = this.getOptionValue(options, 'openModes');\n const checkConsistencyResult = {};\n checkConsistencyResult.result = false;\n const dbConns = [];\n dbNames.forEach((value, i) => {\n dbConns.push(`${openModes[i]}_${value}`);\n });\n try {\n let inConnectionsSet = new Set(Object.keys(this.databases));\n const outConnectionSet = new Set(dbConns);\n if (outConnectionSet.size === 0) {\n await this.resetDbDict(Object.keys(this.databases));\n return Promise.resolve(checkConsistencyResult);\n }\n if (inConnectionsSet.size < outConnectionSet.size) {\n await this.resetDbDict(Object.keys(this.databases));\n return Promise.resolve(checkConsistencyResult);\n }\n if (inConnectionsSet.size > outConnectionSet.size) {\n for (const key of inConnectionsSet) {\n if (!Array.from(outConnectionSet.keys()).includes(key)) {\n const opt = {};\n let readonly = false;\n if (key.substring(0, 3) === 'RO_') {\n readonly = true;\n }\n opt.database = key.substring(3);\n opt.readonly = readonly;\n await this.closeConnection(opt);\n }\n }\n }\n inConnectionsSet = new Set(Object.keys(this.databases));\n if (inConnectionsSet.size === outConnectionSet.size) {\n const symmetricDifferenceSet = await this.symmetricDifference(inConnectionsSet, outConnectionSet);\n if (symmetricDifferenceSet.size === 0) {\n checkConsistencyResult.result = true;\n return checkConsistencyResult;\n }\n else {\n await this.resetDbDict(Object.keys(this.databases));\n return checkConsistencyResult;\n }\n }\n else {\n await this.resetDbDict(Object.keys(this.databases));\n return checkConsistencyResult;\n }\n }\n catch (err) {\n throw new Error(`CheckConnectionsConsistency: ${err}`);\n }\n }\n async resetDbDict(keys) {\n try {\n for (const key of keys) {\n const opt = {};\n let readonly = false;\n if (key.substring(0, 3) === 'RO_') {\n readonly = true;\n }\n opt.database = key.substring(3);\n opt.readonly = readonly;\n await this.closeConnection(opt);\n }\n }\n catch (err) {\n throw new Error(`ResetDbDict: ${err}`);\n }\n }\n async symmetricDifference(setA, setB) {\n const difference = new Set(setA);\n for (const elem of setB) {\n if (difference.has(elem)) {\n difference.delete(elem);\n }\n else {\n difference.add(elem);\n }\n }\n return difference;\n }\n /**\n * Returns a database connection, if it already exists.\n * If the conneciton does not exist yet, it throws an error.\n *\n * @param dbName\n * @returns\n */\n getDatabaseConnectionOrThrowError(dbName) {\n const databaseNames = Object.keys(this.databases);\n if (!databaseNames.includes(dbName)) {\n throw new Error(`No connection available for database \"${dbName}\"`);\n }\n return this.databases[dbName];\n }\n /**\n * Gets the value of an option from the options object.\n * If the `optionKey` does not exist and there is no `defaultValue` defined, an exception is thrown.\n * If the `optionKey` does not exist but there is a `defaultValue`, the `defaultValue` is returned.\n *\n * @param options\n * @param optionKey\n * @param defaultValue\n * @returns\n */\n getOptionValue(options, optionKey, defaultValue = undefined) {\n const optionKeys = Object.keys(options);\n if (!optionKeys.includes(optionKey)) {\n if (defaultValue === undefined) {\n throw new Error(`Must provide \"${optionKey}\" in options.`);\n }\n else {\n return defaultValue;\n }\n }\n return options[optionKey];\n }\n async isSecretStored() {\n var _a;\n if (this.globalUtil != null) {\n let capSQLiteResult = { result: false };\n if (((_a = this.globalUtil) === null || _a === void 0 ? void 0 : _a.secret) != null && this.globalUtil.secret !== 'sqlite secret') {\n capSQLiteResult = { result: true };\n }\n return Promise.resolve(capSQLiteResult);\n }\n else {\n return Promise.reject(`isSecretStored: Failed check Secret.`);\n }\n }\n async setEncryptionSecret(options) {\n if (this.globalUtil != null) {\n this.globalUtil.secret = options.passphrase;\n Promise.resolve();\n }\n else {\n return Promise.reject(`setEncryptionSecret: Failed to set Secret.`);\n }\n }\n async changeEncryptionSecret(options) {\n if (this.globalUtil != null) {\n this.globalUtil.secret = options.oldpassphrase;\n this.globalUtil.newsecret = options.passphrase;\n // get the database folder\n const pathDatabase = this.fileUtil.getDatabasesPath();\n // get the list of databases\n const files = await this.fileUtil.getFileList(pathDatabase);\n files.forEach((dbName) => {\n const connName = 'RW_' + dbName;\n const database = this.getDatabaseConnectionOrThrowError(connName);\n database.changeSecret();\n });\n }\n else {\n return Promise.reject(`changeEncryptionSecret: Failed to change Secret.`);\n }\n }\n async clearEncryptionSecret() {\n if (this.globalUtil != null) {\n this.globalUtil.secret = '';\n Promise.resolve();\n }\n else {\n return Promise.reject(`clearEncryptionSecret: Failed to clear Secret.`);\n }\n }\n ////////////////////////////////\n //// UNIMPLEMENTED METHODS\n ////////////////////////////////\n async getMigratableDbList(options) {\n console.log('getCordovaDbList', options);\n throw new Error('Method not implemented.');\n }\n async addSQLiteSuffix(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async deleteOldDatabases(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async moveDatabasesAndAddSuffix(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async getUrl() {\n throw new Error('Method not implemented.');\n }\n async initWebStore() {\n throw new Error('Method not implemented.');\n }\n async saveToStore(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async saveToLocalDisk(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async getFromLocalDiskToStore(options) {\n console.log(`${JSON.stringify(options)}`);\n throw new Error('Method not implemented.');\n }\n async checkEncryptionSecret(options) {\n console.log('checkEncryptionSecret', options);\n throw new Error('Method not implemented.');\n }\n async getNCDatabasePath(options) {\n console.log('getNCDatabasePath', options);\n throw new Error('Method not implemented.');\n }\n async createNCConnection(options) {\n console.log('createNCConnection', options);\n throw new Error('Method not implemented.');\n }\n async closeNCConnection(options) {\n console.log('closeNCConnection', options);\n throw new Error('Method not implemented.');\n }\n async isNCDatabase(options) {\n console.log('isNCDatabase', options);\n throw new Error('Method not implemented.');\n }\n async isDatabaseEncrypted(options) {\n console.log('isDatabaseEncrypted', options);\n throw new Error('Not implemented on web.');\n }\n async isInConfigEncryption() {\n throw new Error('Not implemented on web.');\n }\n async isInConfigBiometricAuth() {\n throw new Error('Not implemented on web.');\n }\n}\nexports.CapacitorSQLite = CapacitorSQLite;\n//# sourceMappingURL=index.js.map"],"names":["GlobalSQLite_1","require$$0","utilsSQLite_1","utilsJson_1","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","utilsFile_1","Database_1","require$$7","CapacitorSQLite_1"],"mappings":"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"}
|