@capgo/capacitor-fast-sql 8.0.24 → 8.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/app/capgo/capacitor/fastsql/CapgoCapacitorFastSqlPlugin.java +7 -1
- package/android/src/main/java/app/capgo/capacitor/fastsql/EncryptedSQLDatabase.java +7 -8
- package/android/src/main/java/app/capgo/capacitor/fastsql/SQLDatabase.java +7 -8
- package/dist/esm/definitions.d.ts +40 -0
- package/dist/esm/definitions.d.ts.map +1 -1
- package/dist/esm/fast-sql.d.ts +1 -1
- package/dist/esm/fast-sql.d.ts.map +1 -1
- package/dist/esm/fast-sql.js +12 -3
- package/dist/esm/helpers.js +0 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/native-sql-connection.d.ts +95 -0
- package/dist/esm/native-sql-connection.d.ts.map +1 -0
- package/dist/esm/native-sql-connection.js +244 -0
- package/dist/esm/sql-connection.d.ts +4 -78
- package/dist/esm/sql-connection.d.ts.map +1 -1
- package/dist/esm/sql-connection.js +1 -244
- package/dist/esm/web-sql-connection.d.ts +72 -0
- package/dist/esm/web-sql-connection.d.ts.map +1 -0
- package/dist/esm/web-sql-connection.js +122 -0
- package/dist/esm/web.d.ts +9 -2
- package/dist/esm/web.d.ts.map +1 -1
- package/dist/esm/web.js +41 -25
- package/dist/plugin.cjs.js +176 -29
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +176 -29
- package/dist/plugin.js.map +1 -1
- package/ios/Sources/CapgoCapacitorFastSqlPlugin/CapgoCapacitorFastSqlPlugin.swift +8 -2
- package/package.json +1 -1
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/plugin.js","esm/sql-connection.js","esm/fast-sql.js","esm/key-value.js","esm/web.js"],"sourcesContent":["/**\n * Transaction isolation levels\n */\nexport var IsolationLevel;\n(function (IsolationLevel) {\n IsolationLevel[\"ReadUncommitted\"] = \"READ UNCOMMITTED\";\n IsolationLevel[\"ReadCommitted\"] = \"READ COMMITTED\";\n IsolationLevel[\"RepeatableRead\"] = \"REPEATABLE READ\";\n IsolationLevel[\"Serializable\"] = \"SERIALIZABLE\";\n})(IsolationLevel || (IsolationLevel = {}));\n","import { registerPlugin } from '@capacitor/core';\nexport const CapgoCapacitorFastSql = registerPlugin('CapgoCapacitorFastSql', {\n web: () => import('./web').then((m) => new m.CapgoCapacitorFastSqlWeb()),\n});\n","import { IsolationLevel } from './definitions';\n/**\n * SQL Connection class that uses HTTP protocol for efficient communication\n * with native SQLite databases, bypassing Capacitor's standard bridge.\n *\n * Inspired by capacitor-blob-writer's approach to avoid serialization overhead.\n */\nexport class SQLConnection {\n constructor(database, port, token) {\n this.inTransaction = false;\n this.database = database;\n this.port = port;\n this.token = token;\n this.baseUrl = `http://localhost:${port}`;\n }\n /**\n * Get the database name\n */\n getDatabaseName() {\n return this.database;\n }\n /**\n * Execute a SQL query via HTTP protocol for optimal performance\n *\n * @param statement - SQL statement to execute\n * @param params - Parameters to bind to the statement\n * @returns Query results\n */\n async execute(statement, params) {\n const response = await fetch(`${this.baseUrl}/execute`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n statement,\n params: params ? this.serializeParams(params) : [],\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`SQL execution failed: ${error}`);\n }\n const result = await response.json();\n return this.deserializeResult(result);\n }\n /**\n * Execute multiple SQL statements in a batch for better performance\n *\n * @param operations - Array of SQL operations to execute\n * @returns Array of results for each operation\n */\n async executeBatch(operations) {\n const response = await fetch(`${this.baseUrl}/batch`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n operations: operations.map((op) => ({\n statement: op.statement,\n params: op.params ? this.serializeParams(op.params) : [],\n })),\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`SQL batch execution failed: ${error}`);\n }\n const results = await response.json();\n return results.map((r) => this.deserializeResult(r));\n }\n /**\n * Begin a transaction\n *\n * @param isolationLevel - Optional isolation level\n */\n async beginTransaction(isolationLevel) {\n if (this.inTransaction) {\n throw new Error('Transaction already in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/begin`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n isolationLevel: isolationLevel || IsolationLevel.Serializable,\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to begin transaction: ${error}`);\n }\n this.inTransaction = true;\n }\n /**\n * Commit the current transaction\n */\n async commit() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/commit`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to commit transaction: ${error}`);\n }\n this.inTransaction = false;\n }\n /**\n * Rollback the current transaction\n */\n async rollback() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/rollback`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to rollback transaction: ${error}`);\n }\n this.inTransaction = false;\n }\n /**\n * Execute operations within a transaction automatically\n *\n * @param callback - Function containing operations to execute\n * @param isolationLevel - Optional isolation level\n */\n async transaction(callback, isolationLevel) {\n await this.beginTransaction(isolationLevel);\n try {\n const result = await callback(this);\n await this.commit();\n return result;\n }\n catch (error) {\n await this.rollback();\n throw error;\n }\n }\n /**\n * Query helper for SELECT statements\n *\n * @param statement - SELECT statement\n * @param params - Query parameters\n * @returns Array of rows\n */\n async query(statement, params) {\n const result = await this.execute(statement, params);\n return result.rows;\n }\n /**\n * Execute helper for INSERT/UPDATE/DELETE statements\n *\n * @param statement - SQL statement\n * @param params - Statement parameters\n * @returns Number of affected rows and insert ID if applicable\n */\n async run(statement, params) {\n const result = await this.execute(statement, params);\n return {\n rowsAffected: result.rowsAffected,\n insertId: result.insertId,\n };\n }\n /**\n * Serialize parameters for transmission\n * Binary data (Uint8Array) is converted to base64 for JSON transport\n */\n serializeParams(params) {\n return params.map((param) => {\n if (param instanceof Uint8Array) {\n return {\n _type: 'binary',\n _data: this.uint8ArrayToBase64(param),\n };\n }\n return param;\n });\n }\n /**\n * Deserialize result from server\n * Base64-encoded binary data is converted back to Uint8Array\n */\n deserializeResult(result) {\n return {\n rows: result.rows.map((row) => {\n const deserializedRow = {};\n for (const [key, value] of Object.entries(row)) {\n if (value && typeof value === 'object' && value._type === 'binary') {\n deserializedRow[key] = this.base64ToUint8Array(value._data);\n }\n else {\n deserializedRow[key] = value;\n }\n }\n return deserializedRow;\n }),\n rowsAffected: result.rowsAffected || 0,\n insertId: result.insertId,\n };\n }\n /**\n * Convert Uint8Array to base64 string\n */\n uint8ArrayToBase64(bytes) {\n let binary = '';\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n /**\n * Convert base64 string to Uint8Array\n */\n base64ToUint8Array(base64) {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n}\n","import { CapgoCapacitorFastSql } from './plugin';\nimport { SQLConnection } from './sql-connection';\n/**\n * FastSQL - High-level API for managing SQL connections\n *\n * This class provides a convenient interface for opening/closing database connections\n * and managing multiple databases simultaneously.\n */\nexport class FastSQL {\n /**\n * Open a database connection\n *\n * @param options - Connection options\n * @returns SQLConnection instance for executing queries\n */\n static async connect(options) {\n // Check if already connected\n const existing = this.connections.get(options.database);\n if (existing) {\n return existing;\n }\n // Connect via native plugin\n const info = await CapgoCapacitorFastSql.connect(options);\n // Create connection instance\n const connection = new SQLConnection(info.database, info.port, info.token);\n // Store connection\n this.connections.set(options.database, connection);\n return connection;\n }\n /**\n * Close a database connection\n *\n * @param database - Database name to close\n */\n static async disconnect(database) {\n const connection = this.connections.get(database);\n if (!connection) {\n throw new Error(`Database '${database}' is not connected`);\n }\n // Disconnect via native plugin\n await CapgoCapacitorFastSql.disconnect({ database });\n // Remove connection\n this.connections.delete(database);\n }\n /**\n * Get an existing connection\n *\n * @param database - Database name\n * @returns SQLConnection instance or null if not connected\n */\n static getConnection(database) {\n return this.connections.get(database) || null;\n }\n /**\n * Close all open connections\n */\n static async disconnectAll() {\n const databases = Array.from(this.connections.keys());\n await Promise.all(databases.map((db) => this.disconnect(db)));\n }\n /**\n * Get list of all open database connections\n *\n * @returns Array of database names\n */\n static getOpenDatabases() {\n return Array.from(this.connections.keys());\n }\n}\nFastSQL.connections = new Map();\n","import { FastSQL } from './fast-sql';\n/**\n * Key-value storage backed by the FastSQL database connection.\n *\n * This is a lightweight wrapper for mobile-focused secure storage use cases.\n */\nexport class KeyValueStore {\n constructor(connection, store) {\n this.initialized = false;\n this.ownsConnection = false;\n this.closed = false;\n this.connection = connection;\n this.store = store;\n }\n /**\n * Open (or create) a key-value store for the given database.\n */\n static async open(options) {\n var _a;\n const connection = await FastSQL.connect(options);\n const store = (_a = options.store) !== null && _a !== void 0 ? _a : 'default';\n const kv = new KeyValueStore(connection, store);\n kv.ownsConnection = true;\n await kv.ensureSchema();\n return kv;\n }\n /**\n * Create a key-value store from an existing SQLConnection.\n * Note: The caller retains ownership and is responsible for closing the connection.\n */\n static async fromConnection(connection, store = 'default') {\n const kv = new KeyValueStore(connection, store);\n await kv.ensureSchema();\n return kv;\n }\n /**\n * Close the key-value store and release resources.\n * Only disconnects the database if this store owns the connection (created via open()).\n */\n async close() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n if (this.ownsConnection) {\n try {\n await FastSQL.disconnect(this.connection.getDatabaseName());\n }\n catch (_a) {\n // Ignore disconnect errors during close.\n }\n }\n this.initialized = false;\n }\n /**\n * Store a value by key.\n */\n async set(key, value) {\n await this.ensureSchema();\n const encoded = this.encodeValue(value);\n await this.connection.run('INSERT OR REPLACE INTO __kv_store (s, k, t, v) VALUES (?, ?, ?, ?)', [\n this.store,\n key,\n encoded.type,\n encoded.value,\n ]);\n }\n /**\n * Retrieve a value by key. Returns null if the key is missing.\n */\n async get(key) {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT t, v FROM __kv_store WHERE s = ? AND k = ? LIMIT 1', [\n this.store,\n key,\n ]);\n if (!rows.length) {\n return null;\n }\n const row = rows[0];\n const type = row.t;\n const value = row.v;\n return this.decodeValue(type, value);\n }\n /**\n * Check if a key exists.\n */\n async has(key) {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT 1 as existsFlag FROM __kv_store WHERE s = ? AND k = ? LIMIT 1', [\n this.store,\n key,\n ]);\n return rows.length > 0;\n }\n /**\n * Remove a single key.\n */\n async remove(key) {\n await this.ensureSchema();\n await this.connection.run('DELETE FROM __kv_store WHERE s = ? AND k = ?', [this.store, key]);\n }\n /**\n * Clear all keys for the current store.\n */\n async clear() {\n await this.ensureSchema();\n await this.connection.run('DELETE FROM __kv_store WHERE s = ?', [this.store]);\n }\n /**\n * List all keys for the current store.\n */\n async keys() {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT k FROM __kv_store WHERE s = ? ORDER BY k', [this.store]);\n return rows.map((row) => String(row.k));\n }\n async ensureSchema() {\n if (this.initialized) {\n return;\n }\n await this.connection.run('CREATE TABLE IF NOT EXISTS __kv_store (s TEXT NOT NULL, k TEXT NOT NULL, t TEXT NOT NULL, v BLOB, PRIMARY KEY (s, k))');\n await this.connection.run('CREATE INDEX IF NOT EXISTS __kv_store_s_idx ON __kv_store (s)');\n this.initialized = true;\n }\n encodeValue(value) {\n if (value === null || value === undefined) {\n return { type: 'null', value: null };\n }\n if (value instanceof Uint8Array) {\n return { type: 'binary', value };\n }\n if (typeof value === 'string') {\n return { type: 'string', value };\n }\n if (typeof value === 'number') {\n return { type: 'number', value };\n }\n if (typeof value === 'boolean') {\n return { type: 'boolean', value: value ? 1 : 0 };\n }\n return { type: 'json', value: JSON.stringify(value) };\n }\n decodeValue(type, value) {\n switch (type) {\n case 'null':\n return null;\n case 'binary':\n return value instanceof Uint8Array ? value : null;\n case 'string':\n return value != null ? String(value) : '';\n case 'number':\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n case 'boolean':\n if (typeof value === 'number') {\n return value !== 0;\n }\n if (typeof value === 'string') {\n return value === '1' || value.toLowerCase() === 'true';\n }\n return Boolean(value);\n case 'json':\n if (typeof value === 'string') {\n try {\n return JSON.parse(value);\n }\n catch (_a) {\n return null;\n }\n }\n return null;\n default:\n return value;\n }\n }\n}\n","import { WebPlugin } from '@capacitor/core';\n/**\n * Web implementation using sql.js (SQLite compiled to WebAssembly)\n *\n * This provides a compatible API on the web platform, storing databases\n * in IndexedDB for persistence.\n */\nexport class CapgoCapacitorFastSqlWeb extends WebPlugin {\n constructor() {\n super();\n this.databases = new Map();\n this.sqlPromise = null;\n this.nextPort = 9000;\n this.loadSqlJs();\n }\n /**\n * Load sql.js library\n */\n async loadSqlJs() {\n if (this.sqlPromise)\n return;\n this.sqlPromise = new Promise((resolve, reject) => {\n try {\n // Load sql.js from CDN\n const script = document.createElement('script');\n script.src = 'https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.js';\n script.onload = async () => {\n const initSqlJs = window.initSqlJs;\n const SQL = await initSqlJs({\n locateFile: (file) => `https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/${file}`,\n });\n resolve(SQL);\n };\n script.onerror = reject;\n document.head.appendChild(script);\n }\n catch (error) {\n reject(error);\n }\n });\n }\n async connect(options) {\n const SQL = await this.sqlPromise;\n // Check if database already exists in IndexedDB\n const savedData = await this.loadFromIndexedDB(options.database);\n let db;\n if (savedData) {\n db = new SQL.Database(savedData);\n }\n else {\n db = new SQL.Database();\n }\n const token = this.generateToken();\n const port = this.nextPort++;\n this.databases.set(options.database, { db, token, port });\n return {\n port,\n token,\n database: options.database,\n };\n }\n async disconnect(options) {\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n // Save to IndexedDB before closing\n const data = dbInfo.db.export();\n await this.saveToIndexedDB(options.database, data);\n dbInfo.db.close();\n this.databases.delete(options.database);\n }\n async getServerInfo(options) {\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n return {\n port: dbInfo.port,\n token: dbInfo.token,\n };\n }\n async execute(options) {\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n try {\n const stmt = dbInfo.db.prepare(options.statement);\n if (options.params) {\n stmt.bind(options.params);\n }\n const rows = [];\n while (stmt.step()) {\n const row = stmt.getAsObject();\n rows.push(row);\n }\n stmt.free();\n // Get changes and last insert ID\n const changes = dbInfo.db.getRowsModified();\n const insertId = this.getLastInsertId(dbInfo.db);\n return {\n rows,\n rowsAffected: changes,\n insertId: insertId > 0 ? insertId : undefined,\n };\n }\n catch (error) {\n throw new Error(`SQL execution failed: ${error.message}`);\n }\n }\n async beginTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'BEGIN TRANSACTION',\n });\n }\n async commitTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'COMMIT',\n });\n }\n async rollbackTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'ROLLBACK',\n });\n }\n /**\n * Generate a random authentication token\n */\n generateToken() {\n return Array.from(crypto.getRandomValues(new Uint8Array(32)))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n }\n /**\n * Get last insert row ID\n */\n getLastInsertId(db) {\n try {\n const result = db.exec('SELECT last_insert_rowid()');\n if (result.length > 0 && result[0].values.length > 0) {\n return result[0].values[0][0];\n }\n }\n catch (_a) {\n // Ignore error\n }\n return -1;\n }\n /**\n * Save database to IndexedDB\n */\n async saveToIndexedDB(dbName, data) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open('CapacitorNativeSQL', 1);\n request.onerror = () => reject(request.error);\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains('databases')) {\n db.createObjectStore('databases');\n }\n };\n request.onsuccess = () => {\n const db = request.result;\n const transaction = db.transaction(['databases'], 'readwrite');\n const store = transaction.objectStore('databases');\n const putRequest = store.put(data, dbName);\n putRequest.onsuccess = () => {\n db.close();\n resolve();\n };\n putRequest.onerror = () => {\n db.close();\n reject(putRequest.error);\n };\n };\n });\n }\n /**\n * Load database from IndexedDB\n */\n async loadFromIndexedDB(dbName) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open('CapacitorNativeSQL', 1);\n request.onerror = () => reject(request.error);\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains('databases')) {\n db.createObjectStore('databases');\n }\n };\n request.onsuccess = () => {\n const db = request.result;\n const transaction = db.transaction(['databases'], 'readonly');\n const store = transaction.objectStore('databases');\n const getRequest = store.get(dbName);\n getRequest.onsuccess = () => {\n db.close();\n resolve(getRequest.result || null);\n };\n getRequest.onerror = () => {\n db.close();\n reject(getRequest.error);\n };\n };\n });\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n}\n"],"names":["IsolationLevel","registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/plugin.js","esm/native-sql-connection.js","esm/web-sql-connection.js","esm/fast-sql.js","esm/key-value.js","esm/web.js"],"sourcesContent":["/**\n * Transaction isolation levels\n */\nexport var IsolationLevel;\n(function (IsolationLevel) {\n IsolationLevel[\"ReadUncommitted\"] = \"READ UNCOMMITTED\";\n IsolationLevel[\"ReadCommitted\"] = \"READ COMMITTED\";\n IsolationLevel[\"RepeatableRead\"] = \"REPEATABLE READ\";\n IsolationLevel[\"Serializable\"] = \"SERIALIZABLE\";\n})(IsolationLevel || (IsolationLevel = {}));\n","import { registerPlugin } from '@capacitor/core';\nexport const CapgoCapacitorFastSql = registerPlugin('CapgoCapacitorFastSql', {\n web: () => import('./web').then((m) => new m.CapgoCapacitorFastSqlWeb()),\n});\n","import { IsolationLevel } from './definitions';\n/**\n * SQL Connection class that uses HTTP protocol for efficient communication\n * with native SQLite databases, bypassing Capacitor's standard bridge.\n *\n * Inspired by capacitor-blob-writer's approach to avoid serialization overhead.\n */\nexport class NativeSQLConnection {\n constructor(database, port, token) {\n this.inTransaction = false;\n this.database = database;\n this.port = port;\n this.token = token;\n this.baseUrl = `http://localhost:${port}`;\n }\n /**\n * Get the database name\n */\n getDatabaseName() {\n return this.database;\n }\n /**\n * Execute a SQL query via HTTP protocol for optimal performance\n *\n * @param statement - SQL statement to execute\n * @param params - Parameters to bind to the statement\n * @returns Query results\n */\n async execute(statement, params) {\n const response = await fetch(`${this.baseUrl}/execute`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n statement,\n params: params ? this.serializeParams(params) : [],\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`SQL execution failed: ${error}`);\n }\n const result = await response.json();\n return this.deserializeResult(result);\n }\n /**\n * Execute multiple SQL statements in a batch for better performance\n *\n * @param operations - Array of SQL operations to execute\n * @returns Array of results for each operation\n */\n async executeBatch(operations) {\n const response = await fetch(`${this.baseUrl}/batch`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n operations: operations.map((op) => ({\n statement: op.statement,\n params: op.params ? this.serializeParams(op.params) : [],\n })),\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`SQL batch execution failed: ${error}`);\n }\n const results = await response.json();\n return results.map((r) => this.deserializeResult(r));\n }\n /**\n * Begin a transaction\n *\n * @param isolationLevel - Optional isolation level\n */\n async beginTransaction(isolationLevel) {\n if (this.inTransaction) {\n throw new Error('Transaction already in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/begin`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: JSON.stringify({\n isolationLevel: isolationLevel || IsolationLevel.Serializable,\n }),\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to begin transaction: ${error}`);\n }\n this.inTransaction = true;\n }\n /**\n * Commit the current transaction\n */\n async commit() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/commit`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to commit transaction: ${error}`);\n }\n this.inTransaction = false;\n }\n /**\n * Rollback the current transaction\n */\n async rollback() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n const response = await fetch(`${this.baseUrl}/transaction/rollback`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n });\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Failed to rollback transaction: ${error}`);\n }\n this.inTransaction = false;\n }\n /**\n * Execute operations within a transaction automatically\n *\n * @param callback - Function containing operations to execute\n * @param isolationLevel - Optional isolation level\n */\n async transaction(callback, isolationLevel) {\n await this.beginTransaction(isolationLevel);\n try {\n const result = await callback(this);\n await this.commit();\n return result;\n }\n catch (error) {\n await this.rollback();\n throw error;\n }\n }\n /**\n * Query helper for SELECT statements\n *\n * @param statement - SELECT statement\n * @param params - Query parameters\n * @returns Array of rows\n */\n async query(statement, params) {\n const result = await this.execute(statement, params);\n return result.rows;\n }\n /**\n * Execute helper for INSERT/UPDATE/DELETE statements\n *\n * @param statement - SQL statement\n * @param params - Statement parameters\n * @returns Number of affected rows and insert ID if applicable\n */\n async run(statement, params) {\n const result = await this.execute(statement, params);\n return {\n rowsAffected: result.rowsAffected,\n insertId: result.insertId,\n };\n }\n /**\n * Serialize parameters for transmission\n * Binary data (Uint8Array) is converted to base64 for JSON transport\n */\n serializeParams(params) {\n return params.map((param) => {\n if (param instanceof Uint8Array) {\n return {\n _type: 'binary',\n _data: this.uint8ArrayToBase64(param),\n };\n }\n return param;\n });\n }\n /**\n * Deserialize result from server\n * Base64-encoded binary data is converted back to Uint8Array\n */\n deserializeResult(result) {\n return {\n rows: result.rows.map((row) => {\n const deserializedRow = {};\n for (const [key, value] of Object.entries(row)) {\n if (value && typeof value === 'object' && value._type === 'binary') {\n deserializedRow[key] = this.base64ToUint8Array(value._data);\n }\n else {\n deserializedRow[key] = value;\n }\n }\n return deserializedRow;\n }),\n rowsAffected: result.rowsAffected || 0,\n insertId: result.insertId,\n };\n }\n /**\n * Convert Uint8Array to base64 string\n */\n uint8ArrayToBase64(bytes) {\n let binary = '';\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n /**\n * Convert base64 string to Uint8Array\n */\n base64ToUint8Array(base64) {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n}\n","/**\n * Web implementation of SQLConnection that calls the Capacitor plugin directly,\n * avoiding HTTP network requests which are not available on the web platform.\n */\nexport class WebSQLConnection {\n constructor(database, plugin) {\n this.inTransaction = false;\n this.database = database;\n this.plugin = plugin;\n }\n /**\n * Get the database name\n */\n getDatabaseName() {\n return this.database;\n }\n /**\n * Execute a SQL query via the Capacitor plugin\n *\n * @param statement - SQL statement to execute\n * @param params - Parameters to bind to the statement\n * @returns Query results\n */\n async execute(statement, params) {\n return this.plugin.execute({ database: this.database, statement, params });\n }\n /**\n * Execute multiple SQL statements in a batch, sequentially\n *\n * @param operations - Array of SQL operations to execute\n * @returns Array of results for each operation\n */\n async executeBatch(operations) {\n const results = [];\n for (const op of operations) {\n results.push(await this.execute(op.statement, op.params));\n }\n return results;\n }\n /**\n * Begin a transaction\n *\n * @param isolationLevel - Optional isolation level\n */\n async beginTransaction(isolationLevel) {\n if (this.inTransaction) {\n throw new Error('Transaction already in progress');\n }\n await this.plugin.beginTransaction({ database: this.database, isolationLevel });\n this.inTransaction = true;\n }\n /**\n * Commit the current transaction\n */\n async commit() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n await this.plugin.commitTransaction({ database: this.database });\n this.inTransaction = false;\n }\n /**\n * Rollback the current transaction\n */\n async rollback() {\n if (!this.inTransaction) {\n throw new Error('No transaction in progress');\n }\n await this.plugin.rollbackTransaction({ database: this.database });\n this.inTransaction = false;\n }\n /**\n * Execute operations within a transaction automatically\n *\n * @param callback - Function containing operations to execute\n * @param isolationLevel - Optional isolation level\n */\n async transaction(callback, isolationLevel) {\n await this.beginTransaction(isolationLevel);\n try {\n const result = await callback(this);\n await this.commit();\n return result;\n }\n catch (error) {\n if (this.inTransaction) {\n try {\n await this.rollback();\n }\n catch (rollbackError) {\n throw new Error(`Transaction failed and rollback failed: ${String(rollbackError)}; original error: ${String(error)}`);\n }\n }\n throw error;\n }\n }\n /**\n * Query helper for SELECT statements\n *\n * @param statement - SELECT statement\n * @param params - Query parameters\n * @returns Array of rows\n */\n async query(statement, params) {\n const result = await this.execute(statement, params);\n return result.rows;\n }\n /**\n * Execute helper for INSERT/UPDATE/DELETE statements\n *\n * @param statement - SQL statement\n * @param params - Statement parameters\n * @returns Number of affected rows and insert ID if applicable\n */\n async run(statement, params) {\n const result = await this.execute(statement, params);\n return {\n rowsAffected: result.rowsAffected,\n insertId: result.insertId,\n };\n }\n}\n","import { Capacitor } from '@capacitor/core';\nimport { NativeSQLConnection } from './native-sql-connection';\nimport { CapgoCapacitorFastSql } from './plugin';\nimport { WebSQLConnection } from './web-sql-connection';\n/**\n * FastSQL - High-level API for managing SQL connections\n *\n * This class provides a convenient interface for opening/closing database connections\n * and managing multiple databases simultaneously.\n */\nexport class FastSQL {\n /**\n * Open a database connection\n *\n * @param options - Connection options\n * @returns SQLConnection instance for executing queries\n */\n static async connect(options) {\n // Check if already connected\n const existing = this.connections.get(options.database);\n if (existing) {\n return existing;\n }\n // Connect via native plugin\n const info = await CapgoCapacitorFastSql.connect(options);\n // Create connection instance appropriate for the current platform\n let connection;\n const platform = Capacitor.getPlatform();\n if (platform === 'android' || platform === 'ios') {\n connection = new NativeSQLConnection(info.database, info.port, info.token);\n }\n else {\n connection = new WebSQLConnection(info.database, CapgoCapacitorFastSql);\n }\n // Store connection\n this.connections.set(options.database, connection);\n return connection;\n }\n /**\n * Close a database connection\n *\n * @param database - Database name to close\n */\n static async disconnect(database) {\n const connection = this.connections.get(database);\n if (!connection) {\n throw new Error(`Database '${database}' is not connected`);\n }\n // Disconnect via native plugin\n await CapgoCapacitorFastSql.disconnect({ database });\n // Remove connection\n this.connections.delete(database);\n }\n /**\n * Get an existing connection\n *\n * @param database - Database name\n * @returns SQLConnection instance or null if not connected\n */\n static getConnection(database) {\n return this.connections.get(database) || null;\n }\n /**\n * Close all open connections\n */\n static async disconnectAll() {\n const databases = Array.from(this.connections.keys());\n await Promise.all(databases.map((db) => this.disconnect(db)));\n }\n /**\n * Get list of all open database connections\n *\n * @returns Array of database names\n */\n static getOpenDatabases() {\n return Array.from(this.connections.keys());\n }\n}\nFastSQL.connections = new Map();\n","import { FastSQL } from './fast-sql';\n/**\n * Key-value storage backed by the FastSQL database connection.\n *\n * This is a lightweight wrapper for mobile-focused secure storage use cases.\n */\nexport class KeyValueStore {\n constructor(connection, store) {\n this.initialized = false;\n this.ownsConnection = false;\n this.closed = false;\n this.connection = connection;\n this.store = store;\n }\n /**\n * Open (or create) a key-value store for the given database.\n */\n static async open(options) {\n var _a;\n const connection = await FastSQL.connect(options);\n const store = (_a = options.store) !== null && _a !== void 0 ? _a : 'default';\n const kv = new KeyValueStore(connection, store);\n kv.ownsConnection = true;\n await kv.ensureSchema();\n return kv;\n }\n /**\n * Create a key-value store from an existing SQLConnection.\n * Note: The caller retains ownership and is responsible for closing the connection.\n */\n static async fromConnection(connection, store = 'default') {\n const kv = new KeyValueStore(connection, store);\n await kv.ensureSchema();\n return kv;\n }\n /**\n * Close the key-value store and release resources.\n * Only disconnects the database if this store owns the connection (created via open()).\n */\n async close() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n if (this.ownsConnection) {\n try {\n await FastSQL.disconnect(this.connection.getDatabaseName());\n }\n catch (_a) {\n // Ignore disconnect errors during close.\n }\n }\n this.initialized = false;\n }\n /**\n * Store a value by key.\n */\n async set(key, value) {\n await this.ensureSchema();\n const encoded = this.encodeValue(value);\n await this.connection.run('INSERT OR REPLACE INTO __kv_store (s, k, t, v) VALUES (?, ?, ?, ?)', [\n this.store,\n key,\n encoded.type,\n encoded.value,\n ]);\n }\n /**\n * Retrieve a value by key. Returns null if the key is missing.\n */\n async get(key) {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT t, v FROM __kv_store WHERE s = ? AND k = ? LIMIT 1', [\n this.store,\n key,\n ]);\n if (!rows.length) {\n return null;\n }\n const row = rows[0];\n const type = row.t;\n const value = row.v;\n return this.decodeValue(type, value);\n }\n /**\n * Check if a key exists.\n */\n async has(key) {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT 1 as existsFlag FROM __kv_store WHERE s = ? AND k = ? LIMIT 1', [\n this.store,\n key,\n ]);\n return rows.length > 0;\n }\n /**\n * Remove a single key.\n */\n async remove(key) {\n await this.ensureSchema();\n await this.connection.run('DELETE FROM __kv_store WHERE s = ? AND k = ?', [this.store, key]);\n }\n /**\n * Clear all keys for the current store.\n */\n async clear() {\n await this.ensureSchema();\n await this.connection.run('DELETE FROM __kv_store WHERE s = ?', [this.store]);\n }\n /**\n * List all keys for the current store.\n */\n async keys() {\n await this.ensureSchema();\n const rows = await this.connection.query('SELECT k FROM __kv_store WHERE s = ? ORDER BY k', [this.store]);\n return rows.map((row) => String(row.k));\n }\n async ensureSchema() {\n if (this.initialized) {\n return;\n }\n await this.connection.run('CREATE TABLE IF NOT EXISTS __kv_store (s TEXT NOT NULL, k TEXT NOT NULL, t TEXT NOT NULL, v BLOB, PRIMARY KEY (s, k))');\n await this.connection.run('CREATE INDEX IF NOT EXISTS __kv_store_s_idx ON __kv_store (s)');\n this.initialized = true;\n }\n encodeValue(value) {\n if (value === null || value === undefined) {\n return { type: 'null', value: null };\n }\n if (value instanceof Uint8Array) {\n return { type: 'binary', value };\n }\n if (typeof value === 'string') {\n return { type: 'string', value };\n }\n if (typeof value === 'number') {\n return { type: 'number', value };\n }\n if (typeof value === 'boolean') {\n return { type: 'boolean', value: value ? 1 : 0 };\n }\n return { type: 'json', value: JSON.stringify(value) };\n }\n decodeValue(type, value) {\n switch (type) {\n case 'null':\n return null;\n case 'binary':\n return value instanceof Uint8Array ? value : null;\n case 'string':\n return value != null ? String(value) : '';\n case 'number':\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n case 'boolean':\n if (typeof value === 'number') {\n return value !== 0;\n }\n if (typeof value === 'string') {\n return value === '1' || value.toLowerCase() === 'true';\n }\n return Boolean(value);\n case 'json':\n if (typeof value === 'string') {\n try {\n return JSON.parse(value);\n }\n catch (_a) {\n return null;\n }\n }\n return null;\n default:\n return value;\n }\n }\n}\n","import { WebPlugin } from '@capacitor/core';\nconst DEFAULT_SQLJS_URL = 'https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.js';\nconst DEFAULT_WASM_URL = 'https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.8.0/sql-wasm.wasm';\n/**\n * Web implementation using sql.js (SQLite compiled to WebAssembly)\n *\n * This provides a compatible API on the web platform, storing databases\n * in IndexedDB for persistence.\n */\nexport class CapgoCapacitorFastSqlWeb extends WebPlugin {\n constructor() {\n super();\n this.databases = new Map();\n this.sqlPromise = null;\n this.nextPort = 9000;\n this.webConfig = {};\n }\n /**\n * Configure web-specific options (no-op on native platforms).\n * Must be called before connect() when using locally bundled sql.js files.\n */\n async configureWeb(config) {\n this.webConfig = config;\n // Reset any in-progress load so the next connect() uses the new config\n this.sqlPromise = null;\n }\n /**\n * Load sql.js library (lazy – called on first connect()).\n * Returns the cached promise so callers can await it directly.\n */\n loadSqlJs() {\n var _a, _b;\n if (!this.sqlPromise) {\n const jsUrl = (_a = this.webConfig.sqlJsUrl) !== null && _a !== void 0 ? _a : DEFAULT_SQLJS_URL;\n const wasmUrl = (_b = this.webConfig.wasmUrl) !== null && _b !== void 0 ? _b : DEFAULT_WASM_URL;\n this.sqlPromise = new Promise((resolve, reject) => {\n try {\n // Load sql.js from the configured URL (CDN or local bundle)\n const script = document.createElement('script');\n script.src = jsUrl;\n script.onload = async () => {\n const initSqlJs = window.initSqlJs;\n const SQL = await initSqlJs({\n locateFile: (file) => (file.endsWith('.wasm') ? wasmUrl : file),\n });\n resolve(SQL);\n };\n script.onerror = reject;\n document.head.appendChild(script);\n }\n catch (error) {\n reject(error);\n }\n });\n }\n return this.sqlPromise;\n }\n async connect(options) {\n const SQL = await this.loadSqlJs();\n // Check if database already exists in IndexedDB\n const savedData = await this.loadFromIndexedDB(options.database);\n let db;\n if (savedData) {\n db = new SQL.Database(savedData);\n }\n else {\n db = new SQL.Database();\n }\n const token = this.generateToken();\n const port = this.nextPort++;\n this.databases.set(options.database, { db, token, port });\n return {\n port,\n token,\n database: options.database,\n };\n }\n async disconnect(options) {\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n // Save to IndexedDB before closing\n const data = dbInfo.db.export();\n await this.saveToIndexedDB(options.database, data);\n dbInfo.db.close();\n this.databases.delete(options.database);\n }\n async getServerInfo(options) {\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n return {\n port: dbInfo.port,\n token: dbInfo.token,\n };\n }\n async execute(options) {\n const dbInfo = this.databases.get(options.database);\n if (!dbInfo) {\n throw new Error(`Database '${options.database}' is not connected`);\n }\n try {\n const stmt = dbInfo.db.prepare(options.statement);\n if (options.params) {\n stmt.bind(options.params);\n }\n const rows = [];\n while (stmt.step()) {\n const row = stmt.getAsObject();\n rows.push(row);\n }\n stmt.free();\n // Get changes and last insert ID\n const changes = dbInfo.db.getRowsModified();\n const insertId = this.getLastInsertId(dbInfo.db);\n return {\n rows,\n rowsAffected: changes,\n insertId: insertId > 0 ? insertId : undefined,\n };\n }\n catch (error) {\n throw new Error(`SQL execution failed: ${error.message}`);\n }\n }\n async beginTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'BEGIN TRANSACTION',\n });\n }\n async commitTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'COMMIT',\n });\n }\n async rollbackTransaction(options) {\n await this.execute({\n database: options.database,\n statement: 'ROLLBACK',\n });\n }\n /**\n * Generate a random authentication token\n */\n generateToken() {\n return Array.from(crypto.getRandomValues(new Uint8Array(32)))\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n }\n /**\n * Get last insert row ID\n */\n getLastInsertId(db) {\n try {\n const result = db.exec('SELECT last_insert_rowid()');\n if (result.length > 0 && result[0].values.length > 0) {\n return result[0].values[0][0];\n }\n }\n catch (_a) {\n // Ignore error\n }\n return -1;\n }\n /**\n * Save database to IndexedDB\n */\n async saveToIndexedDB(dbName, data) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open('CapacitorNativeSQL', 1);\n request.onerror = () => reject(request.error);\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains('databases')) {\n db.createObjectStore('databases');\n }\n };\n request.onsuccess = () => {\n const db = request.result;\n const transaction = db.transaction(['databases'], 'readwrite');\n const store = transaction.objectStore('databases');\n const putRequest = store.put(data, dbName);\n putRequest.onsuccess = () => {\n db.close();\n resolve();\n };\n putRequest.onerror = () => {\n db.close();\n reject(putRequest.error);\n };\n };\n });\n }\n /**\n * Load database from IndexedDB\n */\n async loadFromIndexedDB(dbName) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open('CapacitorNativeSQL', 1);\n request.onerror = () => reject(request.error);\n request.onupgradeneeded = (event) => {\n const db = event.target.result;\n if (!db.objectStoreNames.contains('databases')) {\n db.createObjectStore('databases');\n }\n };\n request.onsuccess = () => {\n const db = request.result;\n const transaction = db.transaction(['databases'], 'readonly');\n const store = transaction.objectStore('databases');\n const getRequest = store.get(dbName);\n getRequest.onsuccess = () => {\n db.close();\n resolve(getRequest.result || null);\n };\n getRequest.onerror = () => {\n db.close();\n reject(getRequest.error);\n };\n };\n });\n }\n async getPluginVersion() {\n return { version: 'web' };\n }\n}\n"],"names":["IsolationLevel","registerPlugin","Capacitor","WebPlugin"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import SQLite3
|
|
|
10
10
|
*/
|
|
11
11
|
@objc(CapgoCapacitorFastSqlPlugin)
|
|
12
12
|
public class CapgoCapacitorFastSqlPlugin: CAPPlugin, CAPBridgedPlugin {
|
|
13
|
-
private let pluginVersion: String = "8.0.
|
|
13
|
+
private let pluginVersion: String = "8.0.25"
|
|
14
14
|
public let identifier = "CapgoCapacitorFastSqlPlugin"
|
|
15
15
|
public let jsName = "CapgoCapacitorFastSql"
|
|
16
16
|
public let pluginMethods: [CAPPluginMethod] = [
|
|
@@ -21,7 +21,8 @@ public class CapgoCapacitorFastSqlPlugin: CAPPlugin, CAPBridgedPlugin {
|
|
|
21
21
|
CAPPluginMethod(name: "beginTransaction", returnType: CAPPluginReturnPromise),
|
|
22
22
|
CAPPluginMethod(name: "commitTransaction", returnType: CAPPluginReturnPromise),
|
|
23
23
|
CAPPluginMethod(name: "rollbackTransaction", returnType: CAPPluginReturnPromise),
|
|
24
|
-
CAPPluginMethod(name: "getPluginVersion", returnType: CAPPluginReturnPromise)
|
|
24
|
+
CAPPluginMethod(name: "getPluginVersion", returnType: CAPPluginReturnPromise),
|
|
25
|
+
CAPPluginMethod(name: "configureWeb", returnType: CAPPluginReturnPromise)
|
|
25
26
|
]
|
|
26
27
|
|
|
27
28
|
private var databases: [String: SQLDatabase] = [:]
|
|
@@ -215,6 +216,11 @@ public class CapgoCapacitorFastSqlPlugin: CAPPlugin, CAPBridgedPlugin {
|
|
|
215
216
|
])
|
|
216
217
|
}
|
|
217
218
|
|
|
219
|
+
@objc func configureWeb(_ call: CAPPluginCall) {
|
|
220
|
+
// No-op on iOS — web configuration is only relevant on the web platform.
|
|
221
|
+
call.resolve()
|
|
222
|
+
}
|
|
223
|
+
|
|
218
224
|
private func getDatabasePath(_ database: String) throws -> String {
|
|
219
225
|
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
|
|
220
226
|
guard let documentsDirectory = paths.first else {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capgo/capacitor-fast-sql",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.25",
|
|
4
4
|
"description": "High-performance native SQLite plugin with custom protocol for efficient sync operations and IndexedDB replacement",
|
|
5
5
|
"main": "dist/plugin.cjs.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|