@capacitor-community/sqlite 3.5.2-dev1 → 3.5.2-dev2
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.
|
@@ -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;\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,*/) {\n const msg = 'OpenOrCreateDatabase: ';\n // open sqlite3 database\n /* const mDB: any = new this.JSQlite.Database(pathDB, {\n verbose: console.log,\n });\n */\n const mDB = new this.SQLite3.Database(pathDB, {\n verbose: console.log,\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 // Check Version\n const curVersion = await this.getVersion(mDB);\n if (curVersion === 0) {\n await this.setVersion(mDB, 1);\n }\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 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.trim().substring(0, 11).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 return Promise.reject(`Execute: ${err.message}`);\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 reject(`Execute: ${err.message}: `);\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 db.run(stmt, values, (err) => {\n if (err) {\n reject(err.message);\n }\n else {\n resolve();\n }\n });\n }\n else {\n db.exec(stmt, (err) => {\n if (err) {\n reject(err.message);\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(`DeleteSL: ${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 for (const refe of references) {\n // get the tableName of the reference\n const refTable = await this.getReferenceTableName(refe.sql);\n if (refTable.length <= 0) {\n continue;\n }\n // get the columnName\n const colName = await this.getReferenceColumnName(refe.sql);\n if (colName.length <= 0) {\n continue;\n }\n // update the where clause\n const uWhereStmt = await this.updateWhere(whereStmt, colName);\n if (uWhereStmt.length <= 0) {\n continue;\n }\n //update sql_deleted for this reference\n const stmt = `UPDATE ${refTable} SET sql_deleted = 1 ${uWhereStmt}`;\n if (values != null && values.length > 0) {\n const mVal = await this.replaceUndefinedByNull(values);\n await db.run(stmt, mVal);\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 refValue.substring(0, 12).toLowerCase() === 'CREATE TABLE'.toLowerCase()) {\n const oPar = refValue.indexOf('(');\n tableName = refValue.substring(13, oPar).trim();\n }\n return tableName;\n }\n async getReferenceColumnName(refValue) {\n let colName = '';\n if (refValue.length > 0) {\n const index = refValue\n .toLowerCase()\n .indexOf('FOREIGN KEY'.toLowerCase());\n const stmt = refValue.substring(index + 12);\n const oPar = stmt.indexOf('(');\n const cPar = stmt.indexOf(')');\n colName = stmt.substring(oPar + 1, cPar).trim();\n }\n return colName;\n }\n async updateWhere(whStmt, colName) {\n let whereStmt = '';\n if (whStmt.length > 0) {\n const index = whStmt.toLowerCase().indexOf('WHERE'.toLowerCase());\n const stmt = whStmt.substring(index + 6);\n const fEqual = stmt.indexOf('=');\n const whereColName = stmt.substring(0, fEqual).trim();\n whereStmt = whStmt.replace(whereColName, colName);\n }\n return whereStmt;\n }\n async getReferences(db, tableName) {\n const sqlStmt = 'SELECT sql FROM sqlite_master ' +\n \"WHERE 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 return Promise.resolve(res);\n }\n catch (err) {\n return Promise.reject(new Error(`getReferences: ${err.message}`));\n }\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 /**\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 '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 === '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.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 = sc.indexOf('(');\n const cPar = sc.indexOf(')');\n row[0] = sc.substring(oPar + 1, cPar);\n row[1] = sc.substring(cPar + 2);\n jsonRow['foreignkey'] = 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;\nclass UtilsFile {\n constructor() {\n this.pathDB = 'Databases';\n this.Path = null;\n this.NodeFs = 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.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 = this.capConfig.plugins.CapacitorSQLite.electronMacLocation;\n break;\n case 'Linux':\n this.pathDB = this.capConfig.plugins.CapacitorSQLite.electronLinuxLocation;\n break;\n case 'Windows_NT':\n this.pathDB = 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 * 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 * GetAssetsDatabasesPath\n * get the assets databases folder path\n */\n getAssetsDatabasesPath() {\n let retPath = '';\n const rawdata = this.NodeFs.readFileSync(this.Path.resolve(this.appPath, 'capacitor.config.json'));\n const webDir = JSON.parse(rawdata).webDir;\n const dir = webDir === 'www' ? 'src' : 'public';\n retPath = this.Path.resolve(this.appPath, dir, 'assets', this.pathDB.toLowerCase());\n return retPath;\n }\n /**\n * SetPathSuffix\n * @param db\n */\n setPathSuffix(db) {\n let toDb = db;\n const ext = '.db';\n const sep = this.Path.sep;\n if (db.substring(db.length - 3) === ext) {\n if (!db.includes('SQLite.db')) {\n toDb = db.slice(db.lastIndexOf(sep) + 1, -3) + 'SQLite.db';\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.Path.extname(file) == '.db' || this.Path.extname(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, overwrite) {\n const pZip = this.Path.join(this.getAssetsDatabasesPath(), 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 if (filePath.length !== 0) {\n // check if path exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n try {\n this.NodeFs.unlinkSync(filePath);\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 /**\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 /**\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 * 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 utilsJson_1 = require(\"./ImportExportJson/utilsJson\");\nconst utilsDrop_1 = require(\"./utilsDrop\");\nconst utilsFile_1 = require(\"./utilsFile\");\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nclass UtilsUpgrade {\n constructor() {\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n this.fileUtil = new utilsFile_1.UtilsFile();\n this.dropUtil = new utilsDrop_1.UtilsDrop();\n this.jsonUtil = new utilsJson_1.UtilsJson();\n this._alterTables = {};\n this._commonColumns = {};\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, dbName, curVersion, targetVersion) {\n const upgrade = vUpgDict[curVersion];\n if (upgrade != null) {\n const keys = Object.keys(upgrade);\n if (!keys.includes('toVersion')) {\n return Promise.reject('onUpgrade: toVersion not given');\n }\n const toVersion = upgrade.toVersion;\n if (!keys.includes('statement')) {\n return Promise.reject('onUpgrade: statement not given');\n }\n const statement = upgrade.statement;\n let set = [];\n if (keys.includes('set')) {\n set = upgrade.set;\n }\n if (targetVersion < toVersion) {\n let msg = 'Error: version mistmatch ';\n msg += 'Upgrade Statement would upgrade to ';\n msg += `version ${toVersion} , but target version `;\n msg += `is ${targetVersion} for database ${dbName}`;\n msg += ` and version ${curVersion}`;\n return Promise.reject(`onUpgrade: ${msg}`);\n }\n try {\n // set Foreign Keys Off\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(mDB, false);\n await this.fileUtil.copyFileName(dbName, `backup-${dbName}`);\n const initChanges = await this.sqliteUtil.dbChanges(mDB);\n // Here we assume that all table schemas are given\n // in the upgrade statement\n if (statement.length > 0) {\n await this.executeStatementProcess(mDB, statement);\n // Here we assume that the Set contains only\n // - the data for new tables\n // as INSERT statements\n // - the data for new columns in existing tables\n // as UPDATE statements\n if (set.length > 0) {\n await this.executeSetProcess(mDB, set, toVersion);\n }\n }\n // set Foreign Keys On\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(mDB, true);\n const changes = (await this.sqliteUtil.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(`onUpgrade: ${err}`);\n }\n }\n else {\n return Promise.reject('onUpgrade: upgrade not found');\n }\n }\n /**\n * ExecuteStatementProcess\n * @param mDB\n * @param statement\n */\n async executeStatementProcess(mDB, statement) {\n try {\n // -> backup all existing tables \"tableName\" in\n // \"temp_tableName\"\n await this.backupTables(mDB);\n // -> Drop all Indexes\n await this.dropUtil.dropElements(mDB, 'index');\n // -> Drop all Triggers\n await this.dropUtil.dropElements(mDB, 'trigger');\n // -> Create new tables from upgrade.statement\n const changes = await this.sqliteUtil.execute(mDB, statement, false);\n if (changes < 0) {\n return Promise.reject('ExecuteStatementProcess: ' + 'changes < 0');\n }\n // -> Create the list of table's common fields\n await this.findCommonColumns(mDB);\n // -> Update the new table's data from old table's data\n if (Object.keys(this._commonColumns).length > 0) {\n await this.updateNewTablesData(mDB);\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`ExecuteStatementProcess: ${err}`);\n }\n finally {\n // -> Drop _temp_tables\n await this.dropUtil.dropTempTables(mDB, this._alterTables);\n // -> Do some cleanup\n this._alterTables = {};\n this._commonColumns = {};\n }\n }\n /**\n * ExecuteSetProcess\n * @param mDB\n * @param set\n * @param toVersion\n */\n async executeSetProcess(mDB, set, toVersion) {\n try {\n // -> load new data\n const lastId = await this.sqliteUtil.executeSet(mDB, set, false);\n if (lastId < 0) {\n return Promise.reject('ExecuteSetProcess: lastId ' + '< 0');\n }\n // -> update database version\n await this.sqliteUtil.setVersion(mDB, toVersion);\n // -> update syncDate if any\n const retB = await this.jsonUtil.isTableExists(mDB, true, 'sync_table');\n if (retB) {\n const sDate = Math.round(new Date().getTime() / 1000);\n let stmt = 'UPDATE sync_table SET ';\n stmt += `sync_date = ${sDate} WHERE id = 1;`;\n const changes = await this.sqliteUtil.execute(mDB, stmt, false);\n if (changes < 0) {\n return Promise.reject('ExecuteSetProcess: changes ' + '< 0');\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`ExecuteSetProcess: ${err}`);\n }\n }\n /**\n * BackupTables\n * @param mDB\n */\n async backupTables(mDB) {\n const msg = 'BackupTables: ';\n try {\n const tables = await this.sqliteUtil.getTablesNames(mDB);\n for (const table of tables) {\n try {\n await this.backupTable(mDB, table);\n }\n catch (err) {\n return Promise.reject(`${msg}table ${table}: ` + `${err}`);\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`BackupTables: ${err}`);\n }\n }\n /**\n * BackupTable\n * @param mDB\n * @param table\n */\n async backupTable(mDB, table) {\n try {\n // start a transaction\n await this.sqliteUtil.beginTransaction(mDB, true);\n // get the table's column names\n const colNames = await this.getTableColumnNames(mDB, table);\n this._alterTables[`${table}`] = colNames;\n const tmpTable = `_temp_${table}`;\n // Drop the tmpTable if exists\n const delStmt = `DROP TABLE IF EXISTS ${tmpTable};`;\n await this.sqliteUtil.prepareRun(mDB, delStmt, [], false);\n // prefix the table with _temp_\n let stmt = `ALTER TABLE ${table} RENAME `;\n stmt += `TO ${tmpTable};`;\n const lastId = await this.sqliteUtil.prepareRun(mDB, stmt, [], false);\n if (lastId < 0) {\n let msg = 'BackupTable: lastId < 0';\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n }\n catch (err) {\n msg += `: ${err}`;\n }\n return Promise.reject(`${msg}`);\n }\n else {\n try {\n await this.sqliteUtil.commitTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject('BackupTable: ' + `${err}`);\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`BackupTable: ${err}`);\n }\n }\n /**\n * GetTableColumnNames\n * @param mDB\n * @param tableName\n */\n async getTableColumnNames(mDB, tableName) {\n let resQuery = [];\n const retNames = [];\n const query = `PRAGMA table_info('${tableName}');`;\n try {\n resQuery = await this.sqliteUtil.queryAll(mDB, query, []);\n if (resQuery.length > 0) {\n for (const query of resQuery) {\n retNames.push(query.name);\n }\n }\n return Promise.resolve(retNames);\n }\n catch (err) {\n return Promise.reject('GetTableColumnNames: ' + `${err}`);\n }\n }\n /**\n * FindCommonColumns\n * @param mDB\n */\n async findCommonColumns(mDB) {\n try {\n // Get new table list\n const tables = await this.sqliteUtil.getTablesNames(mDB);\n if (tables.length === 0) {\n return Promise.reject('FindCommonColumns: get ' + \"table's names failed\");\n }\n for (const table of tables) {\n // get the column's name\n const tableNames = await this.getTableColumnNames(mDB, table);\n // find the common columns\n const keys = Object.keys(this._alterTables);\n if (keys.includes(table)) {\n this._commonColumns[table] = this.arraysIntersection(this._alterTables[table], tableNames);\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`FindCommonColumns: ${err}`);\n }\n }\n /**\n * ArraysIntersection\n * @param a1\n * @param a2\n */\n arraysIntersection(a1, a2) {\n if (a1 != null && a2 != null) {\n const first = new Set(a1);\n const second = new Set(a2);\n return [...first].filter(item => second.has(item));\n }\n else {\n return [];\n }\n }\n /**\n * UpdateNewTablesData\n * @param mDB\n */\n async updateNewTablesData(mDB) {\n try {\n // start a transaction\n await this.sqliteUtil.beginTransaction(mDB, true);\n const statements = [];\n const keys = Object.keys(this._commonColumns);\n keys.forEach(key => {\n const columns = this._commonColumns[key].join(',');\n let stmt = `INSERT INTO ${key} `;\n stmt += `(${columns}) `;\n stmt += `SELECT ${columns} FROM _temp_${key};`;\n statements.push(stmt);\n });\n const changes = await this.sqliteUtil.execute(mDB, statements.join('\\n'), false);\n if (changes < 0) {\n let msg = 'updateNewTablesData: ' + 'changes < 0';\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n }\n catch (err) {\n msg += `: ${err}`;\n }\n return Promise.reject(`${msg}`);\n }\n else {\n try {\n await this.sqliteUtil.commitTransaction(mDB, true);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject('updateNewTablesData: ' + `${err}`);\n }\n }\n }\n catch (err) {\n return Promise.reject('updateNewTablesData: ' + `${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, 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.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,*/);\n const curVersion = await this.sqliteUtil.getVersion(this.database);\n this._isDbOpen = true;\n if (this.version > curVersion &&\n Object.keys(this.upgradeVersionDict).length > 0) {\n try {\n // execute the upgrade flow process\n await this.upgradeUtil.onUpgrade(this.database, this.upgradeVersionDict, this.dbName, 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 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 this.database.close((err) => {\n if (err) {\n throw new Error('Close failed: ${this.dbName} ${err}');\n }\n this._isDbOpen = false;\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 column 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 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 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 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 await this.exportToJsonUtil.setLastExportDate(this.database, new Date().toISOString());\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 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 databaseConnection = new Database_1.Database(dbName + 'SQLite.db', \n /* encrypted,\n inMode,\n */\n version, upgrades);\n this.databases[dbName] = databaseConnection;\n return;\n }\n async closeConnection(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\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[dbName];\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 database = this.getDatabaseConnectionOrThrowError(dbName);\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 database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n await database.close();\n return;\n }\n catch (err) {\n throw new Error(`Close: ${err}`);\n }\n }\n async getVersion(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\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 async getTableList(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\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 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 database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n const executeResult = await database.executeSQL(statements, transaction);\n if (executeResult < 0) {\n throw new Error('Execute failed changes < 0');\n }\n else {\n return { changes: { changes: executeResult } };\n }\n }\n catch (err) {\n throw new Error(`Execute failed: ${err}`);\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 database = this.getDatabaseConnectionOrThrowError(dbName);\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 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 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 database = this.getDatabaseConnectionOrThrowError(dbName);\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 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('Statement may not be an empty string.');\n }\n const database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n const queryResult = await database.selectSQL(statement, values);\n return { values: queryResult };\n }\n catch (err) {\n throw new Error(`Query failed: ${err}`);\n }\n }\n async isDBExists(options) {\n const dbName = this.getOptionValue(options, 'database');\n // Throw an error, if db connection is not opened yet:\n this.getDatabaseConnectionOrThrowError(dbName);\n const isExists = this.fileUtil.isFileExists(dbName + 'SQLite.db');\n return { result: isExists };\n }\n async isDBOpen(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\n const isOpen = await 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 database = this.getDatabaseConnectionOrThrowError(dbName);\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 async deleteDatabase(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n await database.deleteDB(dbName + 'SQLite.db');\n return;\n }\n catch (err) {\n throw new Error(`Delete: ${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, {});\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 database = this.getDatabaseConnectionOrThrowError(dbName);\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 async createSyncTable(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\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 async setSyncDate(options) {\n const dbName = this.getOptionValue(options, 'database');\n const syncDate = this.getOptionValue(options, 'syncdate');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n await database.setSyncDate(syncDate);\n return;\n }\n catch (err) {\n throw new Error(`SetSyncDate: ${err}`);\n }\n }\n async getSyncDate(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\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 async deleteExportedRows(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n await database.deleteExportedRows();\n return Promise.resolve();\n }\n catch (err) {\n throw new Error(`DeleteExportedRows: ${err}`);\n }\n }\n async addUpgradeStatement(options) {\n const dbName = this.getOptionValue(options, 'database');\n const upgrades = this.getOptionValue(options, 'upgrade');\n const firstUpgrade = upgrades[0];\n const versionUpgradeKeys = Object.keys(firstUpgrade);\n if (!versionUpgradeKeys.includes('fromVersion') ||\n !versionUpgradeKeys.includes('toVersion') ||\n !versionUpgradeKeys.includes('statement')) {\n throw new Error('Must provide an upgrade capSQLiteVersionUpgrade Object');\n }\n if (typeof firstUpgrade.fromVersion != 'number') {\n throw new Error('upgrade.fromVersion must be a number');\n }\n const upgradeVersionDict = {};\n upgradeVersionDict[firstUpgrade.fromVersion] = firstUpgrade;\n this.versionUpgrades[dbName] = upgradeVersionDict;\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 (db.substring(db.length - 3) === '.db') {\n // for each copy the file to the Application database folder\n await this.fileUtil.copyFromAssetToDatabase(db, overwrite);\n }\n if (db.substring(db.length - 4) === '.zip') {\n await this.fileUtil.unzipDatabase(db, overwrite);\n }\n });\n return;\n }\n else {\n throw new Error('CopyFromAssets: assets/databases folder does not exist');\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`);\n }\n }\n async checkConnectionsConsistency(options) {\n const dbNames = this.getOptionValue(options, 'dbNames');\n const checkConsistencyResult = {};\n checkConsistencyResult.result = false;\n try {\n let inConnectionsSet = new Set(Object.keys(this.databases));\n const outConnectionSet = new Set(dbNames);\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 opt.database = key;\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 opt.database = key;\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 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 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 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}\nexports.CapacitorSQLite = CapacitorSQLite;\n//# sourceMappingURL=index.js.map"],"names":["require$$0","utilsSQLite_1","utilsJson_1","require$$1","utilsDrop_1","require$$2","require$$3","require$$4","utilsFile_1","Database_1","require$$5","CapacitorSQLite_1"],"mappings":"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"}
|
|
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;\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,*/) {\n const msg = 'OpenOrCreateDatabase: ';\n // open sqlite3 database\n /* const mDB: any = new this.JSQlite.Database(pathDB, {\n verbose: console.log,\n });\n */\n const mDB = new this.SQLite3.Database(pathDB, {\n verbose: console.log,\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 // Check Version\n const curVersion = await this.getVersion(mDB);\n if (curVersion === 0) {\n await this.setVersion(mDB, 1);\n }\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 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.trim().substring(0, 11).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 return Promise.reject(`Execute: ${err.message}`);\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 reject(`Execute: ${err.message}: `);\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 db.run(stmt, values, (err) => {\n if (err) {\n reject(err.message);\n }\n else {\n resolve();\n }\n });\n }\n else {\n db.exec(stmt, (err) => {\n if (err) {\n reject(err.message);\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(`DeleteSL: ${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 for (const refe of references) {\n // get the tableName of the reference\n const refTable = await this.getReferenceTableName(refe.sql);\n if (refTable.length <= 0) {\n continue;\n }\n // get the columnName\n const colName = await this.getReferenceColumnName(refe.sql);\n if (colName.length <= 0) {\n continue;\n }\n // update the where clause\n const uWhereStmt = await this.updateWhere(whereStmt, colName);\n if (uWhereStmt.length <= 0) {\n continue;\n }\n //update sql_deleted for this reference\n const stmt = `UPDATE ${refTable} SET sql_deleted = 1 ${uWhereStmt}`;\n if (values != null && values.length > 0) {\n const mVal = await this.replaceUndefinedByNull(values);\n await db.run(stmt, mVal);\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 refValue.substring(0, 12).toLowerCase() === 'CREATE TABLE'.toLowerCase()) {\n const oPar = refValue.indexOf('(');\n tableName = refValue.substring(13, oPar).trim();\n }\n return tableName;\n }\n async getReferenceColumnName(refValue) {\n let colName = '';\n if (refValue.length > 0) {\n const index = refValue\n .toLowerCase()\n .indexOf('FOREIGN KEY'.toLowerCase());\n const stmt = refValue.substring(index + 12);\n const oPar = stmt.indexOf('(');\n const cPar = stmt.indexOf(')');\n colName = stmt.substring(oPar + 1, cPar).trim();\n }\n return colName;\n }\n async updateWhere(whStmt, colName) {\n let whereStmt = '';\n if (whStmt.length > 0) {\n const index = whStmt.toLowerCase().indexOf('WHERE'.toLowerCase());\n const stmt = whStmt.substring(index + 6);\n const fEqual = stmt.indexOf('=');\n const whereColName = stmt.substring(0, fEqual).trim();\n whereStmt = whStmt.replace(whereColName, colName);\n }\n return whereStmt;\n }\n async getReferences(db, tableName) {\n const sqlStmt = 'SELECT sql FROM sqlite_master ' +\n \"WHERE 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 return Promise.resolve(res);\n }\n catch (err) {\n return Promise.reject(new Error(`getReferences: ${err.message}`));\n }\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 /**\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 '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 === '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.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 = sc.indexOf('(');\n const cPar = sc.indexOf(')');\n row[0] = sc.substring(oPar + 1, cPar);\n row[1] = sc.substring(cPar + 2);\n jsonRow['foreignkey'] = 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;\nclass UtilsFile {\n constructor() {\n this.pathDB = 'Databases';\n this.Path = null;\n this.NodeFs = 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.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 = this.capConfig.plugins.CapacitorSQLite.electronMacLocation;\n break;\n case 'Linux':\n this.pathDB = this.capConfig.plugins.CapacitorSQLite.electronLinuxLocation;\n break;\n case 'Windows_NT':\n this.pathDB = 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 * 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 * GetAssetsDatabasesPath\n * get the assets databases folder path\n */\n getAssetsDatabasesPath() {\n let retPath = '';\n const rawdata = this.NodeFs.readFileSync(this.Path.resolve(this.appPath, 'capacitor.config.json'));\n const webDir = JSON.parse(rawdata).webDir;\n const dir = webDir === 'www' ? 'src' : 'public';\n retPath = this.Path.resolve(this.appPath, dir, 'assets', this.pathDB.toLowerCase());\n return retPath;\n }\n /**\n * SetPathSuffix\n * @param db\n */\n setPathSuffix(db) {\n let toDb = db;\n const ext = '.db';\n const sep = this.Path.sep;\n if (db.substring(db.length - 3) === ext) {\n if (!db.includes('SQLite.db')) {\n toDb = db.slice(db.lastIndexOf(sep) + 1, -3) + 'SQLite.db';\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.Path.extname(file) == '.db' || this.Path.extname(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, overwrite) {\n const pZip = this.Path.join(this.getAssetsDatabasesPath(), 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 if (filePath.length !== 0) {\n // check if path exists\n const isPath = this.isPathExists(filePath);\n if (isPath) {\n try {\n this.NodeFs.unlinkSync(filePath);\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 /**\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 /**\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 * 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 utilsJson_1 = require(\"./ImportExportJson/utilsJson\");\nconst utilsDrop_1 = require(\"./utilsDrop\");\nconst utilsFile_1 = require(\"./utilsFile\");\nconst utilsSQLite_1 = require(\"./utilsSQLite\");\nclass UtilsUpgrade {\n constructor() {\n this.sqliteUtil = new utilsSQLite_1.UtilsSQLite();\n this.fileUtil = new utilsFile_1.UtilsFile();\n this.dropUtil = new utilsDrop_1.UtilsDrop();\n this.jsonUtil = new utilsJson_1.UtilsJson();\n this._alterTables = {};\n this._commonColumns = {};\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, dbName, curVersion, targetVersion) {\n const upgrade = vUpgDict[curVersion];\n if (upgrade != null) {\n const keys = Object.keys(upgrade);\n if (!keys.includes('toVersion')) {\n return Promise.reject('onUpgrade: toVersion not given');\n }\n const toVersion = upgrade.toVersion;\n if (!keys.includes('statement')) {\n return Promise.reject('onUpgrade: statement not given');\n }\n const statement = upgrade.statement;\n let set = [];\n if (keys.includes('set')) {\n set = upgrade.set;\n }\n if (targetVersion < toVersion) {\n let msg = 'Error: version mistmatch ';\n msg += 'Upgrade Statement would upgrade to ';\n msg += `version ${toVersion} , but target version `;\n msg += `is ${targetVersion} for database ${dbName}`;\n msg += ` and version ${curVersion}`;\n return Promise.reject(`onUpgrade: ${msg}`);\n }\n try {\n // set Foreign Keys Off\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(mDB, false);\n await this.fileUtil.copyFileName(dbName, `backup-${dbName}`);\n const initChanges = await this.sqliteUtil.dbChanges(mDB);\n // Here we assume that all table schemas are given\n // in the upgrade statement\n if (statement.length > 0) {\n await this.executeStatementProcess(mDB, statement);\n // Here we assume that the Set contains only\n // - the data for new tables\n // as INSERT statements\n // - the data for new columns in existing tables\n // as UPDATE statements\n if (set.length > 0) {\n await this.executeSetProcess(mDB, set, toVersion);\n }\n }\n // set Foreign Keys On\n await this.sqliteUtil.setForeignKeyConstraintsEnabled(mDB, true);\n const changes = (await this.sqliteUtil.dbChanges(mDB)) - initChanges;\n return Promise.resolve(changes);\n }\n catch (err) {\n return Promise.reject(`onUpgrade: ${err}`);\n }\n }\n else {\n return Promise.reject('onUpgrade: upgrade not found');\n }\n }\n /**\n * ExecuteStatementProcess\n * @param mDB\n * @param statement\n */\n async executeStatementProcess(mDB, statement) {\n try {\n // -> backup all existing tables \"tableName\" in\n // \"temp_tableName\"\n await this.backupTables(mDB);\n // -> Drop all Indexes\n await this.dropUtil.dropElements(mDB, 'index');\n // -> Drop all Triggers\n await this.dropUtil.dropElements(mDB, 'trigger');\n // -> Create new tables from upgrade.statement\n const changes = await this.sqliteUtil.execute(mDB, statement, false);\n if (changes < 0) {\n return Promise.reject('ExecuteStatementProcess: ' + 'changes < 0');\n }\n // -> Create the list of table's common fields\n await this.findCommonColumns(mDB);\n // -> Update the new table's data from old table's data\n if (Object.keys(this._commonColumns).length > 0) {\n await this.updateNewTablesData(mDB);\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`ExecuteStatementProcess: ${err}`);\n }\n finally {\n // -> Drop _temp_tables\n await this.dropUtil.dropTempTables(mDB, this._alterTables);\n // -> Do some cleanup\n this._alterTables = {};\n this._commonColumns = {};\n }\n }\n /**\n * ExecuteSetProcess\n * @param mDB\n * @param set\n * @param toVersion\n */\n async executeSetProcess(mDB, set, toVersion) {\n try {\n // -> load new data\n const lastId = await this.sqliteUtil.executeSet(mDB, set, false);\n if (lastId < 0) {\n return Promise.reject('ExecuteSetProcess: lastId ' + '< 0');\n }\n // -> update database version\n await this.sqliteUtil.setVersion(mDB, toVersion);\n // -> update syncDate if any\n const retB = await this.jsonUtil.isTableExists(mDB, true, 'sync_table');\n if (retB) {\n const sDate = Math.round(new Date().getTime() / 1000);\n let stmt = 'UPDATE sync_table SET ';\n stmt += `sync_date = ${sDate} WHERE id = 1;`;\n const changes = await this.sqliteUtil.execute(mDB, stmt, false);\n if (changes < 0) {\n return Promise.reject('ExecuteSetProcess: changes ' + '< 0');\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`ExecuteSetProcess: ${err}`);\n }\n }\n /**\n * BackupTables\n * @param mDB\n */\n async backupTables(mDB) {\n const msg = 'BackupTables: ';\n try {\n const tables = await this.sqliteUtil.getTablesNames(mDB);\n for (const table of tables) {\n try {\n await this.backupTable(mDB, table);\n }\n catch (err) {\n return Promise.reject(`${msg}table ${table}: ` + `${err}`);\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`BackupTables: ${err}`);\n }\n }\n /**\n * BackupTable\n * @param mDB\n * @param table\n */\n async backupTable(mDB, table) {\n try {\n // start a transaction\n await this.sqliteUtil.beginTransaction(mDB, true);\n // get the table's column names\n const colNames = await this.getTableColumnNames(mDB, table);\n this._alterTables[`${table}`] = colNames;\n const tmpTable = `_temp_${table}`;\n // Drop the tmpTable if exists\n const delStmt = `DROP TABLE IF EXISTS ${tmpTable};`;\n await this.sqliteUtil.prepareRun(mDB, delStmt, [], false);\n // prefix the table with _temp_\n let stmt = `ALTER TABLE ${table} RENAME `;\n stmt += `TO ${tmpTable};`;\n const lastId = await this.sqliteUtil.prepareRun(mDB, stmt, [], false);\n if (lastId < 0) {\n let msg = 'BackupTable: lastId < 0';\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n }\n catch (err) {\n msg += `: ${err}`;\n }\n return Promise.reject(`${msg}`);\n }\n else {\n try {\n await this.sqliteUtil.commitTransaction(mDB, true);\n }\n catch (err) {\n return Promise.reject('BackupTable: ' + `${err}`);\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`BackupTable: ${err}`);\n }\n }\n /**\n * GetTableColumnNames\n * @param mDB\n * @param tableName\n */\n async getTableColumnNames(mDB, tableName) {\n let resQuery = [];\n const retNames = [];\n const query = `PRAGMA table_info('${tableName}');`;\n try {\n resQuery = await this.sqliteUtil.queryAll(mDB, query, []);\n if (resQuery.length > 0) {\n for (const query of resQuery) {\n retNames.push(query.name);\n }\n }\n return Promise.resolve(retNames);\n }\n catch (err) {\n return Promise.reject('GetTableColumnNames: ' + `${err}`);\n }\n }\n /**\n * FindCommonColumns\n * @param mDB\n */\n async findCommonColumns(mDB) {\n try {\n // Get new table list\n const tables = await this.sqliteUtil.getTablesNames(mDB);\n if (tables.length === 0) {\n return Promise.reject('FindCommonColumns: get ' + \"table's names failed\");\n }\n for (const table of tables) {\n // get the column's name\n const tableNames = await this.getTableColumnNames(mDB, table);\n // find the common columns\n const keys = Object.keys(this._alterTables);\n if (keys.includes(table)) {\n this._commonColumns[table] = this.arraysIntersection(this._alterTables[table], tableNames);\n }\n }\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(`FindCommonColumns: ${err}`);\n }\n }\n /**\n * ArraysIntersection\n * @param a1\n * @param a2\n */\n arraysIntersection(a1, a2) {\n if (a1 != null && a2 != null) {\n const first = new Set(a1);\n const second = new Set(a2);\n return [...first].filter(item => second.has(item));\n }\n else {\n return [];\n }\n }\n /**\n * UpdateNewTablesData\n * @param mDB\n */\n async updateNewTablesData(mDB) {\n try {\n // start a transaction\n await this.sqliteUtil.beginTransaction(mDB, true);\n const statements = [];\n const keys = Object.keys(this._commonColumns);\n keys.forEach(key => {\n const columns = this._commonColumns[key].join(',');\n let stmt = `INSERT INTO ${key} `;\n stmt += `(${columns}) `;\n stmt += `SELECT ${columns} FROM _temp_${key};`;\n statements.push(stmt);\n });\n const changes = await this.sqliteUtil.execute(mDB, statements.join('\\n'), false);\n if (changes < 0) {\n let msg = 'updateNewTablesData: ' + 'changes < 0';\n try {\n await this.sqliteUtil.rollbackTransaction(mDB, true);\n }\n catch (err) {\n msg += `: ${err}`;\n }\n return Promise.reject(`${msg}`);\n }\n else {\n try {\n await this.sqliteUtil.commitTransaction(mDB, true);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject('updateNewTablesData: ' + `${err}`);\n }\n }\n }\n catch (err) {\n return Promise.reject('updateNewTablesData: ' + `${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, 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.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,*/);\n const curVersion = await this.sqliteUtil.getVersion(this.database);\n this._isDbOpen = true;\n if (this.version > curVersion &&\n Object.keys(this.upgradeVersionDict).length > 0) {\n try {\n // execute the upgrade flow process\n await this.upgradeUtil.onUpgrade(this.database, this.upgradeVersionDict, this.dbName, 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 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 this.database.close((err) => {\n if (err) {\n throw new Error('Close failed: ${this.dbName} ${err}');\n }\n this._isDbOpen = false;\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 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 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 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 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 databaseConnection = new Database_1.Database(dbName + 'SQLite.db', \n /* encrypted,\n inMode,\n */\n version, upgrades);\n this.databases[dbName] = databaseConnection;\n return;\n }\n async closeConnection(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\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[dbName];\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 database = this.getDatabaseConnectionOrThrowError(dbName);\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 database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n await database.close();\n return;\n }\n catch (err) {\n throw new Error(`Close: ${err}`);\n }\n }\n async getVersion(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\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 async getTableList(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\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 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 database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n const executeResult = await database.executeSQL(statements, transaction);\n if (executeResult < 0) {\n throw new Error('Execute failed changes < 0');\n }\n else {\n return { changes: { changes: executeResult } };\n }\n }\n catch (err) {\n throw new Error(`Execute failed: ${err}`);\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 database = this.getDatabaseConnectionOrThrowError(dbName);\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 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 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 database = this.getDatabaseConnectionOrThrowError(dbName);\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 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('Statement may not be an empty string.');\n }\n const database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n const queryResult = await database.selectSQL(statement, values);\n return { values: queryResult };\n }\n catch (err) {\n throw new Error(`Query failed: ${err}`);\n }\n }\n async isDBExists(options) {\n const dbName = this.getOptionValue(options, 'database');\n // Throw an error, if db connection is not opened yet:\n this.getDatabaseConnectionOrThrowError(dbName);\n const isExists = this.fileUtil.isFileExists(dbName + 'SQLite.db');\n return { result: isExists };\n }\n async isDBOpen(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\n const isOpen = await 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 database = this.getDatabaseConnectionOrThrowError(dbName);\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 async deleteDatabase(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n await database.deleteDB(dbName + 'SQLite.db');\n return;\n }\n catch (err) {\n throw new Error(`Delete: ${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, {});\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 database = this.getDatabaseConnectionOrThrowError(dbName);\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 async createSyncTable(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\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 async setSyncDate(options) {\n const dbName = this.getOptionValue(options, 'database');\n const syncDate = this.getOptionValue(options, 'syncdate');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n await database.setSyncDate(syncDate);\n return;\n }\n catch (err) {\n throw new Error(`SetSyncDate: ${err}`);\n }\n }\n async getSyncDate(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\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 async deleteExportedRows(options) {\n const dbName = this.getOptionValue(options, 'database');\n const database = this.getDatabaseConnectionOrThrowError(dbName);\n try {\n await database.deleteExportedRows();\n return Promise.resolve();\n }\n catch (err) {\n throw new Error(`DeleteExportedRows: ${err}`);\n }\n }\n async addUpgradeStatement(options) {\n const dbName = this.getOptionValue(options, 'database');\n const upgrades = this.getOptionValue(options, 'upgrade');\n const firstUpgrade = upgrades[0];\n const versionUpgradeKeys = Object.keys(firstUpgrade);\n if (!versionUpgradeKeys.includes('fromVersion') ||\n !versionUpgradeKeys.includes('toVersion') ||\n !versionUpgradeKeys.includes('statement')) {\n throw new Error('Must provide an upgrade capSQLiteVersionUpgrade Object');\n }\n if (typeof firstUpgrade.fromVersion != 'number') {\n throw new Error('upgrade.fromVersion must be a number');\n }\n const upgradeVersionDict = {};\n upgradeVersionDict[firstUpgrade.fromVersion] = firstUpgrade;\n this.versionUpgrades[dbName] = upgradeVersionDict;\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 (db.substring(db.length - 3) === '.db') {\n // for each copy the file to the Application database folder\n await this.fileUtil.copyFromAssetToDatabase(db, overwrite);\n }\n if (db.substring(db.length - 4) === '.zip') {\n await this.fileUtil.unzipDatabase(db, overwrite);\n }\n });\n return;\n }\n else {\n throw new Error('CopyFromAssets: assets/databases folder does not exist');\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`);\n }\n }\n async checkConnectionsConsistency(options) {\n const dbNames = this.getOptionValue(options, 'dbNames');\n const checkConsistencyResult = {};\n checkConsistencyResult.result = false;\n try {\n let inConnectionsSet = new Set(Object.keys(this.databases));\n const outConnectionSet = new Set(dbNames);\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 opt.database = key;\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 opt.database = key;\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 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 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 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}\nexports.CapacitorSQLite = CapacitorSQLite;\n//# sourceMappingURL=index.js.map"],"names":["require$$0","utilsSQLite_1","utilsJson_1","require$$1","utilsDrop_1","require$$2","require$$3","require$$4","utilsFile_1","Database_1","require$$5","CapacitorSQLite_1"],"mappings":"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"}
|