@capgo/capacitor-data-storage-sqlite 6.0.59 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CapgoCapacitorDataStorageSqlite.podspec +2 -2
  2. package/Package.swift +30 -0
  3. package/README.md +724 -0
  4. package/android/build.gradle +11 -11
  5. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/CapgoCapacitorDataStorageSqlite.java +290 -320
  6. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/CapgoCapacitorDataStorageSqlitePlugin.java +373 -388
  7. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/RetHandler.java +97 -97
  8. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/Data.java +3 -3
  9. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/Global.java +2 -2
  10. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonStore.java +108 -110
  11. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonTable.java +78 -80
  12. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/ImportExportJson/JsonValue.java +62 -64
  13. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/StorageDatabaseHelper.java +557 -624
  14. package/android/src/main/java/com/jeep/plugin/capacitor/capgocapacitordatastoragesqlite/cdssUtils/UtilsSQLCipher.java +103 -144
  15. package/dist/docs.json +0 -64
  16. package/dist/esm/definitions.d.ts +0 -19
  17. package/dist/esm/definitions.js.map +1 -1
  18. package/dist/esm/index.d.ts +2 -2
  19. package/dist/esm/index.js +5 -6
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/esm/web-utils/StorageDatabaseHelper.d.ts +2 -2
  22. package/dist/esm/web-utils/StorageDatabaseHelper.js +8 -8
  23. package/dist/esm/web-utils/StorageDatabaseHelper.js.map +1 -1
  24. package/dist/esm/web-utils/json-utils.js +15 -18
  25. package/dist/esm/web-utils/json-utils.js.map +1 -1
  26. package/dist/esm/web.d.ts +2 -3
  27. package/dist/esm/web.js +37 -44
  28. package/dist/esm/web.js.map +1 -1
  29. package/dist/plugin.cjs.js +56 -67
  30. package/dist/plugin.cjs.js.map +1 -1
  31. package/dist/plugin.js +56 -67
  32. package/dist/plugin.js.map +1 -1
  33. package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/CapgoCapacitorDataStorageSqlitePlugin.swift +27 -10
  34. package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/StorageDatabaseHelper.swift +1 -1
  35. package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsFile.swift +1 -1
  36. package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsSQLCipher.swift +3 -3
  37. package/ios/Tests/CapgoCapacitorDataStorageSqlitePluginTests/CapacitorDataStorageSqlitePluginTests.swift +13 -0
  38. package/package.json +34 -38
  39. package/electron/dist/plugin.js +0 -1044
  40. package/electron/dist/plugin.js.map +0 -1
  41. package/ios/Plugin/CapgoCapacitorDataStorageSqlitePlugin.h +0 -10
  42. package/ios/Plugin/CapgoCapacitorDataStorageSqlitePlugin.m +0 -29
  43. package/ios/Plugin/Info.plist +0 -24
  44. package/readme.md +0 -210
  45. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/CapgoCapacitorDataStorageSqlite.swift +0 -0
  46. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Data.swift +0 -0
  47. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Global.swift +0 -0
  48. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/ImportExportJson/JsonStore.swift +0 -0
  49. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/ReturnHandler.swift +0 -0
  50. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/Blob.swift +0 -0
  51. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsBinding.swift +0 -0
  52. /package/ios/{Plugin → Sources/CapgoCapacitorDataStorageSqlitePlugin}/Utils/UtilsEncryption.swift +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sources":["../build/electron/src/electron-utils/Data.js","../build/electron/src/electron-utils/UtilsSQLite.js","../build/electron/src/electron-utils/StorageDatabaseHelper.js","../build/electron/src/electron-utils/json-utils.js","../build/electron/src/index.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Data = void 0;\nclass Data {\n}\nexports.Data = Data;\n//# sourceMappingURL=Data.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UtilsSQLite = void 0;\nclass UtilsSQLite {\n constructor() {\n this.pathDB = \"./DataStorage\";\n this.Path = null;\n this.NodeFs = null;\n this.SQLite3 = null;\n this.Path = require(\"path\");\n this.NodeFs = require(\"fs\");\n this.SQLite3 = require(\"sqlite3\");\n }\n async connection(dbName, readOnly) {\n const flags = readOnly\n ? this.SQLite3.OPEN_READONLY\n : this.SQLite3.OPEN_CREATE | this.SQLite3.OPEN_READWRITE;\n // get the path for the database\n try {\n const dbPath = await this.getDBPath(dbName);\n const dbOpen = new this.SQLite3.Database(dbPath, flags);\n return Promise.resolve(dbOpen);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async getWritableDatabase(dbName) {\n const db = await this.connection(dbName, false /*,secret*/);\n return db;\n }\n async getReadableDatabase(dbName) {\n const db = await this.connection(dbName, true /*,secret*/);\n return db;\n }\n isFileExists(dbName) {\n const dbFolder = this.pathDB;\n const path = this.Path.join(dbFolder, dbName);\n let ret = false;\n try {\n if (this.NodeFs.existsSync(path)) {\n ret = true;\n }\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async getDBPath(dbName) {\n let retPath = null;\n const dbFolder = this.pathDB;\n retPath = this.Path.join(dbFolder, dbName);\n try {\n if (!this.NodeFs.existsSync(dbFolder)) {\n await this.mkdirSyncRecursive(dbFolder);\n }\n return Promise.resolve(retPath);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async mkdirSyncRecursive(directory) {\n const path = directory.replace(/\\/$/, \"\").split(\"/\");\n for (let i = 1; i <= path.length; i++) {\n const segment = path.slice(0, i).join(\"/\");\n segment.length > 0 && !this.NodeFs.existsSync(segment)\n ? this.NodeFs.mkdirSync(segment)\n : null;\n }\n return;\n }\n}\nexports.UtilsSQLite = UtilsSQLite;\n//# sourceMappingURL=UtilsSQLite.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StorageDatabaseHelper = void 0;\nconst Data_1 = require(\"./Data\");\nconst UtilsSQLite_1 = require(\"./UtilsSQLite\");\nconst COL_ID = \"id\";\nconst COL_NAME = \"name\";\nconst COL_VALUE = \"value\";\nclass StorageDatabaseHelper {\n constructor() {\n this.Path = null;\n this.NodeFs = null;\n this.isOpen = false;\n this.Path = require(\"path\");\n this.NodeFs = require(\"fs\");\n this._utils = new UtilsSQLite_1.UtilsSQLite();\n }\n async openStore(dbName, tableName) {\n try {\n this.db = await this._utils.connection(dbName, false);\n if (this.db !== null) {\n await this._createTable(tableName);\n this.dbName = dbName;\n this.tableName = tableName;\n this.isOpen = true;\n return Promise.resolve();\n }\n else {\n this.dbName = \"\";\n this.tableName = \"\";\n this.isOpen = false;\n return Promise.reject(`connection to store ${dbName}`);\n }\n }\n catch (err) {\n this.dbName = \"\";\n this.tableName = \"\";\n this.isOpen = false;\n return Promise.reject(err);\n }\n }\n async closeStore(dbName) {\n if (dbName === this.dbName && this.isOpen && this.db != null) {\n try {\n await this.db.close();\n this.dbName = \"\";\n this.tableName = \"\";\n this.isOpen = false;\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n else {\n return Promise.reject(`Store ${dbName} not opened`);\n }\n }\n async isStoreExists(dbName) {\n let ret = false;\n try {\n ret = await this._utils.isFileExists(dbName);\n return Promise.resolve(ret);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async _createTable(tableName) {\n const CREATE_STORAGE_TABLE = \"CREATE TABLE IF NOT EXISTS \" +\n tableName +\n \"(\" +\n COL_ID +\n \" INTEGER PRIMARY KEY AUTOINCREMENT,\" + // Define a primary key\n COL_NAME +\n \" TEXT NOT NULL UNIQUE,\" +\n COL_VALUE +\n \" TEXT\" +\n \")\";\n try {\n if (this.db != null) {\n return this.db.run(CREATE_STORAGE_TABLE, async (err) => {\n if (err) {\n return Promise.reject(`Error: in createTable ${err.message}`);\n }\n else {\n try {\n await this._createIndex(tableName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n });\n }\n else {\n return Promise.reject(`connection to store ${this.dbName}`);\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async _createIndex(tableName) {\n const idx = `index_${tableName}_on_${COL_NAME}`;\n const CREATE_INDEX_NAME = \"CREATE INDEX IF NOT EXISTS \" +\n idx +\n \" ON \" +\n tableName +\n \" (\" +\n COL_NAME +\n \")\";\n try {\n if (this.db != null) {\n return this.db.run(CREATE_INDEX_NAME, async (err) => {\n if (err) {\n return Promise.reject(`Error: in createIndex ${err.message}`);\n }\n else {\n return Promise.resolve();\n }\n });\n }\n else {\n return Promise.reject(`connection to store ${this.dbName}`);\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async setTable(tableName) {\n try {\n await this._createTable(tableName);\n this.tableName = tableName;\n return Promise.resolve();\n }\n catch (err) {\n this.tableName = \"\";\n return Promise.reject(err);\n }\n }\n // Insert a data into the database\n async set(data) {\n if (this.db == null) {\n return Promise.reject(`this.db is null in set`);\n }\n try {\n // Check if data.name does not exist otherwise update it\n const res = await this.get(data.name);\n if (res.id != null) {\n // exists so update it\n await this.update(data);\n return Promise.resolve();\n }\n else {\n // does not exist add it\n const DATA_INSERT = `INSERT INTO \"${this.tableName}\" \n (\"${COL_NAME}\", \"${COL_VALUE}\") \n VALUES (?, ?)`;\n return this.db.run(DATA_INSERT, [data.name, data.value], (err) => {\n if (err) {\n return Promise.reject(`Data INSERT: ${err.message}`);\n }\n else {\n return Promise.resolve();\n }\n });\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n // get a Data\n async get(name) {\n return new Promise((resolve, reject) => {\n if (this.db == null) {\n reject(`this.db is null in get`);\n }\n const DATA_SELECT_QUERY = `SELECT * FROM ${this.tableName} WHERE ${COL_NAME} = '${name}'`;\n this.db.all(DATA_SELECT_QUERY, (err, rows) => {\n if (err) {\n const data = new Data_1.Data();\n data.id = null;\n resolve(data);\n }\n else {\n let data = new Data_1.Data();\n if (rows.length >= 1) {\n data = rows[0];\n }\n else {\n data.id = null;\n }\n resolve(data);\n }\n });\n });\n }\n // update a Data\n async update(data) {\n return new Promise((resolve, reject) => {\n if (this.db == null) {\n reject(`this.db is null in update`);\n }\n const DATA_UPDATE = `UPDATE \"${this.tableName}\" \n SET \"${COL_VALUE}\" = ? WHERE \"${COL_NAME}\" = ?`;\n this.db.run(DATA_UPDATE, [data.value, data.name], (err) => {\n if (err) {\n reject(`Data UPDATE: ${err.message}`);\n }\n else {\n resolve();\n }\n });\n });\n }\n // isKey exists\n async iskey(name) {\n if (this.db == null) {\n return Promise.reject(`this.db is null in clear`);\n }\n try {\n const res = await this.get(name);\n if (res.id != null) {\n return Promise.resolve(true);\n }\n else {\n return Promise.resolve(false);\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n // remove a key\n async remove(name) {\n if (this.db == null) {\n return Promise.reject(`this.db is null in clear`);\n }\n try {\n const res = await this.get(name);\n if (res.id != null) {\n const DATA_DELETE = `DELETE FROM \"${this.tableName}\" \n WHERE \"${COL_NAME}\" = ?`;\n return this.db.run(DATA_DELETE, name, (err) => {\n if (err) {\n return Promise.reject(`Data DELETE: ${err.message}`);\n }\n else {\n return Promise.resolve();\n }\n });\n }\n else {\n return Promise.reject(`REMOVE key does not exist`);\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n // remove all keys\n async clear() {\n return new Promise((resolve, reject) => {\n if (this.db == null) {\n reject(`this.db is null in clear`);\n }\n const DATA_DELETE = `DELETE FROM \"${this.tableName}\"`;\n this.db.exec(DATA_DELETE, (err) => {\n if (err) {\n reject(`Data CLEAR: ${err.message}`);\n }\n else {\n // set back the key primary index to 0\n const DATA_UPDATE = `UPDATE SQLITE_SEQUENCE SET SEQ = ? `;\n this.db.run(DATA_UPDATE, 0, (err) => {\n if (err) {\n reject(`Data UPDATE SQLITE_SEQUENCE: ${err.message}`);\n }\n else {\n resolve();\n }\n });\n }\n });\n });\n }\n async keys() {\n return new Promise((resolve, reject) => {\n if (this.db == null) {\n reject(`this.db is null in clear`);\n }\n try {\n let SELECT_KEYS = `SELECT \"${COL_NAME}\" FROM `;\n SELECT_KEYS += `\"${this.tableName}\" ORDER BY ${COL_NAME};`;\n this.db.all(SELECT_KEYS, (err, rows) => {\n if (err) {\n reject(`Keys: ${err.message}`);\n }\n else {\n let arKeys = [];\n for (let i = 0; i < rows.length; i++) {\n arKeys = [...arKeys, rows[i].name];\n if (i === rows.length - 1) {\n resolve(arKeys);\n }\n }\n }\n });\n }\n catch (err) {\n return Promise.reject(err);\n }\n });\n }\n async values() {\n return new Promise((resolve, reject) => {\n if (this.db == null) {\n reject(`this.db is null in clear`);\n }\n try {\n let SELECT_VALUES = `SELECT \"${COL_VALUE}\" FROM `;\n SELECT_VALUES += `\"${this.tableName}\" ORDER BY ${COL_NAME};`;\n this.db.all(SELECT_VALUES, (err, rows) => {\n if (err) {\n reject(`Values: ${err.message}`);\n }\n else {\n let arValues = [];\n for (let i = 0; i < rows.length; i++) {\n arValues = [...arValues, rows[i].value];\n if (i === rows.length - 1) {\n resolve(arValues);\n }\n }\n }\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n async filtervalues(filter) {\n return new Promise((resolve, reject) => {\n if (this.db == null) {\n reject(`this.db is null in clear`);\n }\n try {\n if (!filter.startsWith(\"%\") && !filter.endsWith(\"%\")) {\n filter = \"%\" + filter + \"%\";\n }\n let SELECT_VALUES = `SELECT \"${COL_VALUE}\" FROM `;\n SELECT_VALUES += `\"${this.tableName}\" WHERE name `;\n SELECT_VALUES += `LIKE \"${filter}\" ORDER BY ${COL_NAME}`;\n this.db.all(SELECT_VALUES, (err, rows) => {\n if (err) {\n reject(`FilterValues: ${err.message}`);\n }\n else {\n let arValues = [];\n for (let i = 0; i < rows.length; i++) {\n arValues = [...arValues, rows[i].value];\n if (i === rows.length - 1) {\n resolve(arValues);\n }\n }\n }\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n async keysvalues() {\n return new Promise((resolve, reject) => {\n if (this.db == null) {\n reject(`this.db is null in clear`);\n }\n try {\n let SELECT_KEYSVALUES = `SELECT \"${COL_NAME}\" , \"${COL_VALUE}\"`;\n SELECT_KEYSVALUES += ` FROM \"${this.tableName}\" ORDER BY ${COL_NAME};`;\n this.db.all(SELECT_KEYSVALUES, (err, rows) => {\n if (err) {\n reject(`KeysValues: ${err.message}`);\n }\n else {\n resolve(rows);\n }\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n async deleteStore(dbName) {\n const dbPath = this.Path.join(this._utils.pathDB, dbName);\n try {\n this.NodeFs.unlinkSync(dbPath);\n //file removed\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async isTable(table) {\n return new Promise((resolve, reject) => {\n if (this.db == null) {\n reject(`isTable: this.db is null`);\n }\n try {\n let ret = false;\n const SELECT_TABLES = \"SELECT name FROM sqlite_master \" + \"WHERE TYPE='table';\";\n this.db.all(SELECT_TABLES, (err, rows) => {\n if (err) {\n reject(`isTable: ${err.message}`);\n }\n else {\n let arTables = [];\n for (let i = 0; i < rows.length; i++) {\n arTables = [...arTables, rows[i].name];\n if (i === rows.length - 1) {\n if (arTables.includes(table))\n ret = true;\n resolve(ret);\n }\n }\n }\n });\n }\n catch (err) {\n return Promise.reject(err);\n }\n });\n }\n async tables() {\n return new Promise((resolve, reject) => {\n try {\n const SELECT_TABLES = \"SELECT name FROM sqlite_master \" +\n \"WHERE TYPE='table' ORDER BY name;\";\n this.db.all(SELECT_TABLES, (err, rows) => {\n if (err) {\n reject(`tables: ${err.message}`);\n }\n else {\n let arTables = [];\n for (let i = 0; i < rows.length; i++) {\n if (rows[i].name != \"sqlite_sequence\") {\n arTables = [...arTables, rows[i].name];\n }\n if (i === rows.length - 1) {\n resolve(arTables);\n }\n }\n }\n });\n }\n catch (err) {\n return Promise.reject(err);\n }\n });\n }\n async deleteTable(table) {\n if (this.db == null) {\n return Promise.reject(`this.db is null in deleteTable`);\n }\n try {\n const ret = await this.isTable(table);\n if (ret) {\n const DROP_STMT = `DROP TABLE IF EXISTS ${table};`;\n return this.db.exec(DROP_STMT, (err) => {\n if (err) {\n return Promise.reject(`deleteTable: ${err.message}`);\n }\n else {\n return Promise.resolve();\n }\n });\n }\n else {\n return Promise.resolve();\n }\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async importJson(values) {\n let changes = 0;\n for (const val of values) {\n try {\n const data = new Data_1.Data();\n data.name = val.key;\n data.value = val.value;\n await this.set(data);\n changes += 1;\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n return Promise.resolve(changes);\n }\n async exportJson() {\n const retJson = {};\n try {\n const prevTableName = this.tableName;\n retJson.database = this.dbName.slice(0, -9);\n retJson.encrypted = false;\n retJson.tables = [];\n // get the table list\n const tables = await this.tables();\n for (const table of tables) {\n this.tableName = table;\n const retTable = {};\n retTable.name = table;\n retTable.values = [];\n const dataTable = await this.keysvalues();\n for (const tdata of dataTable) {\n const retData = {};\n retData.key = tdata.name;\n retData.value = tdata.value;\n retTable.values = [...retTable.values, retData];\n }\n retJson.tables = [...retJson.tables, retTable];\n }\n this.tableName = prevTableName;\n return Promise.resolve(retJson);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n}\nexports.StorageDatabaseHelper = StorageDatabaseHelper;\n//# sourceMappingURL=StorageDatabaseHelper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValue = exports.isTable = exports.isJsonStore = void 0;\n/**\n * IsJsonSQLite\n * @param obj\n */\nconst isJsonStore = (obj) => {\n const keyFirstLevel = [\"database\", \"encrypted\", \"tables\"];\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 === \"encrypted\" && typeof obj[key] != \"boolean\")\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 = (0, exports.isTable)(oKey);\n if (!retTable)\n return false;\n }\n }\n }\n return true;\n};\nexports.isJsonStore = isJsonStore;\n/**\n * IsTable\n * @param obj\n */\nconst isTable = (obj) => {\n const keyTableLevel = [\"name\", \"values\"];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object)) {\n return false;\n }\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 === \"values\" && typeof obj[key] != \"object\")\n return false;\n if (key === \"values\") {\n for (const oKey of obj[key]) {\n const retValue = (0, exports.isValue)(oKey);\n if (!retValue)\n return false;\n }\n }\n }\n return true;\n};\nexports.isTable = isTable;\n/**\n * IsValue\n * @param obj\n */\nconst isValue = (obj) => {\n const keyTableLevel = [\"key\", \"value\"];\n if (obj == null ||\n (Object.keys(obj).length === 0 && obj.constructor === Object)) {\n return false;\n }\n for (const key of Object.keys(obj)) {\n if (keyTableLevel.indexOf(key) === -1)\n return false;\n if (key === \"key\" && typeof obj[key] != \"string\")\n return false;\n if (key === \"value\" && typeof obj[key] != \"string\")\n return false;\n }\n return true;\n};\nexports.isValue = isValue;\n//# sourceMappingURL=json-utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CapgoCapacitorDataStorageSqlite = void 0;\nconst Data_1 = require(\"./electron-utils/Data\");\nconst StorageDatabaseHelper_1 = require(\"./electron-utils/StorageDatabaseHelper\");\nconst json_utils_1 = require(\"./electron-utils/json-utils\");\nclass CapgoCapacitorDataStorageSqlite {\n constructor() {\n this.mDb = new StorageDatabaseHelper_1.StorageDatabaseHelper();\n }\n async echo(options) {\n const ret = {};\n ret.value = options.value ? options.value : \"\";\n return Promise.resolve(ret);\n }\n async openStore(options) {\n const dbName = options.database\n ? `${options.database}SQLite.db`\n : \"storageSQLite.db\";\n const tableName = options.table ? options.table : \"storage_store\";\n try {\n await this.mDb.openStore(dbName, tableName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async closeStore(options) {\n const dbName = options.database\n ? `${options.database}SQLite.db`\n : \"storageSQLite.db\";\n if (this.mDb.dbName === dbName && this.mDb.isOpen) {\n try {\n await this.mDb.closeStore(dbName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n else {\n return Promise.resolve();\n }\n }\n async isStoreOpen(options) {\n const dbName = options.database\n ? `${options.database}SQLite.db`\n : \"storageSQLite.db\";\n let ret = false;\n if (this.mDb.dbName === dbName && this.mDb.isOpen) {\n ret = true;\n }\n return Promise.resolve({ result: ret });\n }\n async isStoreExists(options) {\n const dbName = options.database\n ? `${options.database}SQLite.db`\n : \"storageSQLite.db\";\n let ret = false;\n try {\n ret = await this.mDb.isStoreExists(dbName);\n return Promise.resolve({ result: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async setTable(options) {\n const tableName = options.table;\n if (tableName == null) {\n return Promise.reject(\"Must provide a table name\");\n }\n try {\n await this.mDb.setTable(tableName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(\"Must open a store first\");\n }\n }\n async set(options) {\n const key = options.key;\n if (key == null) {\n return Promise.reject(\"Must provide key\");\n }\n const value = options.value;\n if (value == null) {\n return Promise.reject(\"Must provide value\");\n }\n const data = new Data_1.Data();\n data.name = key;\n data.value = value;\n try {\n await this.mDb.set(data);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async get(options) {\n let ret;\n const key = options.key;\n if (key == null) {\n return Promise.reject(\"Must provide key\");\n }\n try {\n const data = await this.mDb.get(key);\n ret = (data === null || data === void 0 ? void 0 : data.id) != null ? data.value : \"\";\n return Promise.resolve({ value: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async remove(options) {\n try {\n const key = options.key;\n if (key == null) {\n return Promise.reject(\"Must provide key\");\n }\n await this.mDb.remove(key);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async clear() {\n try {\n await this.mDb.clear();\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async iskey(options) {\n let ret;\n const key = options.key;\n if (key == null) {\n return Promise.reject(\"Must provide key\");\n }\n try {\n ret = await this.mDb.iskey(key);\n return Promise.resolve({ result: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async keys() {\n try {\n const ret = await this.mDb.keys();\n return Promise.resolve({ keys: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async values() {\n try {\n const ret = await this.mDb.values();\n return Promise.resolve({ values: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async filtervalues(options) {\n const filter = options.filter;\n if (filter == null || typeof filter != \"string\") {\n return Promise.reject(\"Must Must provide filter as string\");\n }\n try {\n const ret = await this.mDb.filtervalues(filter);\n return Promise.resolve({ values: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async keysvalues() {\n const ret = [];\n try {\n const results = await this.mDb.keysvalues();\n for (const result of results) {\n const res = { key: result.name, value: result.value };\n ret.push(res);\n }\n return Promise.resolve({ keysvalues: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async deleteStore(options) {\n let dbName = options.database;\n if (dbName == null) {\n return Promise.reject(\"Must provide a Database Name\");\n }\n dbName = `${options.database}SQLite.db`;\n try {\n await this.mDb.deleteStore(dbName);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async isTable(options) {\n const table = options.table;\n if (table == null) {\n return Promise.reject(\"Must provide a Table Name\");\n }\n try {\n const ret = await this.mDb.isTable(table);\n return Promise.resolve({ result: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async tables() {\n try {\n const ret = await this.mDb.tables();\n return Promise.resolve({ tables: ret });\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async deleteTable(options) {\n const table = options.table;\n if (table == null) {\n return Promise.reject(\"Must provide a Table Name\");\n }\n try {\n await this.mDb.deleteTable(table);\n return Promise.resolve();\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n async importFromJson(options) {\n const keys = Object.keys(options);\n if (!keys.includes(\"jsonstring\")) {\n return Promise.reject(\"Must provide a json object\");\n }\n let totalChanges = 0;\n if (options === null || options === void 0 ? void 0 : options.jsonstring) {\n const jsonStrObj = options.jsonstring;\n const jsonObj = JSON.parse(jsonStrObj);\n const isValid = (0, json_utils_1.isJsonStore)(jsonObj);\n if (!isValid) {\n return Promise.reject(\"Must provide a valid JsonSQLite Object\");\n }\n const vJsonObj = jsonObj;\n const dbName = vJsonObj.database\n ? `${vJsonObj.database}SQLite.db`\n : \"storageSQLite.db\";\n for (const table of vJsonObj.tables) {\n const tableName = table.name ? table.name : \"storage_store\";\n try {\n // Open the database\n await this.mDb.openStore(dbName, tableName);\n // Import the JsonSQLite Object\n if (table === null || table === void 0 ? void 0 : table.values) {\n const changes = await this.mDb.importJson(table.values);\n totalChanges += changes;\n }\n }\n catch (err) {\n return Promise.reject(`ImportFromJson: ${err}`);\n }\n finally {\n await this.mDb.closeStore(dbName);\n }\n }\n return Promise.resolve({ changes: totalChanges });\n }\n else {\n return Promise.reject(\"Must provide a json object\");\n }\n }\n async isJsonValid(options) {\n const keys = Object.keys(options);\n if (!keys.includes(\"jsonstring\")) {\n return Promise.reject(\"Must provide a json object\");\n }\n if (options === null || options === void 0 ? void 0 : options.jsonstring) {\n const jsonStrObj = options.jsonstring;\n const jsonObj = JSON.parse(jsonStrObj);\n const isValid = (0, json_utils_1.isJsonStore)(jsonObj);\n if (!isValid) {\n return Promise.reject(\"Stringify Json Object not Valid\");\n }\n else {\n return Promise.resolve({ result: true });\n }\n }\n else {\n return Promise.reject(\"Must provide in options a stringify Json Object\");\n }\n }\n async exportToJson() {\n try {\n const ret = await this.mDb.exportJson();\n return Promise.resolve({ export: ret });\n }\n catch (err) {\n return Promise.reject(`exportToJson: ${err.message}`);\n }\n }\n}\nexports.CapgoCapacitorDataStorageSqlite = CapgoCapacitorDataStorageSqlite;\n//# sourceMappingURL=index.js.map"],"names":["Data_1","UtilsSQLite_1","StorageDatabaseHelper_1","require$$0","require$$1","require$$2","require$$3","CapgoCapacitorDataStorageSqlite_1"],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- #import <UIKit/UIKit.h>
