@capgo/capacitor-fast-sql 8.2.18 → 8.3.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 (32) hide show
  1. package/Package.swift +2 -1
  2. package/README.md +22 -14
  3. package/android/build.gradle +3 -0
  4. package/android/src/main/java/app/capgo/capacitor/fastsql/BinaryFrame.java +152 -0
  5. package/android/src/main/java/app/capgo/capacitor/fastsql/CapgoCapacitorFastSqlPlugin.java +5 -1
  6. package/android/src/main/java/app/capgo/capacitor/fastsql/DatabaseConnection.java +2 -0
  7. package/android/src/main/java/app/capgo/capacitor/fastsql/EncryptedSQLDatabase.java +13 -2
  8. package/android/src/main/java/app/capgo/capacitor/fastsql/SQLDatabase.java +13 -2
  9. package/android/src/main/java/app/capgo/capacitor/fastsql/SQLHTTPServer.java +114 -57
  10. package/dist/esm/binary-frame.d.ts +6 -0
  11. package/dist/esm/binary-frame.d.ts.map +1 -0
  12. package/dist/esm/binary-frame.js +100 -0
  13. package/dist/esm/definitions.d.ts +17 -0
  14. package/dist/esm/definitions.d.ts.map +1 -1
  15. package/dist/esm/fast-sql.d.ts.map +1 -1
  16. package/dist/esm/fast-sql.js +13 -3
  17. package/dist/esm/native-sql-connection.d.ts +18 -7
  18. package/dist/esm/native-sql-connection.d.ts.map +1 -1
  19. package/dist/esm/native-sql-connection.js +145 -59
  20. package/dist/esm/web.d.ts.map +1 -1
  21. package/dist/esm/web.js +2 -0
  22. package/dist/plugin.cjs.js +260 -62
  23. package/dist/plugin.cjs.js.map +1 -1
  24. package/dist/plugin.js +260 -62
  25. package/dist/plugin.js.map +1 -1
  26. package/ios/Sources/CapgoCapacitorFastSqlPlugin/BinaryFrame.swift +95 -0
  27. package/ios/Sources/CapgoCapacitorFastSqlPlugin/CapgoCapacitorFastSqlPlugin.swift +7 -3
  28. package/ios/Sources/CapgoCapacitorFastSqlPlugin/SQLDatabase.swift +20 -3
  29. package/ios/Sources/CapgoCapacitorFastSqlPlugin/SQLHTTPServer.swift +59 -76
  30. package/ios/Tests/CapgoCapacitorFastSqlPluginTests/BinaryFrameTests.swift +65 -0
  31. package/ios/Tests/CapgoCapacitorFastSqlPluginTests/Fixtures/binary-v1.bin +0 -0
  32. package/package.json +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/plugin.js","esm/transaction-isolation.js","esm/native-sql-connection.js","esm/web-sql-connection.js","esm/fast-sql.js","esm/key-value.js","esm/vector-store.js","esm/web.js"],"sourcesContent":["/**\n * Transaction isolation levels. Only Serializable is supported by the current\n * SQLite backends. Other values are retained for source compatibility but reject\n * before starting a transaction; they are not silently mapped to another level.\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';\nexport function assertSupportedIsolation(level) {\n if (level !== undefined && level !== IsolationLevel.Serializable) {\n throw new Error('Only SERIALIZABLE transaction isolation is supported');\n }\n}\n","import { IsolationLevel } from './definitions';\nimport { assertSupportedIsolation } from './transaction-isolation';\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://127.0.0.1:${port}`;\n }\n browserFetch(input, init) {\n const savedFetch = Reflect.get(globalThis, 'CapacitorWebFetch');\n const browserFetch = typeof savedFetch === 'function' ? savedFetch : globalThis.fetch;\n return browserFetch.call(globalThis, input, init);\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 this.browserFetch(`${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 this.browserFetch(`${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 assertSupportedIsolation(isolationLevel);\n if (this.inTransaction) {\n throw new Error('Transaction already in progress');\n }\n const response = await this.browserFetch(`${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 this.browserFetch(`${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 this.browserFetch(`${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 { assertSupportedIsolation } from './transaction-isolation';\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 assertSupportedIsolation(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 const wrappedError = new Error(`Transaction failed and rollback failed: ${String(rollbackError)}; original error: ${String(error)}`);\n wrappedError.cause = rollbackError;\n throw wrappedError;\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 var _a;\n const saved = this.openOptions.get(options.database);\n if (saved && !this.optionsMatch(saved, options)) {\n throw new Error(`Database '${options.database}' is already opening or open with different options`);\n }\n const existing = (_a = this.connections.get(options.database)) !== null && _a !== void 0 ? _a : this.opening.get(options.database);\n if (existing) {\n this.sharedConnections.add(options.database);\n return existing;\n }\n const snapshot = Object.assign({}, options);\n this.openOptions.set(options.database, snapshot);\n const pending = this.open(snapshot);\n this.opening.set(options.database, pending);\n try {\n return await pending;\n }\n catch (error) {\n this.openOptions.delete(options.database);\n this.sharedConnections.delete(options.database);\n throw error;\n }\n finally {\n this.opening.delete(options.database);\n }\n }\n static optionsMatch(left, right) {\n return (Boolean(left.encrypted) === Boolean(right.encrypted) &&\n left.encryptionKey === right.encryptionKey &&\n Boolean(left.readOnly) === Boolean(right.readOnly) &&\n Boolean(left.walMode) === Boolean(right.walMode) &&\n Boolean(left.performancePresets) === Boolean(right.performancePresets));\n }\n static async open(options) {\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 var _a;\n await this.opening.get(database);\n const connection = this.connections.get(database);\n if (!connection) {\n throw new Error(`Database '${database}' is not connected`);\n }\n if (((_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0) > 0) {\n this.pendingDisconnects.add(database);\n return;\n }\n // Disconnect via native plugin\n await CapgoCapacitorFastSql.disconnect({ database });\n // Remove connection\n this.connections.delete(database);\n this.openOptions.delete(database);\n this.sharedConnections.delete(database);\n this.connectionRetainers.delete(database);\n this.pendingDisconnects.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 * Check whether a connection has been handed out more than once.\n */\n static isConnectionShared(database) {\n return this.sharedConnections.has(database);\n }\n /**\n * Temporarily retain a connection for helpers that share cached connections.\n */\n static retainConnection(database) {\n var _a;\n if (!this.connections.has(database)) {\n throw new Error(`Database '${database}' is not connected`);\n }\n this.connectionRetainers.set(database, ((_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0) + 1);\n }\n /**\n * Release a retained connection. Returns true when a pending disconnect closed it.\n */\n static async releaseConnection(database) {\n var _a;\n const retainers = (_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0;\n if (retainers > 1) {\n this.connectionRetainers.set(database, retainers - 1);\n return false;\n }\n this.connectionRetainers.delete(database);\n if (this.pendingDisconnects.has(database)) {\n this.pendingDisconnects.delete(database);\n await this.disconnect(database);\n return true;\n }\n return false;\n }\n /**\n * Close all open connections\n */\n static async disconnectAll() {\n const databases = Array.from(new Set([...this.connections.keys(), ...this.opening.keys()]));\n await Promise.all(databases.map((db) => {\n this.connectionRetainers.delete(db);\n this.pendingDisconnects.delete(db);\n return this.disconnect(db);\n }));\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.opening = new Map();\nFastSQL.openOptions = new Map();\nFastSQL.connections = new Map();\nFastSQL.sharedConnections = new Set();\nFastSQL.connectionRetainers = new Map();\nFastSQL.pendingDisconnects = new Set();\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 { FastSQL } from './fast-sql';\nconst DEFAULT_STORE = 'default';\nconst VECTOR_TABLE = '__fast_sql_vector_store';\nconst VECTOR_META_TABLE = '__fast_sql_vector_store_meta';\n/**\n * SQLite-backed VectorStore for local RAG usage.\n *\n * The helper is optional and dependency-free: pass your own embeddings provider,\n * or use precomputed embeddings with `embeddingDimension`. Multiple stores can\n * share one database by choosing different `store` names.\n */\nexport class FastSQLVectorStore {\n constructor(connection, options = {}) {\n var _a;\n this.initialized = false;\n this.ownsConnection = false;\n this.shouldDisconnectConnection = false;\n this.closed = false;\n this.connection = connection;\n this.store = (_a = options.store) !== null && _a !== void 0 ? _a : DEFAULT_STORE;\n this.embeddings = options.embeddings;\n this.configuredEmbeddingDim = options.embeddingDimension;\n this.embeddingDim = options.embeddingDimension;\n }\n static retainConnection(database) {\n var _a;\n this.connectionRefs.set(database, ((_a = this.connectionRefs.get(database)) !== null && _a !== void 0 ? _a : 0) + 1);\n }\n static releaseConnection(database) {\n var _a;\n const refs = (_a = this.connectionRefs.get(database)) !== null && _a !== void 0 ? _a : 0;\n if (refs > 1) {\n this.connectionRefs.set(database, refs - 1);\n return false;\n }\n this.connectionRefs.delete(database);\n this.ownedConnections.delete(database);\n return true;\n }\n /**\n * Open a vector store from database connection options.\n */\n static async open(options) {\n const existing = FastSQL.getConnection(options.database);\n const ownsExistingVectorConnection = existing && FastSQLVectorStore.connectionRefs.has(options.database);\n const connection = ownsExistingVectorConnection ? existing : await FastSQL.connect(options);\n const vectorStore = new FastSQLVectorStore(connection, options);\n vectorStore.ownsConnection = true;\n vectorStore.shouldDisconnectConnection = !existing || FastSQLVectorStore.ownedConnections.has(options.database);\n FastSQLVectorStore.retainConnection(connection.getDatabaseName());\n FastSQL.retainConnection(connection.getDatabaseName());\n if (vectorStore.shouldDisconnectConnection) {\n FastSQLVectorStore.ownedConnections.add(connection.getDatabaseName());\n }\n try {\n await vectorStore.load();\n return vectorStore;\n }\n catch (error) {\n await vectorStore.unload();\n throw error;\n }\n }\n /**\n * Create a vector store from an existing SQL connection.\n * The caller keeps ownership of the connection.\n */\n static async fromConnection(connection, options = {}) {\n const vectorStore = new FastSQLVectorStore(connection, options);\n await vectorStore.load();\n return vectorStore;\n }\n getStoreName() {\n return this.store;\n }\n getDatabaseName() {\n return this.connection.getDatabaseName();\n }\n async load() {\n var _a, _b;\n this.assertOpen();\n if (this.initialized) {\n return this;\n }\n await ((_b = (_a = this.embeddings) === null || _a === void 0 ? void 0 : _a.load) === null || _b === void 0 ? void 0 : _b.call(_a));\n await this.ensureSchema();\n await this.ensureStoreDimension();\n this.initialized = true;\n return this;\n }\n async unload() {\n var _a, _b;\n if (this.closed) {\n return;\n }\n await ((_b = (_a = this.embeddings) === null || _a === void 0 ? void 0 : _a.unload) === null || _b === void 0 ? void 0 : _b.call(_a));\n if (this.ownsConnection) {\n const database = this.connection.getDatabaseName();\n const releasedLastVectorStore = FastSQLVectorStore.releaseConnection(database);\n const closedFromPendingDisconnect = await FastSQL.releaseConnection(database);\n if (releasedLastVectorStore &&\n this.shouldDisconnectConnection &&\n !FastSQL.isConnectionShared(database) &&\n !closedFromPendingDisconnect) {\n await FastSQL.disconnect(database);\n }\n }\n this.initialized = false;\n this.closed = true;\n }\n async close() {\n await this.unload();\n }\n async add(params) {\n await this.ensureReady();\n const { id = this.createId(), document, embedding, metadata } = params;\n if (document === undefined && embedding === undefined) {\n throw new Error('document and embedding cannot both be undefined');\n }\n const existing = await this.connection.query(`SELECT 1 FROM ${VECTOR_TABLE} WHERE store = ? AND id = ? LIMIT 1`, [\n this.store,\n id,\n ]);\n if (existing.length > 0) {\n throw new Error(`id already exists: ${id}`);\n }\n const resolvedEmbedding = embedding !== null && embedding !== void 0 ? embedding : (await this.embedDocument(document));\n await this.ensureEmbeddingDimension(resolvedEmbedding);\n const now = Date.now();\n await this.connection.run(`INSERT INTO ${VECTOR_TABLE} (store, id, document, embedding, metadata, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?)`, [\n this.store,\n id,\n document !== null && document !== void 0 ? document : '',\n this.encodeEmbedding(resolvedEmbedding),\n this.encodeMetadata(metadata),\n now,\n now,\n ]);\n return id;\n }\n async update(params) {\n var _a, _b;\n await this.ensureReady();\n const rows = await this.connection.query(`SELECT id, document, embedding, metadata FROM ${VECTOR_TABLE} WHERE store = ? AND id = ? LIMIT 1`, [this.store, params.id]);\n if (rows.length === 0) {\n throw new Error(`id not found: ${params.id}`);\n }\n const current = this.rowToGetResult(rows[0]);\n const document = (_a = params.document) !== null && _a !== void 0 ? _a : current.document;\n const embedding = (_b = params.embedding) !== null && _b !== void 0 ? _b : (params.document !== undefined ? await this.embedDocument(params.document) : current.embedding);\n const metadata = params.metadata === undefined ? current.metadata : params.metadata;\n await this.ensureEmbeddingDimension(embedding);\n await this.connection.run(`UPDATE ${VECTOR_TABLE}\n SET document = ?, embedding = ?, metadata = ?, updated_at = ?\n WHERE store = ? AND id = ?`, [document, this.encodeEmbedding(embedding), this.encodeMetadata(metadata), Date.now(), this.store, params.id]);\n }\n async delete(params) {\n await this.ensureReady();\n const rows = await this.getStoreRows();\n const ids = rows\n .map((row) => this.rowToGetResult(row))\n .filter(params.predicate)\n .map((row) => row.id);\n for (let offset = 0; offset < ids.length; offset += 100) {\n await this.connection.executeBatch(ids.slice(offset, offset + 100).map((id) => ({\n statement: `DELETE FROM ${VECTOR_TABLE} WHERE store = ? AND id = ?`,\n params: [this.store, id],\n })));\n }\n }\n async query(params) {\n await this.ensureReady();\n const { queryText, queryEmbedding, nResults, predicate } = params;\n if (queryText === undefined && queryEmbedding === undefined) {\n throw new Error('queryText and queryEmbedding cannot both be undefined');\n }\n if (nResults !== undefined && nResults < 0) {\n throw new Error('nResults cannot be negative');\n }\n const searchEmbedding = queryEmbedding !== null && queryEmbedding !== void 0 ? queryEmbedding : (await this.embedDocument(queryText));\n await this.ensureEmbeddingDimension(searchEmbedding);\n const results = (await this.getStoreRows())\n .map((row) => {\n const item = this.rowToGetResult(row);\n return Object.assign(Object.assign({}, item), { similarity: this.cosineSimilarity(item.embedding, searchEmbedding) });\n })\n .filter(predicate !== null && predicate !== void 0 ? predicate : (() => true))\n .sort((a, b) => b.similarity - a.similarity);\n return nResults === undefined ? results : results.slice(0, nResults);\n }\n /**\n * Delete only this logical vector store. Other stores in the same database stay intact.\n */\n async deleteVectorStore() {\n await this.ensureReady();\n await this.connection.run(`DELETE FROM ${VECTOR_TABLE} WHERE store = ?`, [this.store]);\n await this.connection.run(`DELETE FROM ${VECTOR_META_TABLE} WHERE store = ?`, [this.store]);\n this.embeddingDim = this.configuredEmbeddingDim;\n if (this.embeddingDim !== undefined) {\n await this.saveEmbeddingDimension();\n }\n }\n async ensureReady() {\n this.assertOpen();\n if (!this.initialized) {\n await this.load();\n }\n }\n assertOpen() {\n if (this.closed) {\n throw new Error('Vector store is closed');\n }\n }\n async ensureSchema() {\n await this.connection.run(`CREATE TABLE IF NOT EXISTS ${VECTOR_TABLE} (\n store TEXT NOT NULL,\n id TEXT NOT NULL,\n document TEXT NOT NULL,\n embedding BLOB NOT NULL,\n metadata TEXT DEFAULT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL,\n PRIMARY KEY (store, id)\n )`);\n await this.connection.run(`CREATE INDEX IF NOT EXISTS ${VECTOR_TABLE}_store_idx ON ${VECTOR_TABLE} (store)`);\n await this.connection.run(`CREATE TABLE IF NOT EXISTS ${VECTOR_META_TABLE} (\n store TEXT PRIMARY KEY,\n embedding_dim INTEGER NOT NULL\n )`);\n }\n async ensureStoreDimension() {\n const rows = await this.connection.query(`SELECT embedding_dim FROM ${VECTOR_META_TABLE} WHERE store = ? LIMIT 1`, [\n this.store,\n ]);\n const storedDim = this.parseStoredDimension(rows[0]);\n if (storedDim !== undefined && this.embeddingDim !== undefined && storedDim !== this.embeddingDim) {\n throw new Error(`embedding dimension ${this.embeddingDim} does not match existing store dimension ${storedDim}`);\n }\n if (this.embeddingDim === undefined) {\n this.embeddingDim = storedDim !== null && storedDim !== void 0 ? storedDim : (this.embeddings ? (await this.embedDocument('dummy')).length : undefined);\n }\n if (this.embeddingDim !== undefined) {\n await this.saveEmbeddingDimension();\n }\n }\n parseStoredDimension(row) {\n if (!row) {\n return undefined;\n }\n const value = row.embedding_dim;\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return undefined;\n }\n async saveEmbeddingDimension() {\n if (this.embeddingDim === undefined) {\n return;\n }\n await this.connection.run(`INSERT OR REPLACE INTO ${VECTOR_META_TABLE} (store, embedding_dim) VALUES (?, ?)`, [\n this.store,\n this.embeddingDim,\n ]);\n }\n async ensureEmbeddingDimension(embedding) {\n this.validateEmbedding(embedding);\n if (this.embeddingDim === undefined) {\n this.embeddingDim = embedding.length;\n await this.saveEmbeddingDimension();\n return;\n }\n if (embedding.length !== this.embeddingDim) {\n throw new Error(`embedding dimension ${embedding.length} does not match vector store dimension ${this.embeddingDim}`);\n }\n }\n async embedDocument(document) {\n if (document === undefined) {\n throw new Error('document is required when embedding is not provided');\n }\n if (!this.embeddings) {\n throw new Error('embeddings provider is required for text operations');\n }\n return this.embeddings.embed(document);\n }\n validateEmbedding(embedding) {\n if (!Array.isArray(embedding) || embedding.length === 0) {\n throw new Error('embedding must be a non-empty number array');\n }\n for (const value of embedding) {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n throw new Error('embedding values must be finite numbers');\n }\n }\n }\n async getStoreRows() {\n return this.connection.query(`SELECT id, document, embedding, metadata FROM ${VECTOR_TABLE} WHERE store = ? ORDER BY updated_at DESC`, [this.store]);\n }\n rowToGetResult(row) {\n const result = {\n id: String(row.id),\n document: row.document === null || row.document === undefined ? '' : String(row.document),\n embedding: this.decodeEmbedding(row.embedding),\n };\n const metadata = this.decodeMetadata(row.metadata);\n if (metadata !== undefined) {\n result.metadata = metadata;\n }\n return result;\n }\n encodeEmbedding(embedding) {\n const bytes = new Uint8Array(embedding.length * Float32Array.BYTES_PER_ELEMENT);\n const view = new DataView(bytes.buffer);\n embedding.forEach((value, index) => view.setFloat32(index * Float32Array.BYTES_PER_ELEMENT, value, true));\n return bytes;\n }\n decodeEmbedding(value) {\n if (!(value instanceof Uint8Array)) {\n throw new Error('stored embedding is not binary data');\n }\n if (value.byteLength % Float32Array.BYTES_PER_ELEMENT !== 0) {\n throw new Error('stored embedding has invalid byte length');\n }\n const view = new DataView(value.buffer, value.byteOffset, value.byteLength);\n const embedding = [];\n for (let offset = 0; offset < value.byteLength; offset += Float32Array.BYTES_PER_ELEMENT) {\n embedding.push(view.getFloat32(offset, true));\n }\n return embedding;\n }\n encodeMetadata(metadata) {\n return metadata ? JSON.stringify(metadata) : null;\n }\n decodeMetadata(value) {\n if (typeof value !== 'string' || value.length === 0) {\n return undefined;\n }\n try {\n const parsed = JSON.parse(value);\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : undefined;\n }\n catch (_a) {\n return undefined;\n }\n }\n cosineSimilarity(a, b) {\n if (a.length !== b.length) {\n throw new Error(`embedding dimension ${b.length} does not match stored embedding dimension ${a.length}`);\n }\n let dot = 0;\n let normA = 0;\n let normB = 0;\n for (let i = 0; i < a.length; i++) {\n dot += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n if (normA === 0 || normB === 0) {\n return 0;\n }\n return dot / (Math.sqrt(normA) * Math.sqrt(normB));\n }\n createId() {\n const cryptoApi = globalThis.crypto;\n if (typeof (cryptoApi === null || cryptoApi === void 0 ? void 0 : cryptoApi.randomUUID) === 'function') {\n return cryptoApi.randomUUID();\n }\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const value = Math.floor(Math.random() * 16);\n const nibble = char === 'x' ? value : (value & 0x3) | 0x8;\n return nibble.toString(16);\n });\n }\n}\nFastSQLVectorStore.connectionRefs = new Map();\nFastSQLVectorStore.ownedConnections = new Set();\n","import { WebPlugin } from '@capacitor/core';\nimport { sqlite3Worker1Promiser } from '@sqlite.org/sqlite-wasm';\nimport { assertSupportedIsolation } from './transaction-isolation';\n/**\n * Web implementation using the official SQLite Wasm build with OPFS persistence.\n *\n * Databases are stored in the Origin Private File System when available (requires\n * Cross-Origin Isolation: COOP/COEP). No full-database copy is kept in RAM or\n * IndexedDB — SQLite reads/writes the OPFS file directly from a worker.\n */\nexport class CapgoCapacitorFastSqlWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.databases = new Map();\n this.promiserPromise = 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 overriding the default worker.\n */\n async configureWeb(config) {\n if (this.promiserPromise || this.databases.size > 0) {\n throw new Error('Configure web storage before opening the first database');\n }\n if (config.requirePersistence && config.useOpfs === false) {\n throw new Error('requirePersistence requires OPFS');\n }\n this.webConfig = Object.assign({}, config);\n this.promiserPromise = null;\n }\n getPromiser() {\n if (!this.promiserPromise) {\n const config = this.webConfig.worker !== undefined ? { worker: this.webConfig.worker } : undefined;\n this.promiserPromise = sqlite3Worker1Promiser.v2(config);\n }\n return this.promiserPromise;\n }\n dbPath(database) {\n if (!database || database === '.' || database === '..' || /[/\\\\\\0]/.test(database)) {\n throw new Error('Database must be a non-empty file name without path separators');\n }\n return `/capgo-fast-sql/${database}.sqlite3`;\n }\n async connect(options) {\n if (options.readOnly) {\n throw new Error('Read-only opens are not supported by the SQLite Wasm Worker transport');\n }\n if (this.databases.has(options.database)) {\n const existing = this.databases.get(options.database);\n return {\n port: existing.port,\n token: existing.token,\n database: options.database,\n persistent: existing.persistent,\n };\n }\n const path = this.dbPath(options.database);\n const promiser = await this.getPromiser();\n const useOpfs = this.webConfig.useOpfs !== false;\n let openResult;\n if (useOpfs) {\n try {\n openResult = await promiser('open', {\n filename: `file:/capgo-fast-sql/${encodeURIComponent(options.database)}.sqlite3?vfs=opfs`,\n });\n }\n catch (opfsError) {\n if (this.webConfig.requirePersistence)\n throw opfsError;\n console.warn('[CapgoCapacitorFastSql] OPFS unavailable; web database will not persist across reloads. ' +\n 'Serve with Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp.', opfsError);\n openResult = await promiser('open', { filename: path });\n }\n }\n else {\n openResult = await promiser('open', { filename: path });\n }\n const dbId = openResult.result.dbId;\n const persistent = Boolean(openResult.result.persistent);\n if (!dbId) {\n throw new Error('Failed to open SQLite Wasm database: missing dbId');\n }\n try {\n if (this.webConfig.requirePersistence && !persistent) {\n throw new Error('SQLite Worker did not confirm persistent storage');\n }\n await this.applyPerformanceConfig(promiser, dbId, options);\n }\n catch (error) {\n await promiser({ type: 'close', dbId, args: {} });\n throw error;\n }\n const token = this.generateToken();\n const port = this.nextPort++;\n this.databases.set(options.database, { dbId, token, port, persistent });\n return {\n port,\n token,\n database: options.database,\n persistent,\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 const promiser = await this.getPromiser();\n // OPFS-backed DBs persist automatically; no export/IndexedDB write needed.\n await promiser({ type: 'close', dbId: dbInfo.dbId, args: {} });\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 persistent: dbInfo.persistent,\n };\n }\n async execute(options) {\n var _a, _b, _c, _d;\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 promiser = await this.getPromiser();\n const rows = [];\n // countChanges / lastInsertRowId are supported by Worker1 at runtime but\n // omitted from the published Worker1ExecArgs typings.\n const result = await promiser({\n type: 'exec',\n dbId: dbInfo.dbId,\n args: {\n sql: options.statement,\n bind: options.params,\n rowMode: 'object',\n countChanges: true,\n lastInsertRowId: true,\n callback: (msg) => {\n if (msg.rowNumber != null && msg.row && typeof msg.row === 'object' && !Array.isArray(msg.row)) {\n rows.push(msg.row);\n }\n },\n },\n });\n const execResult = result.result;\n const rowsAffected = Number((_a = execResult.changeCount) !== null && _a !== void 0 ? _a : 0);\n const rawInsertId = execResult.lastInsertRowId;\n const insertId = rawInsertId !== undefined && rawInsertId !== null ? Number(rawInsertId) : undefined;\n return {\n rows,\n rowsAffected,\n insertId: insertId !== undefined && insertId > 0 ? insertId : undefined,\n };\n }\n catch (error) {\n const message = (_d = (_c = (_b = error === null || error === void 0 ? void 0 : error.result) === null || _b === void 0 ? void 0 : _b.message) !== null && _c !== void 0 ? _c : error === null || error === void 0 ? void 0 : error.message) !== null && _d !== void 0 ? _d : String(error);\n const wrappedError = new Error(`SQL execution failed: ${message}`);\n wrappedError.cause = error;\n throw wrappedError;\n }\n }\n async beginTransaction(options) {\n assertSupportedIsolation(options.isolationLevel);\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 async applyPerformanceConfig(promiser, dbId, options) {\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA foreign_keys = ON' } });\n if (options.walMode) {\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA journal_mode = WAL' } });\n }\n if (options.performancePresets) {\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA synchronous = NORMAL' } });\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA busy_timeout = 5000' } });\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA cache_size = -2000' } });\n }\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 async getPluginVersion() {\n return { version: 'web' };\n }\n}\n"],"names":["IsolationLevel","registerPlugin","Capacitor","WebPlugin","sqlite3Worker1Promiser"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/plugin.js","esm/binary-frame.js","esm/transaction-isolation.js","esm/native-sql-connection.js","esm/web-sql-connection.js","esm/fast-sql.js","esm/key-value.js","esm/vector-store.js","esm/web.js"],"sourcesContent":["/**\n * Transaction isolation levels. Only Serializable is supported by the current\n * SQLite backends. Other values are retained for source compatibility but reject\n * before starting a transaction; they are not silently mapped to another level.\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","/** Version 1 frame: FSQ1, uint32-LE metadata length, uint32-LE attachment length. */\nexport const BINARY_CONTENT_TYPE = 'application/vnd.capgo.fast-sql.v1+binary';\nexport const MAX_FRAME_BYTES = 64 * 1024 * 1024;\nconst MAX_METADATA_BYTES = 1024 * 1024;\nconst MAX_ATTACHMENTS = 4096;\nconst HEADER_BYTES = 12;\nconst magic = [70, 83, 81, 49];\nexport function encodeBinaryFrame(value) {\n const attachments = [];\n let size = 0;\n let nodes = 0;\n const encode = (item, depth) => {\n if (++nodes > 100000 || depth > 32)\n throw new Error('Binary metadata exceeds nesting or node limits');\n if (typeof item === 'number' && !Number.isFinite(item))\n throw new Error('Non-finite binary protocol number');\n if (item instanceof Uint8Array) {\n if (attachments.length >= MAX_ATTACHMENTS || size + item.byteLength > MAX_FRAME_BYTES - HEADER_BYTES)\n throw new Error('Binary attachments exceed protocol limits');\n const reference = { $blob: [size, item.byteLength] };\n attachments.push(item);\n size += item.byteLength;\n return reference;\n }\n if (Array.isArray(item))\n return item.map((value) => encode(value, depth + 1));\n if (item && typeof item === 'object') {\n if (Object.getPrototypeOf(item) !== Object.prototype && Object.getPrototypeOf(item) !== null)\n throw new Error('Unsupported binary metadata object');\n return Object.fromEntries(Object.entries(item).map(([key, value]) => [key, encode(value, depth + 1)]));\n }\n return item;\n };\n const json = JSON.stringify(encode(value, 0));\n if (json === undefined)\n throw new Error('Missing binary metadata');\n const metadata = new TextEncoder().encode(json);\n const length = HEADER_BYTES + metadata.byteLength + size;\n if (metadata.byteLength > MAX_METADATA_BYTES || length > MAX_FRAME_BYTES)\n throw new Error('Binary frame exceeds protocol limits');\n const frame = new Uint8Array(length);\n frame.set(magic);\n const view = new DataView(frame.buffer);\n view.setUint32(4, metadata.byteLength, true);\n view.setUint32(8, size, true);\n frame.set(metadata, HEADER_BYTES);\n let offset = HEADER_BYTES + metadata.byteLength;\n for (const attachment of attachments) {\n frame.set(attachment, offset);\n offset += attachment.byteLength;\n }\n return frame;\n}\nexport function decodeBinaryFrame(frame) {\n if (frame.length < HEADER_BYTES ||\n frame.length > MAX_FRAME_BYTES ||\n magic.some((byte, index) => frame[index] !== byte)) {\n throw new Error('Invalid binary frame version or length');\n }\n const view = new DataView(frame.buffer, frame.byteOffset, frame.byteLength);\n const metadataLength = view.getUint32(4, true);\n const payloadLength = view.getUint32(8, true);\n const payloadOffset = HEADER_BYTES + metadataLength;\n if (metadataLength === 0 || metadataLength > MAX_METADATA_BYTES || payloadOffset + payloadLength !== frame.length) {\n throw new Error('Invalid binary frame lengths');\n }\n const metadata = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(frame.subarray(HEADER_BYTES, payloadOffset)));\n let nodes = 0;\n let blobs = 0;\n let referencedBytes = 0;\n const decode = (value, depth) => {\n if (++nodes > 100000 || depth > 32)\n throw new Error('Binary metadata exceeds nesting or node limits');\n if (Array.isArray(value))\n return value.map((item) => decode(item, depth + 1));\n if (value === null || typeof value !== 'object')\n return value;\n if ('$blob' in value && Object.keys(value).length === 1) {\n const reference = value.$blob;\n if (!Array.isArray(reference) || reference.length !== 2)\n throw new Error('Invalid binary attachment reference');\n const [offset, length] = reference;\n if (typeof offset !== 'number' ||\n typeof length !== 'number' ||\n !Number.isSafeInteger(offset) ||\n !Number.isSafeInteger(length) ||\n offset < 0 ||\n length < 0 ||\n offset + length > payloadLength) {\n throw new Error('Binary attachment is outside its frame');\n }\n referencedBytes += length;\n if (++blobs > MAX_ATTACHMENTS || referencedBytes > MAX_FRAME_BYTES)\n throw new Error('Decoded attachments exceed protocol limits');\n return frame.slice(payloadOffset + offset, payloadOffset + offset + length);\n }\n return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, decode(item, depth + 1)]));\n };\n return decode(metadata, 0);\n}\n","import { IsolationLevel } from './definitions';\nexport function assertSupportedIsolation(level) {\n if (level !== undefined && level !== IsolationLevel.Serializable) {\n throw new Error('Only SERIALIZABLE transaction isolation is supported');\n }\n}\n","import { BINARY_CONTENT_TYPE, decodeBinaryFrame, encodeBinaryFrame, MAX_FRAME_BYTES } from './binary-frame';\nimport { IsolationLevel } from './definitions';\nimport { assertSupportedIsolation } from './transaction-isolation';\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 /** Cumulative data-request payload bytes and JS codec time; excludes HTTP headers/compression. */\n getTransportMetrics() {\n return Object.assign({}, this.metrics);\n }\n constructor(database, port, token, transport = 'http-json') {\n this.transport = transport;\n this.inTransaction = false;\n this.metrics = {\n dataRequests: 0,\n requestBytes: 0,\n responseBytes: 0,\n encodeMs: 0,\n decodeMs: 0,\n };\n this.database = database;\n this.port = port;\n this.token = token;\n this.baseUrl = `http://127.0.0.1:${port}`;\n }\n browserFetch(input, init) {\n const savedFetch = Reflect.get(globalThis, 'CapacitorWebFetch');\n const browserFetch = typeof savedFetch === 'function' ? savedFetch : globalThis.fetch;\n return browserFetch.call(globalThis, input, init);\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 return this.parseResult(await this.request('/execute', { statement, params: params !== null && params !== void 0 ? params : [] }));\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 result = await this.request('/batch', {\n operations: operations.map((operation) => { var _a; return ({ statement: operation.statement, params: (_a = operation.params) !== null && _a !== void 0 ? _a : [] }); }),\n });\n if (!Array.isArray(result))\n throw new Error('Invalid batch response');\n return result.map((item) => this.parseResult(item));\n }\n /** Authenticated transport round trip without SQLite, for diagnostic benchmarks. */\n async echo(value) {\n const result = this.parseResult(await this.request('/echo', { statement: '', params: [value] }));\n if (result.rows.length !== 1 || !('value' in result.rows[0]))\n throw new Error('Invalid echo response');\n return result.rows[0].value;\n }\n async request(path, payload) {\n var _a;\n const binary = this.transport === 'http-binary';\n const start = performance.now();\n const body = binary\n ? encodeBinaryFrame(payload)\n : new TextEncoder().encode(JSON.stringify('params' in payload\n ? Object.assign(Object.assign({}, payload), { params: this.serializeParams(payload.params) }) : {\n operations: payload.operations.map((operation) => (Object.assign(Object.assign({}, operation), { params: this.serializeParams(operation.params) }))),\n }));\n if (body.byteLength > MAX_FRAME_BYTES)\n throw new Error('Request exceeds 64 MiB');\n this.metrics.encodeMs += performance.now() - start;\n this.metrics.dataRequests++;\n this.metrics.requestBytes += body.byteLength;\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 600000);\n try {\n const response = await this.browserFetch(`${this.baseUrl}${path}`, {\n method: 'POST',\n headers: {\n 'Content-Type': binary ? BINARY_CONTENT_TYPE : 'application/json',\n Authorization: `Bearer ${this.token}`,\n 'X-Database': this.database,\n },\n body: body.buffer,\n signal: controller.signal,\n });\n if (!response.ok) {\n const errorBody = await this.readResponse(response);\n throw new Error(`SQL request failed (${response.status}): ${new TextDecoder().decode(errorBody).slice(0, 4096)}`);\n }\n if (binary && ((_a = response.headers.get('content-type')) === null || _a === void 0 ? void 0 : _a.split(';')[0].trim()) !== BINARY_CONTENT_TYPE)\n throw new Error('Server did not return binary HTTP v1');\n const bytes = await this.readResponse(response);\n this.metrics.responseBytes += bytes.byteLength;\n const decodeStart = performance.now();\n const result = binary ? decodeBinaryFrame(bytes) : JSON.parse(new TextDecoder().decode(bytes));\n this.metrics.decodeMs += performance.now() - decodeStart;\n return result;\n }\n finally {\n clearTimeout(timeout);\n }\n }\n async readResponse(response) {\n var _a;\n const declared = response.headers.get('content-length');\n if (declared !== null && Number(declared) > MAX_FRAME_BYTES) {\n await ((_a = response.body) === null || _a === void 0 ? void 0 : _a.cancel());\n throw new Error('Response exceeds 64 MiB');\n }\n if (!response.body)\n return new Uint8Array();\n const reader = response.body.getReader();\n const chunks = [];\n let length = 0;\n try {\n while (true) {\n const chunk = await reader.read();\n if (chunk.done)\n break;\n length += chunk.value.byteLength;\n if (length > MAX_FRAME_BYTES) {\n await reader.cancel();\n throw new Error('Response exceeds 64 MiB');\n }\n chunks.push(chunk.value);\n }\n }\n finally {\n reader.releaseLock();\n }\n const result = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n result.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return result;\n }\n parseResult(result) {\n const start = performance.now();\n if (!result ||\n typeof result !== 'object' ||\n !('rows' in result) ||\n !Array.isArray(result.rows) ||\n !('rowsAffected' in result) ||\n typeof result.rowsAffected !== 'number')\n throw new Error('Invalid SQL response');\n const rows = result.rows.map((row) => {\n if (!row || typeof row !== 'object' || Array.isArray(row))\n throw new Error('Invalid SQL row');\n const parsed = {};\n for (const [key, value] of Object.entries(row)) {\n let scalar;\n if (value === null ||\n typeof value === 'string' ||\n typeof value === 'boolean' ||\n value instanceof Uint8Array ||\n (typeof value === 'number' && Number.isFinite(value)))\n scalar = value;\n else if (value &&\n typeof value === 'object' &&\n '_type' in value &&\n value._type === 'binary' &&\n '_data' in value &&\n typeof value._data === 'string')\n scalar = this.base64ToUint8Array(value._data);\n else\n throw new Error('Invalid SQL value');\n Object.defineProperty(parsed, key, { value: scalar, enumerable: true, writable: true, configurable: true });\n }\n return parsed;\n });\n const insertId = 'insertId' in result && typeof result.insertId === 'number' ? result.insertId : undefined;\n this.metrics.decodeMs += performance.now() - start;\n return { rows, rowsAffected: result.rowsAffected, insertId };\n }\n /**\n * Begin a transaction\n *\n * @param isolationLevel - Optional isolation level\n */\n async beginTransaction(isolationLevel) {\n assertSupportedIsolation(isolationLevel);\n if (this.inTransaction) {\n throw new Error('Transaction already in progress');\n }\n const response = await this.browserFetch(`${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 this.browserFetch(`${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 this.browserFetch(`${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 * 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 { assertSupportedIsolation } from './transaction-isolation';\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 assertSupportedIsolation(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 const wrappedError = new Error(`Transaction failed and rollback failed: ${String(rollbackError)}; original error: ${String(error)}`);\n wrappedError.cause = rollbackError;\n throw wrappedError;\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 var _a;\n const saved = this.openOptions.get(options.database);\n if (saved && !this.optionsMatch(saved, options)) {\n throw new Error(`Database '${options.database}' is already opening or open with different options`);\n }\n const existing = (_a = this.connections.get(options.database)) !== null && _a !== void 0 ? _a : this.opening.get(options.database);\n if (existing) {\n this.sharedConnections.add(options.database);\n return existing;\n }\n const snapshot = Object.assign({}, options);\n this.openOptions.set(options.database, snapshot);\n const pending = this.open(snapshot);\n this.opening.set(options.database, pending);\n try {\n return await pending;\n }\n catch (error) {\n this.openOptions.delete(options.database);\n this.sharedConnections.delete(options.database);\n throw error;\n }\n finally {\n this.opening.delete(options.database);\n }\n }\n static optionsMatch(left, right) {\n var _a, _b;\n return (((_a = left.transport) !== null && _a !== void 0 ? _a : 'http-json') === ((_b = right.transport) !== null && _b !== void 0 ? _b : 'http-json') &&\n Boolean(left.encrypted) === Boolean(right.encrypted) &&\n left.encryptionKey === right.encryptionKey &&\n Boolean(left.readOnly) === Boolean(right.readOnly) &&\n Boolean(left.walMode) === Boolean(right.walMode) &&\n Boolean(left.performancePresets) === Boolean(right.performancePresets));\n }\n static async open(options) {\n const platform = Capacitor.getPlatform();\n if (options.transport === 'http-binary' && platform !== 'ios' && platform !== 'android') {\n throw new Error('Binary HTTP transport requires iOS or Android');\n }\n if (options.transport === 'http-binary') {\n const capabilities = await CapgoCapacitorFastSql.getPluginVersion();\n if (capabilities.binaryProtocolVersion !== 1)\n throw new Error('Native plugin does not support binary HTTP v1');\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 if (platform === 'android' || platform === 'ios') {\n connection = new NativeSQLConnection(info.database, info.port, info.token, options.transport);\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 var _a;\n await this.opening.get(database);\n const connection = this.connections.get(database);\n if (!connection) {\n throw new Error(`Database '${database}' is not connected`);\n }\n if (((_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0) > 0) {\n this.pendingDisconnects.add(database);\n return;\n }\n // Disconnect via native plugin\n await CapgoCapacitorFastSql.disconnect({ database });\n // Remove connection\n this.connections.delete(database);\n this.openOptions.delete(database);\n this.sharedConnections.delete(database);\n this.connectionRetainers.delete(database);\n this.pendingDisconnects.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 * Check whether a connection has been handed out more than once.\n */\n static isConnectionShared(database) {\n return this.sharedConnections.has(database);\n }\n /**\n * Temporarily retain a connection for helpers that share cached connections.\n */\n static retainConnection(database) {\n var _a;\n if (!this.connections.has(database)) {\n throw new Error(`Database '${database}' is not connected`);\n }\n this.connectionRetainers.set(database, ((_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0) + 1);\n }\n /**\n * Release a retained connection. Returns true when a pending disconnect closed it.\n */\n static async releaseConnection(database) {\n var _a;\n const retainers = (_a = this.connectionRetainers.get(database)) !== null && _a !== void 0 ? _a : 0;\n if (retainers > 1) {\n this.connectionRetainers.set(database, retainers - 1);\n return false;\n }\n this.connectionRetainers.delete(database);\n if (this.pendingDisconnects.has(database)) {\n this.pendingDisconnects.delete(database);\n await this.disconnect(database);\n return true;\n }\n return false;\n }\n /**\n * Close all open connections\n */\n static async disconnectAll() {\n const databases = Array.from(new Set([...this.connections.keys(), ...this.opening.keys()]));\n await Promise.all(databases.map((db) => {\n this.connectionRetainers.delete(db);\n this.pendingDisconnects.delete(db);\n return this.disconnect(db);\n }));\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.opening = new Map();\nFastSQL.openOptions = new Map();\nFastSQL.connections = new Map();\nFastSQL.sharedConnections = new Set();\nFastSQL.connectionRetainers = new Map();\nFastSQL.pendingDisconnects = new Set();\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 { FastSQL } from './fast-sql';\nconst DEFAULT_STORE = 'default';\nconst VECTOR_TABLE = '__fast_sql_vector_store';\nconst VECTOR_META_TABLE = '__fast_sql_vector_store_meta';\n/**\n * SQLite-backed VectorStore for local RAG usage.\n *\n * The helper is optional and dependency-free: pass your own embeddings provider,\n * or use precomputed embeddings with `embeddingDimension`. Multiple stores can\n * share one database by choosing different `store` names.\n */\nexport class FastSQLVectorStore {\n constructor(connection, options = {}) {\n var _a;\n this.initialized = false;\n this.ownsConnection = false;\n this.shouldDisconnectConnection = false;\n this.closed = false;\n this.connection = connection;\n this.store = (_a = options.store) !== null && _a !== void 0 ? _a : DEFAULT_STORE;\n this.embeddings = options.embeddings;\n this.configuredEmbeddingDim = options.embeddingDimension;\n this.embeddingDim = options.embeddingDimension;\n }\n static retainConnection(database) {\n var _a;\n this.connectionRefs.set(database, ((_a = this.connectionRefs.get(database)) !== null && _a !== void 0 ? _a : 0) + 1);\n }\n static releaseConnection(database) {\n var _a;\n const refs = (_a = this.connectionRefs.get(database)) !== null && _a !== void 0 ? _a : 0;\n if (refs > 1) {\n this.connectionRefs.set(database, refs - 1);\n return false;\n }\n this.connectionRefs.delete(database);\n this.ownedConnections.delete(database);\n return true;\n }\n /**\n * Open a vector store from database connection options.\n */\n static async open(options) {\n const existing = FastSQL.getConnection(options.database);\n const ownsExistingVectorConnection = existing && FastSQLVectorStore.connectionRefs.has(options.database);\n const connection = ownsExistingVectorConnection ? existing : await FastSQL.connect(options);\n const vectorStore = new FastSQLVectorStore(connection, options);\n vectorStore.ownsConnection = true;\n vectorStore.shouldDisconnectConnection = !existing || FastSQLVectorStore.ownedConnections.has(options.database);\n FastSQLVectorStore.retainConnection(connection.getDatabaseName());\n FastSQL.retainConnection(connection.getDatabaseName());\n if (vectorStore.shouldDisconnectConnection) {\n FastSQLVectorStore.ownedConnections.add(connection.getDatabaseName());\n }\n try {\n await vectorStore.load();\n return vectorStore;\n }\n catch (error) {\n await vectorStore.unload();\n throw error;\n }\n }\n /**\n * Create a vector store from an existing SQL connection.\n * The caller keeps ownership of the connection.\n */\n static async fromConnection(connection, options = {}) {\n const vectorStore = new FastSQLVectorStore(connection, options);\n await vectorStore.load();\n return vectorStore;\n }\n getStoreName() {\n return this.store;\n }\n getDatabaseName() {\n return this.connection.getDatabaseName();\n }\n async load() {\n var _a, _b;\n this.assertOpen();\n if (this.initialized) {\n return this;\n }\n await ((_b = (_a = this.embeddings) === null || _a === void 0 ? void 0 : _a.load) === null || _b === void 0 ? void 0 : _b.call(_a));\n await this.ensureSchema();\n await this.ensureStoreDimension();\n this.initialized = true;\n return this;\n }\n async unload() {\n var _a, _b;\n if (this.closed) {\n return;\n }\n await ((_b = (_a = this.embeddings) === null || _a === void 0 ? void 0 : _a.unload) === null || _b === void 0 ? void 0 : _b.call(_a));\n if (this.ownsConnection) {\n const database = this.connection.getDatabaseName();\n const releasedLastVectorStore = FastSQLVectorStore.releaseConnection(database);\n const closedFromPendingDisconnect = await FastSQL.releaseConnection(database);\n if (releasedLastVectorStore &&\n this.shouldDisconnectConnection &&\n !FastSQL.isConnectionShared(database) &&\n !closedFromPendingDisconnect) {\n await FastSQL.disconnect(database);\n }\n }\n this.initialized = false;\n this.closed = true;\n }\n async close() {\n await this.unload();\n }\n async add(params) {\n await this.ensureReady();\n const { id = this.createId(), document, embedding, metadata } = params;\n if (document === undefined && embedding === undefined) {\n throw new Error('document and embedding cannot both be undefined');\n }\n const existing = await this.connection.query(`SELECT 1 FROM ${VECTOR_TABLE} WHERE store = ? AND id = ? LIMIT 1`, [\n this.store,\n id,\n ]);\n if (existing.length > 0) {\n throw new Error(`id already exists: ${id}`);\n }\n const resolvedEmbedding = embedding !== null && embedding !== void 0 ? embedding : (await this.embedDocument(document));\n await this.ensureEmbeddingDimension(resolvedEmbedding);\n const now = Date.now();\n await this.connection.run(`INSERT INTO ${VECTOR_TABLE} (store, id, document, embedding, metadata, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?)`, [\n this.store,\n id,\n document !== null && document !== void 0 ? document : '',\n this.encodeEmbedding(resolvedEmbedding),\n this.encodeMetadata(metadata),\n now,\n now,\n ]);\n return id;\n }\n async update(params) {\n var _a, _b;\n await this.ensureReady();\n const rows = await this.connection.query(`SELECT id, document, embedding, metadata FROM ${VECTOR_TABLE} WHERE store = ? AND id = ? LIMIT 1`, [this.store, params.id]);\n if (rows.length === 0) {\n throw new Error(`id not found: ${params.id}`);\n }\n const current = this.rowToGetResult(rows[0]);\n const document = (_a = params.document) !== null && _a !== void 0 ? _a : current.document;\n const embedding = (_b = params.embedding) !== null && _b !== void 0 ? _b : (params.document !== undefined ? await this.embedDocument(params.document) : current.embedding);\n const metadata = params.metadata === undefined ? current.metadata : params.metadata;\n await this.ensureEmbeddingDimension(embedding);\n await this.connection.run(`UPDATE ${VECTOR_TABLE}\n SET document = ?, embedding = ?, metadata = ?, updated_at = ?\n WHERE store = ? AND id = ?`, [document, this.encodeEmbedding(embedding), this.encodeMetadata(metadata), Date.now(), this.store, params.id]);\n }\n async delete(params) {\n await this.ensureReady();\n const rows = await this.getStoreRows();\n const ids = rows\n .map((row) => this.rowToGetResult(row))\n .filter(params.predicate)\n .map((row) => row.id);\n for (let offset = 0; offset < ids.length; offset += 100) {\n await this.connection.executeBatch(ids.slice(offset, offset + 100).map((id) => ({\n statement: `DELETE FROM ${VECTOR_TABLE} WHERE store = ? AND id = ?`,\n params: [this.store, id],\n })));\n }\n }\n async query(params) {\n await this.ensureReady();\n const { queryText, queryEmbedding, nResults, predicate } = params;\n if (queryText === undefined && queryEmbedding === undefined) {\n throw new Error('queryText and queryEmbedding cannot both be undefined');\n }\n if (nResults !== undefined && nResults < 0) {\n throw new Error('nResults cannot be negative');\n }\n const searchEmbedding = queryEmbedding !== null && queryEmbedding !== void 0 ? queryEmbedding : (await this.embedDocument(queryText));\n await this.ensureEmbeddingDimension(searchEmbedding);\n const results = (await this.getStoreRows())\n .map((row) => {\n const item = this.rowToGetResult(row);\n return Object.assign(Object.assign({}, item), { similarity: this.cosineSimilarity(item.embedding, searchEmbedding) });\n })\n .filter(predicate !== null && predicate !== void 0 ? predicate : (() => true))\n .sort((a, b) => b.similarity - a.similarity);\n return nResults === undefined ? results : results.slice(0, nResults);\n }\n /**\n * Delete only this logical vector store. Other stores in the same database stay intact.\n */\n async deleteVectorStore() {\n await this.ensureReady();\n await this.connection.run(`DELETE FROM ${VECTOR_TABLE} WHERE store = ?`, [this.store]);\n await this.connection.run(`DELETE FROM ${VECTOR_META_TABLE} WHERE store = ?`, [this.store]);\n this.embeddingDim = this.configuredEmbeddingDim;\n if (this.embeddingDim !== undefined) {\n await this.saveEmbeddingDimension();\n }\n }\n async ensureReady() {\n this.assertOpen();\n if (!this.initialized) {\n await this.load();\n }\n }\n assertOpen() {\n if (this.closed) {\n throw new Error('Vector store is closed');\n }\n }\n async ensureSchema() {\n await this.connection.run(`CREATE TABLE IF NOT EXISTS ${VECTOR_TABLE} (\n store TEXT NOT NULL,\n id TEXT NOT NULL,\n document TEXT NOT NULL,\n embedding BLOB NOT NULL,\n metadata TEXT DEFAULT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL,\n PRIMARY KEY (store, id)\n )`);\n await this.connection.run(`CREATE INDEX IF NOT EXISTS ${VECTOR_TABLE}_store_idx ON ${VECTOR_TABLE} (store)`);\n await this.connection.run(`CREATE TABLE IF NOT EXISTS ${VECTOR_META_TABLE} (\n store TEXT PRIMARY KEY,\n embedding_dim INTEGER NOT NULL\n )`);\n }\n async ensureStoreDimension() {\n const rows = await this.connection.query(`SELECT embedding_dim FROM ${VECTOR_META_TABLE} WHERE store = ? LIMIT 1`, [\n this.store,\n ]);\n const storedDim = this.parseStoredDimension(rows[0]);\n if (storedDim !== undefined && this.embeddingDim !== undefined && storedDim !== this.embeddingDim) {\n throw new Error(`embedding dimension ${this.embeddingDim} does not match existing store dimension ${storedDim}`);\n }\n if (this.embeddingDim === undefined) {\n this.embeddingDim = storedDim !== null && storedDim !== void 0 ? storedDim : (this.embeddings ? (await this.embedDocument('dummy')).length : undefined);\n }\n if (this.embeddingDim !== undefined) {\n await this.saveEmbeddingDimension();\n }\n }\n parseStoredDimension(row) {\n if (!row) {\n return undefined;\n }\n const value = row.embedding_dim;\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return undefined;\n }\n async saveEmbeddingDimension() {\n if (this.embeddingDim === undefined) {\n return;\n }\n await this.connection.run(`INSERT OR REPLACE INTO ${VECTOR_META_TABLE} (store, embedding_dim) VALUES (?, ?)`, [\n this.store,\n this.embeddingDim,\n ]);\n }\n async ensureEmbeddingDimension(embedding) {\n this.validateEmbedding(embedding);\n if (this.embeddingDim === undefined) {\n this.embeddingDim = embedding.length;\n await this.saveEmbeddingDimension();\n return;\n }\n if (embedding.length !== this.embeddingDim) {\n throw new Error(`embedding dimension ${embedding.length} does not match vector store dimension ${this.embeddingDim}`);\n }\n }\n async embedDocument(document) {\n if (document === undefined) {\n throw new Error('document is required when embedding is not provided');\n }\n if (!this.embeddings) {\n throw new Error('embeddings provider is required for text operations');\n }\n return this.embeddings.embed(document);\n }\n validateEmbedding(embedding) {\n if (!Array.isArray(embedding) || embedding.length === 0) {\n throw new Error('embedding must be a non-empty number array');\n }\n for (const value of embedding) {\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n throw new Error('embedding values must be finite numbers');\n }\n }\n }\n async getStoreRows() {\n return this.connection.query(`SELECT id, document, embedding, metadata FROM ${VECTOR_TABLE} WHERE store = ? ORDER BY updated_at DESC`, [this.store]);\n }\n rowToGetResult(row) {\n const result = {\n id: String(row.id),\n document: row.document === null || row.document === undefined ? '' : String(row.document),\n embedding: this.decodeEmbedding(row.embedding),\n };\n const metadata = this.decodeMetadata(row.metadata);\n if (metadata !== undefined) {\n result.metadata = metadata;\n }\n return result;\n }\n encodeEmbedding(embedding) {\n const bytes = new Uint8Array(embedding.length * Float32Array.BYTES_PER_ELEMENT);\n const view = new DataView(bytes.buffer);\n embedding.forEach((value, index) => view.setFloat32(index * Float32Array.BYTES_PER_ELEMENT, value, true));\n return bytes;\n }\n decodeEmbedding(value) {\n if (!(value instanceof Uint8Array)) {\n throw new Error('stored embedding is not binary data');\n }\n if (value.byteLength % Float32Array.BYTES_PER_ELEMENT !== 0) {\n throw new Error('stored embedding has invalid byte length');\n }\n const view = new DataView(value.buffer, value.byteOffset, value.byteLength);\n const embedding = [];\n for (let offset = 0; offset < value.byteLength; offset += Float32Array.BYTES_PER_ELEMENT) {\n embedding.push(view.getFloat32(offset, true));\n }\n return embedding;\n }\n encodeMetadata(metadata) {\n return metadata ? JSON.stringify(metadata) : null;\n }\n decodeMetadata(value) {\n if (typeof value !== 'string' || value.length === 0) {\n return undefined;\n }\n try {\n const parsed = JSON.parse(value);\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : undefined;\n }\n catch (_a) {\n return undefined;\n }\n }\n cosineSimilarity(a, b) {\n if (a.length !== b.length) {\n throw new Error(`embedding dimension ${b.length} does not match stored embedding dimension ${a.length}`);\n }\n let dot = 0;\n let normA = 0;\n let normB = 0;\n for (let i = 0; i < a.length; i++) {\n dot += a[i] * b[i];\n normA += a[i] * a[i];\n normB += b[i] * b[i];\n }\n if (normA === 0 || normB === 0) {\n return 0;\n }\n return dot / (Math.sqrt(normA) * Math.sqrt(normB));\n }\n createId() {\n const cryptoApi = globalThis.crypto;\n if (typeof (cryptoApi === null || cryptoApi === void 0 ? void 0 : cryptoApi.randomUUID) === 'function') {\n return cryptoApi.randomUUID();\n }\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const value = Math.floor(Math.random() * 16);\n const nibble = char === 'x' ? value : (value & 0x3) | 0x8;\n return nibble.toString(16);\n });\n }\n}\nFastSQLVectorStore.connectionRefs = new Map();\nFastSQLVectorStore.ownedConnections = new Set();\n","import { WebPlugin } from '@capacitor/core';\nimport { sqlite3Worker1Promiser } from '@sqlite.org/sqlite-wasm';\nimport { assertSupportedIsolation } from './transaction-isolation';\n/**\n * Web implementation using the official SQLite Wasm build with OPFS persistence.\n *\n * Databases are stored in the Origin Private File System when available (requires\n * Cross-Origin Isolation: COOP/COEP). No full-database copy is kept in RAM or\n * IndexedDB — SQLite reads/writes the OPFS file directly from a worker.\n */\nexport class CapgoCapacitorFastSqlWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.databases = new Map();\n this.promiserPromise = 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 overriding the default worker.\n */\n async configureWeb(config) {\n if (this.promiserPromise || this.databases.size > 0) {\n throw new Error('Configure web storage before opening the first database');\n }\n if (config.requirePersistence && config.useOpfs === false) {\n throw new Error('requirePersistence requires OPFS');\n }\n this.webConfig = Object.assign({}, config);\n this.promiserPromise = null;\n }\n getPromiser() {\n if (!this.promiserPromise) {\n const config = this.webConfig.worker !== undefined ? { worker: this.webConfig.worker } : undefined;\n this.promiserPromise = sqlite3Worker1Promiser.v2(config);\n }\n return this.promiserPromise;\n }\n dbPath(database) {\n if (!database || database === '.' || database === '..' || /[/\\\\\\0]/.test(database)) {\n throw new Error('Database must be a non-empty file name without path separators');\n }\n return `/capgo-fast-sql/${database}.sqlite3`;\n }\n async connect(options) {\n if (options.transport === 'http-binary')\n throw new Error('Binary HTTP transport requires iOS or Android');\n if (options.readOnly) {\n throw new Error('Read-only opens are not supported by the SQLite Wasm Worker transport');\n }\n if (this.databases.has(options.database)) {\n const existing = this.databases.get(options.database);\n return {\n port: existing.port,\n token: existing.token,\n database: options.database,\n persistent: existing.persistent,\n };\n }\n const path = this.dbPath(options.database);\n const promiser = await this.getPromiser();\n const useOpfs = this.webConfig.useOpfs !== false;\n let openResult;\n if (useOpfs) {\n try {\n openResult = await promiser('open', {\n filename: `file:/capgo-fast-sql/${encodeURIComponent(options.database)}.sqlite3?vfs=opfs`,\n });\n }\n catch (opfsError) {\n if (this.webConfig.requirePersistence)\n throw opfsError;\n console.warn('[CapgoCapacitorFastSql] OPFS unavailable; web database will not persist across reloads. ' +\n 'Serve with Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp.', opfsError);\n openResult = await promiser('open', { filename: path });\n }\n }\n else {\n openResult = await promiser('open', { filename: path });\n }\n const dbId = openResult.result.dbId;\n const persistent = Boolean(openResult.result.persistent);\n if (!dbId) {\n throw new Error('Failed to open SQLite Wasm database: missing dbId');\n }\n try {\n if (this.webConfig.requirePersistence && !persistent) {\n throw new Error('SQLite Worker did not confirm persistent storage');\n }\n await this.applyPerformanceConfig(promiser, dbId, options);\n }\n catch (error) {\n await promiser({ type: 'close', dbId, args: {} });\n throw error;\n }\n const token = this.generateToken();\n const port = this.nextPort++;\n this.databases.set(options.database, { dbId, token, port, persistent });\n return {\n port,\n token,\n database: options.database,\n persistent,\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 const promiser = await this.getPromiser();\n // OPFS-backed DBs persist automatically; no export/IndexedDB write needed.\n await promiser({ type: 'close', dbId: dbInfo.dbId, args: {} });\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 persistent: dbInfo.persistent,\n };\n }\n async execute(options) {\n var _a, _b, _c, _d;\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 promiser = await this.getPromiser();\n const rows = [];\n // countChanges / lastInsertRowId are supported by Worker1 at runtime but\n // omitted from the published Worker1ExecArgs typings.\n const result = await promiser({\n type: 'exec',\n dbId: dbInfo.dbId,\n args: {\n sql: options.statement,\n bind: options.params,\n rowMode: 'object',\n countChanges: true,\n lastInsertRowId: true,\n callback: (msg) => {\n if (msg.rowNumber != null && msg.row && typeof msg.row === 'object' && !Array.isArray(msg.row)) {\n rows.push(msg.row);\n }\n },\n },\n });\n const execResult = result.result;\n const rowsAffected = Number((_a = execResult.changeCount) !== null && _a !== void 0 ? _a : 0);\n const rawInsertId = execResult.lastInsertRowId;\n const insertId = rawInsertId !== undefined && rawInsertId !== null ? Number(rawInsertId) : undefined;\n return {\n rows,\n rowsAffected,\n insertId: insertId !== undefined && insertId > 0 ? insertId : undefined,\n };\n }\n catch (error) {\n const message = (_d = (_c = (_b = error === null || error === void 0 ? void 0 : error.result) === null || _b === void 0 ? void 0 : _b.message) !== null && _c !== void 0 ? _c : error === null || error === void 0 ? void 0 : error.message) !== null && _d !== void 0 ? _d : String(error);\n const wrappedError = new Error(`SQL execution failed: ${message}`);\n wrappedError.cause = error;\n throw wrappedError;\n }\n }\n async beginTransaction(options) {\n assertSupportedIsolation(options.isolationLevel);\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 async applyPerformanceConfig(promiser, dbId, options) {\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA foreign_keys = ON' } });\n if (options.walMode) {\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA journal_mode = WAL' } });\n }\n if (options.performancePresets) {\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA synchronous = NORMAL' } });\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA busy_timeout = 5000' } });\n await promiser({ type: 'exec', dbId, args: { sql: 'PRAGMA cache_size = -2000' } });\n }\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 async getPluginVersion() {\n return { version: 'web' };\n }\n}\n"],"names":["IsolationLevel","registerPlugin","Capacitor","WebPlugin","sqlite3Worker1Promiser"],"mappings":"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"}