2
-
3
- //! Project version number for Plugin.
4
- FOUNDATION_EXPORT double PluginVersionNumber;
5
-
6
- //! Project version string for Plugin.
7
- FOUNDATION_EXPORT const unsigned char PluginVersionString[];
8
-
9
- // In this header, you should import all the public headers of your framework using statements like #import <Plugin/PublicHeader.h>
10
-
@@ -1,29 +0,0 @@
1
- #import <Foundation/Foundation.h>
2
- #import <Capacitor/Capacitor.h>
3
-
4
- // Define the plugin using the CAP_PLUGIN Macro, and
5
- // each method the plugin supports using the CAP_PLUGIN_METHOD macro.
6
- CAP_PLUGIN(CapgoCapacitorDataStorageSqlitePlugin, "CapgoCapacitorDataStorageSqlite",
7
- CAP_PLUGIN_METHOD(echo, CAPPluginReturnPromise);
8
- CAP_PLUGIN_METHOD(openStore, CAPPluginReturnPromise);
9
- CAP_PLUGIN_METHOD(closeStore, CAPPluginReturnPromise);
10
- CAP_PLUGIN_METHOD(isStoreOpen, CAPPluginReturnPromise);
11
- CAP_PLUGIN_METHOD(isStoreExists, CAPPluginReturnPromise);
12
- CAP_PLUGIN_METHOD(setTable, CAPPluginReturnPromise);
13
- CAP_PLUGIN_METHOD(set, CAPPluginReturnPromise);
14
- CAP_PLUGIN_METHOD(get, CAPPluginReturnPromise);
15
- CAP_PLUGIN_METHOD(remove, CAPPluginReturnPromise);
16
- CAP_PLUGIN_METHOD(clear, CAPPluginReturnPromise);
17
- CAP_PLUGIN_METHOD(keys, CAPPluginReturnPromise);
18
- CAP_PLUGIN_METHOD(values, CAPPluginReturnPromise);
19
- CAP_PLUGIN_METHOD(filtervalues, CAPPluginReturnPromise);
20
- CAP_PLUGIN_METHOD(keysvalues, CAPPluginReturnPromise);
21
- CAP_PLUGIN_METHOD(iskey, CAPPluginReturnPromise);
22
- CAP_PLUGIN_METHOD(deleteStore,CAPPluginReturnPromise);
23
- CAP_PLUGIN_METHOD(isTable,CAPPluginReturnPromise);
24
- CAP_PLUGIN_METHOD(tables,CAPPluginReturnPromise);
25
- CAP_PLUGIN_METHOD(deleteTable,CAPPluginReturnPromise);
26
- CAP_PLUGIN_METHOD(isJsonValid,CAPPluginReturnPromise);
27
- CAP_PLUGIN_METHOD(importFromJson,CAPPluginReturnPromise);
28
- CAP_PLUGIN_METHOD(exportToJson,CAPPluginReturnPromise);
29
- )
@@ -1,24 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
- <plist version="1.0">
4
- <dict>
5
- <key>CFBundleDevelopmentRegion</key>
6
- <string>$(DEVELOPMENT_LANGUAGE)</string>
7
- <key>CFBundleExecutable</key>
8
- <string>$(EXECUTABLE_NAME)</string>
9
- <key>CFBundleIdentifier</key>
10
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11
- <key>CFBundleInfoDictionaryVersion</key>
12
- <string>6.0</string>
13
- <key>CFBundleName</key>
14
- <string>$(PRODUCT_NAME)</string>
15
- <key>CFBundlePackageType</key>
16
- <string>FMWK</string>
17
- <key>CFBundleShortVersionString</key>
18
- <string>1.0</string>
19
- <key>CFBundleVersion</key>
20
- <string>$(CURRENT_PROJECT_VERSION)</string>
21
- <key>NSPrincipalClass</key>
22
- <string></string>
23
- </dict>
24
- </plist>
package/readme.md DELETED
@@ -1,210 +0,0 @@
1
- <a href="https://capgo.app/"><img src='https://raw.githubusercontent.com/Cap-go/capgo/main/assets/capgo_banner.png' alt='Capgo - Instant updates for capacitor'/></a>
2
-
3
- <div align="center">
4
- <h2><a href="https://capgo.app/?ref=plugin"> ➡️ Get Instant updates for your App with Capgo 🚀</a></h2>
5
- <h2><a href="https://capgo.app/consulting/?ref=plugin"> Fix your annoying bug now, Hire a Capacitor expert 💪</a></h2>
6
- </div>
7
-
8
- <p align="center"><br><img src="https://user-images.githubusercontent.com/236501/85893648-1c92e880-b7a8-11ea-926d-95355b8175c7.png" width="128" height="128" /></p>
9
- <h3 align="center">DATA STORAGE SQLITE</h3>
10
- <p align="center"><strong><code>@capgo/capacitor-data-storage-sqlite</code></strong></p>
11
- <br>
12
- <p align="center" style="font-size:50px;color:red"><strong>CAPACITOR 6</strong></p><br>
13
- <br>
14
- <!-- Note from the Owner - Start -->
15
- <p align="center" style="font-size:50px;color:red"><strong>Note from the Owner</strong></p>
16
- <!-- Note from the Owner - End -->
17
- <br>
18
- <!-- Message below Note from the Owner - Start -->
19
- <p align="left" style="font-size:47px">This Plugin has been transfered to Capgo org after his original creator <a href="https://github.com/jepiqueau">@jepiqueau</a> decide to retire.
20
- <br>We will forever be thankful for the work he did.</p>
21
- <br>
22
- <p align="center">
23
- Capacitor Data Storage SQlite Plugin is a custom Native Capacitor plugin providing a key-value permanent store for simple data of <strong>type string only</strong> to SQLite on IOS, Android and Electron platforms and to IndexDB for the Web platform.</p>
24
-
25
- <p align="center">
26
- <img src="https://img.shields.io/maintenance/yes/2024?style=flat-square" />
27
- <a href="https://github.com/Cap-go/capacitor-data-storage-sqlite/actions?query=workflow%3A%22CI%22"><img src="https://img.shields.io/github/workflow/status/Cap-go/capacitor-data-storage-sqlite/CI?style=flat-square" /></a>
28
- <a href="https://www.npmjs.com/package/Cap-go/capacitor-data-storage-sqlite"><img src="https://img.shields.io/npm/l/capacitor-data-storage-sqlite.svg?style=flat-square" /></a>
29
- <br>
30
- <a href="https://www.npmjs.com/package/Cap-go/capacitor-data-storage-sqlite"><img src="https://img.shields.io/npm/dw/capacitor-data-storage-sqlite?style=flat-square" /></a>
31
- <a href="https://www.npmjs.com/package/Cap-go/capacitor-data-storage-sqlite"><img src="https://img.shields.io/npm/v/capacitor-data-storage-sqlite?style=flat-square" /></a>
32
- <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
33
- <a href="#contributors-"><img src="https://img.shields.io/badge/all%20contributors-4-orange?style=flat-square" /></a>
34
- <!-- ALL-CONTRIBUTORS-BADGE:END -->
35
- </p>
36
-
37
- ## Maintainers
38
-
39
- | Maintainer | GitHub | Social |
40
- | ----------------- | ----------------------------------------- | ------ |
41
- | Martin Donadieu | [riderx](https://github.com/riderx) | |
42
- | Quéau Jean Pierre | [jepiqueau](https://github.com/jepiqueau) | |
43
-
44
- ## Browser Support
45
-
46
- The plugin follows the guidelines from the `Capacitor Team`,
47
-
48
- - [Capacitor Browser Support](https://capacitorjs.com/docs/v3/web#browser-support)
49
-
50
- meaning that it will not work in IE11 without additional JavaScript transformations, e.g. with [Babel](https://babeljs.io/).
51
-
52
- ## Installation
53
-
54
- ```bash
55
- npm install --save @capgo/capacitor-data-storage-sqlite
56
- npx cap sync
57
- ```
58
-
59
- - On iOS, no further steps are needed.
60
-
61
- - On Android, no further steps are needed.
62
-
63
- - On Web,
64
- ```bash
65
- npm install --save localforage
66
- ```
67
-
68
- - On Electron
69
- ```bash
70
- npm install --save @capacitor-community/electron
71
- npx cap add @capacitor-community/electron
72
- ```
73
- Go to the Electron folder of your application
74
-
75
- ```bash
76
- cd electron
77
- npm install --save sqlite3
78
- npm install --save-dev @types/sqlite3
79
- npm run build
80
- cd ..
81
- npx cap sync @capacitor-community/electron
82
- ```
83
-
84
- Then build YOUR_APPLICATION
85
-
86
- ```
87
- npm run build
88
- npx cap copy
89
- npx cap copy @capacitor-community/electron
90
- npx cap open ios
91
- npx cap open android
92
- npx cap open @capacitor-community/electron
93
- ionic serve
94
- ```
95
-
96
- ## Configuration
97
-
98
- No configuration required for this plugin
99
-
100
- ## Supported methods
101
-
102
- | Name | Android | iOS | Electron | Web |
103
- | :--------------------------- | :------ | :-- | :------- | :-- |
104
- | openStore (non-encrypted DB) | ✅ | ✅ | ✅ | ✅ |
105
- | openStore (encrypted DB) | ✅ | ✅ | ❌ | ❌ |
106
- | closeStore | ✅ | ✅ | ✅ | ❌ |
107
- | isStoreOpen | ✅ | ✅ | ✅ | ❌ |
108
- | isStoreExists | ✅ | ✅ | ✅ | ❌ |
109
- | deleteStore | ✅ | ✅ | ✅ | ❌ |
110
- | setTable | ✅ | ✅ | ✅ | ✅ |
111
- | set | ✅ | ✅ | ✅ | ✅ |
112
- | get | ✅ | ✅ | ✅ | ✅ |
113
- | iskey | ✅ | ✅ | ✅ | ✅ |
114
- | keys | ✅ | ✅ | ✅ | ✅ |
115
- | values | ✅ | ✅ | ✅ | ✅ |
116
- | filtervalues | ✅ | ✅ | ✅ | ✅ |
117
- | keysvalues | ✅ | ✅ | ✅ | ✅ |
118
- | remove | ✅ | ✅ | ✅ | ✅ |
119
- | clear | ✅ | ✅ | ✅ | ✅ |
120
- | isTable | ✅ | ✅ | ✅ | ✅ |
121
- | tables | ✅ | ✅ | ✅ | ✅ |
122
- | deleteTable | ✅ | ✅ | ✅ | ❌ |
123
- | isJsonValid | ✅ | ✅ | ✅ | ✅ |
124
- | importFromJson | ✅ | ✅ | ✅ | ✅ |
125
- | exportToJson | ✅ | ✅ | ✅ | ✅ |
126
-
127
- ## Documentation
128
-
129
- - [API_Documentation](docs/API.md)
130
-
131
- - [USAGE_Documentation](docs/USAGE.md)
132
-
133
- ## Applications demonstrating the use of the plugin
134
-
135
- ### Ionic/Angular
136
-
137
- - [angular-data-storage-sqlite-app-starter](https://github.com/Cap-go/angular-data-storage-sqlite-app-starter)
138
-
139
- ### Ionic/React
140
-
141
- - [react-data-storage-sqlite-app-starter](https://github.com/Cap-go/react-data-storage-sqlite-app-starter)
142
-
143
- ### React
144
-
145
- - [react-datastoragesqlite-app](https://github.com/Cap-go/react-datastoragesqlite-app)
146
-
147
- ### Ionic/Vue
148
-
149
- - [vue-data-storage-sqlite-app-starter](https://github.com/Cap-go/vue-data-storage-sqlite-app-starter)
150
-
151
- ### Vue
152
-
153
- - [vue-datastoragesqlite-app](https://github.com/Cap-go/vue-datastoragesqlite-app)
154
-
155
- ## Usage
156
-
157
- - [see capacitor documentation](https://capacitor.ionicframework.com/docs/getting-started/with-ionic)
158
-
159
- - [see USAGE_Documentation](https://github.com/Cap-go/capacitor-data-storage-sqlite/blob/master/docs/USAGE.md)
160
-
161
- ## Dependencies
162
-
163
- The IOS & Android code use SQLCipher allowing for database encryption.
164
- The Android code is now based on `androidx.sqlite`. The database is not closed anymore after each transaction for performance improvement.
165
- You must manage the `close` of the database before opening a new database.
166
- The Web code use `localforage` package to store the datastore in the Browser.
167
- The Electron code use `sqlite3`package
168
-
169
- ## Contributors ✨
170
-
171
- Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
172
-
173
- <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
174
- <!-- prettier-ignore-start -->
175
- <!-- markdownlint-disable -->
176
- <table>
177
- <tr>
178
- <td align="center"><a href="https://github.com/jepiqueau"><img src="https://avatars3.githubusercontent.com/u/16580653?v=4" width="100px;" alt=""/><br /><sub><b>Jean Pierre Quéau</b></sub></a><br /><a href="https://github.com/capacitor-data-storage-sqlite/commits?author=jepiqueau" title="Code">💻</a></td>
179
- <td align="center"><a href="https://github.com/mwpb"><img src="https://avatars.githubusercontent.com/u/12957941?v=4" width="100px;" alt=""/><br /><sub><b>Matthew Burke</b></sub></a><br /><a href="https://github.com/capacitor-data-storage-sqlite/commits?author=jepiqueau" title="Documentation">📖</a></td>
180
- <td align="center"><a href="https://github.com/mwpb"><img src="https://avatars.githubusercontent.com/u/1745820?v=4" width="100px;" alt=""/><br /><sub><b>Kevin van Schaijk</b></sub></a><br /><a href="https://github.com/capacitor-data-storage-sqlite/commits?author=jepiqueau" title="Code">💻</a></td>
181
- <td align="center"><a href="https://github.com/garbit"><img src="https://avatars.githubusercontent.com/u/555396?v=4" width="100px;" alt=""/><br /><sub><b>Andy Garbett</b></sub></a><br /><a href="https://github.com/capacitor-data-storage-sqlite/commits?author=jepiqueau" title="Documentation">📖</a></td>
182
-
183
- </tr>
184
- </table>
185
-
186
- <!-- markdownlint-enable -->
187
- <!-- prettier-ignore-end -->
188
-
189
- <!-- ALL-CONTRIBUTORS-LIST:END -->
190
-
191
- This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
192
-
193
- <p align="left" style="font-size:47px">Retirement message of @jepiqueau --></p>
194
- <br>
195
- <p align="left">
196
- I have been dedicated to developing and maintaining this plugin for many years since the inception of Ionic Capacitor. Now, at 73+ years old, and with my MacBook Pro becoming obsolete for running Capacitor 6 for iOS, I have made the decision to cease maintenance of the plugin. If anyone wishes to take ownership of this plugin, they are welcome to do so.
197
- </p>
198
- <br>
199
- <p align="left">
200
- It has been a great honor to be part of this development journey alongside the developer community. I am grateful to see many of you following me on this path and incorporating the plugin into your applications. Your comments and suggestions have motivated me to continuously improve it.
201
- </p>
202
- <br>
203
- <p align="left">
204
- I have made this decision due to several family-related troubles that require my full attention and time. Therefore, I will not be stepping back. Thank you to all of you for your support.
205
- </p>
206
- <br>
207
- <p align="left" style="font-size:47px">End <--</p>
208
- <!-- Message below Note from the Owner - End -->
209
- <br>
210
-