@powersync/capacitor 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/adapter/CapacitorSQLiteAdapter.d.ts +24 -15
- package/dist/esm/adapter/CapacitorSQLiteAdapter.js +26 -85
- package/dist/esm/adapter/CapacitorSQLiteAdapter.js.map +1 -1
- package/dist/esm/sync/CapacitorSyncImplementation.js +3 -8
- package/dist/esm/sync/CapacitorSyncImplementation.js.map +1 -1
- package/dist/plugin.cjs +31 -94
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.cts +23 -15
- package/dist/plugin.js +33 -95
- package/dist/plugin.js.map +1 -1
- package/package.json +2 -5
- package/src/adapter/CapacitorSQLiteAdapter.ts +48 -120
- package/src/sync/CapacitorSyncImplementation.ts +3 -7
package/dist/plugin.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs","sources":["esm/plugin/PowerSyncCore.js","esm/plugin/PowerSyncPlugin.js","esm/adapter/CapacitorSQLiteOpenFactory.js","esm/adapter/CapacitorSQLiteAdapter.js","esm/sync/CapacitorSyncImplementation.js","esm/PowerSyncDatabase.js","esm/plugin/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nexport const PowerSyncCore = registerPlugin('PowerSync', {\n web: () => import('./web.js').then((m) => new m.PowerSyncWeb())\n});\n//# sourceMappingURL=PowerSyncCore.js.map","export const messageForErrorCode = (code) => {\n switch (code) {\n case 0:\n return 'Success';\n default:\n return `Extension registration failed with SQLite error code: ${code}`;\n }\n};\n//# sourceMappingURL=PowerSyncPlugin.js.map","import { CapacitorSQLiteAdapter } from './CapacitorSQLiteAdapter.js';\nvar SqliteSynchronous;\n(function (SqliteSynchronous) {\n SqliteSynchronous[\"normal\"] = \"NORMAL\";\n SqliteSynchronous[\"full\"] = \"FULL\";\n SqliteSynchronous[\"off\"] = \"OFF\";\n})(SqliteSynchronous || (SqliteSynchronous = {}));\nexport const DEFAULT_SQLITE_OPTIONS = {\n journalSizeLimit: 6 * 1024 * 1024,\n synchronous: SqliteSynchronous.normal,\n cacheSizeKb: 50 * 1024\n};\nexport class CapacitorSQLiteOpenFactory {\n constructor(options) {\n this.options = options;\n }\n openDB() {\n return new CapacitorSQLiteAdapter(this.options);\n }\n}\n//# sourceMappingURL=CapacitorSQLiteOpenFactory.js.map","import { CapacitorSQLite, SQLiteConnection } from '@capacitor-community/sqlite';\nimport { Capacitor } from '@capacitor/core';\nimport { BaseObserver, mutexRunExclusive } from '@powersync/web';\nimport { Mutex } from 'async-mutex';\nimport { PowerSyncCore } from '../plugin/PowerSyncCore.js';\nimport { messageForErrorCode } from '../plugin/PowerSyncPlugin.js';\nimport { DEFAULT_SQLITE_OPTIONS } from './CapacitorSQLiteOpenFactory.js';\n/**\n * Monitors the execution time of a query and logs it to the performance timeline.\n */\nasync function monitorQuery(sql, executor) {\n const start = performance.now();\n try {\n const r = await executor();\n performance.measure(`[SQL] ${sql}`, { start });\n return r;\n }\n catch (e) {\n performance.measure(`[SQL] [ERROR: ${e.message}] ${sql}`, { start });\n throw e;\n }\n}\n/**\n * An implementation of {@link DBAdapter} using the Capacitor Community SQLite [plugin](https://github.com/capacitor-community/sqlite).\n *\n * @experimental\n * @alpha This is currently experimental and may change without a major version bump.\n */\nexport class CapacitorSQLiteAdapter extends BaseObserver {\n constructor(options) {\n super();\n this.options = options;\n this._writeConnection = null;\n this._readConnection = null;\n this.writeMutex = new Mutex();\n this.readMutex = new Mutex();\n this.initializedPromise = this.init();\n }\n get writeConnection() {\n if (!this._writeConnection) {\n throw new Error('Init not completed yet');\n }\n return this._writeConnection;\n }\n get readConnection() {\n if (!this._readConnection) {\n throw new Error('Init not completed yet');\n }\n return this._readConnection;\n }\n get name() {\n return this.options.dbFilename;\n }\n async init() {\n const { responseCode: registrationResponseCode } = await PowerSyncCore.registerCore();\n if (registrationResponseCode != 0) {\n throw new Error(`Could not register PowerSync core extension: ${messageForErrorCode(registrationResponseCode)}`);\n }\n const sqlite = new SQLiteConnection(CapacitorSQLite);\n // It seems like the isConnection and retrieveConnection methods\n // only check a JS side map of connections.\n // On hot reload this JS cache can be cleared, while the connection\n // still exists natively. and `createConnection` will fail if it already exists.\n await sqlite.closeConnection(this.options.dbFilename, false).catch(() => { });\n await sqlite.closeConnection(this.options.dbFilename, true).catch(() => { });\n // TODO support encryption eventually\n this._writeConnection = await sqlite.createConnection(this.options.dbFilename, false, 'no-encryption', 1, false);\n this._readConnection = await sqlite.createConnection(this.options.dbFilename, false, 'no-encryption', 1, true);\n await this._writeConnection.open();\n const { cacheSizeKb, journalSizeLimit, synchronous } = Object.assign(Object.assign({}, DEFAULT_SQLITE_OPTIONS), this.options.sqliteOptions);\n await this.writeConnection.query('PRAGMA journal_mode = WAL');\n await this.writeConnection.query(`PRAGMA journal_size_limit = ${journalSizeLimit}`);\n await this.writeConnection.query(`PRAGMA temp_store = memory`);\n await this.writeConnection.query(`PRAGMA synchronous = ${synchronous}`);\n await this.writeConnection.query(`PRAGMA cache_size = -${cacheSizeKb}`);\n await this._readConnection.open();\n const platform = Capacitor.getPlatform();\n if (platform == 'android') {\n /**\n * SQLCipher for Android enables dynamic loading of extensions.\n * On iOS we use a static auto extension registration.\n */\n const extensionQuery = \"SELECT load_extension('libpowersync.so', 'sqlite3_powersync_init')\";\n await this.writeConnection.query(extensionQuery);\n await this.readConnection.query(extensionQuery);\n }\n await this.writeConnection.query(\"SELECT powersync_update_hooks('install')\");\n }\n async close() {\n await this.initializedPromise;\n await this.writeConnection.close();\n await this.readConnection.close();\n }\n generateLockContext(db) {\n const _query = async (query, params = []) => {\n var _a;\n const result = await db.query(query, params);\n const arrayResult = (_a = result.values) !== null && _a !== void 0 ? _a : [];\n return {\n rowsAffected: 0,\n rows: {\n _array: arrayResult,\n length: arrayResult.length,\n item: (idx) => arrayResult[idx]\n }\n };\n };\n const _execute = async (query, params = []) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const platform = Capacitor.getPlatform();\n if (db.getConnectionReadOnly()) {\n return _query(query, params);\n }\n if (platform == 'android') {\n // Android: use query for SELECT and executeSet for mutations\n // We cannot use `run` here for both cases.\n if (query.toLowerCase().trim().startsWith('select')) {\n return _query(query, params);\n }\n else {\n const result = await db.executeSet([{ statement: query, values: params }], false);\n return {\n insertId: (_a = result.changes) === null || _a === void 0 ? void 0 : _a.lastId,\n rowsAffected: (_c = (_b = result.changes) === null || _b === void 0 ? void 0 : _b.changes) !== null && _c !== void 0 ? _c : 0,\n rows: {\n _array: [],\n length: 0,\n item: () => null\n }\n };\n }\n }\n // iOS (and other platforms): use run(\"all\")\n const result = await db.run(query, params, false, 'all');\n const resultSet = (_e = (_d = result.changes) === null || _d === void 0 ? void 0 : _d.values) !== null && _e !== void 0 ? _e : [];\n return {\n insertId: (_f = result.changes) === null || _f === void 0 ? void 0 : _f.lastId,\n rowsAffected: (_h = (_g = result.changes) === null || _g === void 0 ? void 0 : _g.changes) !== null && _h !== void 0 ? _h : 0,\n rows: {\n _array: resultSet,\n length: resultSet.length,\n item: (idx) => resultSet[idx]\n }\n };\n };\n const execute = this.options.debugMode\n ? (sql, params) => monitorQuery(sql, () => _execute(sql, params))\n : _execute;\n const executeQuery = this.options.debugMode\n ? (sql, params) => monitorQuery(sql, () => _query(sql, params))\n : _query;\n const getAll = async (query, params) => {\n var _a, _b;\n const result = await executeQuery(query, params);\n return (_b = (_a = result.rows) === null || _a === void 0 ? void 0 : _a._array) !== null && _b !== void 0 ? _b : [];\n };\n const getOptional = async (query, params) => {\n const results = await getAll(query, params);\n return results.length > 0 ? results[0] : null;\n };\n const get = async (query, params) => {\n const result = await getOptional(query, params);\n if (!result) {\n throw new Error(`No results for query: ${query}`);\n }\n return result;\n };\n const executeRaw = async (query, params) => {\n var _a, _b;\n // This is a workaround, we don't support multiple columns of the same name\n const results = await execute(query, params);\n return (_b = (_a = results.rows) === null || _a === void 0 ? void 0 : _a._array.map((row) => Object.values(row))) !== null && _b !== void 0 ? _b : [];\n };\n return {\n getAll,\n getOptional,\n get,\n executeRaw,\n execute\n };\n }\n execute(query, params) {\n return this.writeLock((tx) => tx.execute(query, params));\n }\n executeRaw(query, params) {\n return this.writeLock((tx) => tx.executeRaw(query, params));\n }\n async executeBatch(query, params = []) {\n return this.writeLock(async (tx) => {\n var _a, _b, _c;\n let result = await this.writeConnection.executeSet(params.map((param) => ({\n statement: query,\n values: param\n })));\n return {\n rowsAffected: (_b = (_a = result.changes) === null || _a === void 0 ? void 0 : _a.changes) !== null && _b !== void 0 ? _b : 0,\n insertId: (_c = result.changes) === null || _c === void 0 ? void 0 : _c.lastId\n };\n });\n }\n readLock(fn, options) {\n return mutexRunExclusive(this.readMutex, async () => {\n await this.initializedPromise;\n return await fn(this.generateLockContext(this.readConnection));\n }, options);\n }\n readTransaction(fn, options) {\n return this.readLock(async (ctx) => {\n return this.internalTransaction(ctx, fn);\n });\n }\n writeLock(fn, options) {\n return mutexRunExclusive(this.writeMutex, async () => {\n var _a;\n await this.initializedPromise;\n const result = await fn(this.generateLockContext(this.writeConnection));\n // Fetch table updates\n const updates = await this.writeConnection.query(\"SELECT powersync_update_hooks('get') AS table_name\");\n const jsonUpdates = (_a = updates.values) === null || _a === void 0 ? void 0 : _a[0];\n if (!jsonUpdates || !jsonUpdates.table_name) {\n throw new Error('Could not fetch table updates');\n }\n const notification = {\n rawUpdates: [],\n tables: JSON.parse(jsonUpdates.table_name),\n groupedUpdates: {}\n };\n this.iterateListeners((l) => { var _a; return (_a = l.tablesUpdated) === null || _a === void 0 ? void 0 : _a.call(l, notification); });\n return result;\n }, options);\n }\n writeTransaction(fn, options) {\n return this.writeLock(async (ctx) => {\n return this.internalTransaction(ctx, fn);\n });\n }\n refreshSchema() {\n return this.writeLock(async (writeTx) => {\n return this.readLock(async (readTx) => {\n const updateQuery = `PRAGMA table_info('sqlite_master')`;\n await writeTx.get(updateQuery);\n await readTx.get(updateQuery);\n });\n });\n }\n getAll(sql, parameters) {\n return this.readLock((tx) => tx.getAll(sql, parameters));\n }\n getOptional(sql, parameters) {\n return this.readLock((tx) => tx.getOptional(sql, parameters));\n }\n get(sql, parameters) {\n return this.readLock((tx) => tx.get(sql, parameters));\n }\n async internalTransaction(ctx, fn) {\n let finalized = false;\n const commit = async () => {\n if (finalized) {\n return { rowsAffected: 0 };\n }\n finalized = true;\n return ctx.execute('COMMIT');\n };\n const rollback = async () => {\n if (finalized) {\n return { rowsAffected: 0 };\n }\n finalized = true;\n return ctx.execute('ROLLBACK');\n };\n try {\n await ctx.execute('BEGIN');\n const result = await fn(Object.assign(Object.assign({}, ctx), { commit,\n rollback }));\n await commit();\n return result;\n }\n catch (ex) {\n try {\n await rollback();\n }\n catch (ex2) {\n // In rare cases, a rollback may fail.\n // Safe to ignore.\n }\n throw ex;\n }\n }\n}\n//# sourceMappingURL=CapacitorSQLiteAdapter.js.map","import { AbstractStreamingSyncImplementation, LockType, mutexRunExclusive } from '@powersync/web';\nimport { Mutex } from 'async-mutex';\nconst GLOBAL_MUTEX_STORE = new Map();\n/**\n * Used to identify multiple instances of CapacitorStreamingSyncImplementation\n */\nlet _CAPACITOR_STREAMING_SYNC_SEQUENCE = 0;\nexport class CapacitorStreamingSyncImplementation extends AbstractStreamingSyncImplementation {\n constructor() {\n super(...arguments);\n // A unique ID for tacking this specific instance of CapacitorStreamingSyncImplementation\n this.instanceId = _CAPACITOR_STREAMING_SYNC_SEQUENCE++;\n }\n async dispose() {\n await super.dispose();\n // Clear up any global mutexes which aren't used anymore\n for (const mutexEntry of GLOBAL_MUTEX_STORE.entries()) {\n const [identifier, mutex] = mutexEntry;\n if (!mutex.tracking.has(this.instanceId)) {\n continue;\n }\n mutex.tracking.delete(this.instanceId);\n if (mutex.tracking.size == 0) {\n GLOBAL_MUTEX_STORE.delete(identifier);\n }\n }\n }\n async obtainLock(lockOptions) {\n // If we don't have an identifier for some reason (should not happen), we use a shared Mutex\n const { identifier: baseIdentifier = 'DEFAULT' } = this.options;\n if (!GLOBAL_MUTEX_STORE.has(baseIdentifier)) {\n GLOBAL_MUTEX_STORE.set(baseIdentifier, {\n tracking: new Set([this.instanceId]),\n locks: {\n [LockType.CRUD]: new Mutex(),\n [LockType.SYNC]: new Mutex()\n }\n });\n }\n const mutexRecord = GLOBAL_MUTEX_STORE.get(baseIdentifier);\n mutexRecord.tracking.add(this.instanceId);\n const mutex = mutexRecord.locks[lockOptions.type];\n return mutexRunExclusive(mutex, async () => {\n var _a;\n if ((_a = lockOptions.signal) === null || _a === void 0 ? void 0 : _a.aborted) {\n throw new Error('Aborted');\n }\n return await lockOptions.callback();\n });\n }\n}\n//# sourceMappingURL=CapacitorSyncImplementation.js.map","import { Capacitor } from '@capacitor/core';\nimport { MEMORY_TRIGGER_CLAIM_MANAGER, PowerSyncDatabase as WebPowerSyncDatabase, WebRemote } from '@powersync/web';\nimport { CapacitorSQLiteAdapter } from './adapter/CapacitorSQLiteAdapter.js';\nimport { CapacitorStreamingSyncImplementation } from './sync/CapacitorSyncImplementation.js';\n/**\n * PowerSyncDatabase class for managing database connections and sync implementations.\n * This extends the WebPowerSyncDatabase to provide platform-specific implementations\n * for Capacitor environments (iOS and Android).\n *\n * @experimental\n * @alpha\n */\nexport class PowerSyncDatabase extends WebPowerSyncDatabase {\n get isNativeCapacitorPlatform() {\n const platform = Capacitor.getPlatform();\n return platform == 'ios' || platform == 'android';\n }\n openDBAdapter(options) {\n var _a, _b, _c;\n const platform = Capacitor.getPlatform();\n if (platform == 'ios' || platform == 'android') {\n if (options.database.dbLocation) {\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.warn(`\n dbLocation is ignored on iOS and Android platforms. \n The database directory can be configured in the Capacitor project.\n See https://github.com/capacitor-community/sqlite?tab=readme-ov-file#installation`);\n }\n (_b = options.logger) === null || _b === void 0 ? void 0 : _b.debug(`Using CapacitorSQLiteAdapter for platform: ${platform}`);\n return new CapacitorSQLiteAdapter(Object.assign({}, options.database));\n }\n else {\n (_c = options.logger) === null || _c === void 0 ? void 0 : _c.debug(`Using default web adapter for web platform`);\n return super.openDBAdapter(options);\n }\n }\n generateTriggerManagerConfig() {\n const config = super.generateTriggerManagerConfig();\n if (this.isNativeCapacitorPlatform) {\n /**\n * We usually only ever have a single tab for capacitor.\n * Avoiding navigator locks allows insecure contexts (during development).\n */\n config.claimManager = MEMORY_TRIGGER_CLAIM_MANAGER;\n }\n return config;\n }\n runExclusive(cb) {\n if (this.isNativeCapacitorPlatform) {\n // Use mutex for mobile platforms.\n // This is mainly for testing purposes since navigator.locks require secure contexts.\n return this.runExclusiveMutex.runExclusive(cb);\n }\n else {\n // Use navigator.locks for web platform\n return super.runExclusive(cb);\n }\n }\n generateSyncStreamImplementation(connector, options) {\n var _a;\n if (this.isNativeCapacitorPlatform) {\n // We don't want to support multi-tab on mobile platforms.\n // We technically can, but it's not a common use case and requires additional work/testing.\n this.logger.debug(`Using Capacitor sync implementation`);\n if ((_a = this.options.flags) === null || _a === void 0 ? void 0 : _a.enableMultiTabs) {\n this.logger.warn(`enableMultiTabs is not supported on Capacitor mobile platforms. Ignoring the flag.`);\n }\n const remote = new WebRemote(connector, this.logger);\n return new CapacitorStreamingSyncImplementation(Object.assign(Object.assign({}, this.options), { retryDelayMs: options.retryDelayMs, crudUploadThrottleMs: options.crudUploadThrottleMs, adapter: this.bucketStorageAdapter, remote, uploadCrud: async () => {\n await this.waitForReady();\n await connector.uploadData(this);\n }, identifier: this.database.name, logger: this.logger, subscriptions: options.subscriptions }));\n }\n else {\n this.logger.debug(`Using default web sync implementation for web platform`);\n return super.generateSyncStreamImplementation(connector, options);\n }\n }\n}\n//# sourceMappingURL=PowerSyncDatabase.js.map","import { WebPlugin } from '@capacitor/core';\nexport class PowerSyncWeb extends WebPlugin {\n async registerCore() {\n throw new Error('This code path is not supported on web.');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","BaseObserver","Mutex","sqlite","SQLiteConnection","CapacitorSQLite","Capacitor","mutexRunExclusive","AbstractStreamingSyncImplementation","LockType","WebPowerSyncDatabase","MEMORY_TRIGGER_CLAIM_MANAGER","WebRemote","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs","sources":["esm/plugin/PowerSyncCore.js","esm/plugin/PowerSyncPlugin.js","esm/adapter/CapacitorSQLiteOpenFactory.js","esm/adapter/CapacitorSQLiteAdapter.js","esm/sync/CapacitorSyncImplementation.js","esm/PowerSyncDatabase.js","esm/plugin/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nexport const PowerSyncCore = registerPlugin('PowerSync', {\n web: () => import('./web.js').then((m) => new m.PowerSyncWeb())\n});\n//# sourceMappingURL=PowerSyncCore.js.map","export const messageForErrorCode = (code) => {\n switch (code) {\n case 0:\n return 'Success';\n default:\n return `Extension registration failed with SQLite error code: ${code}`;\n }\n};\n//# sourceMappingURL=PowerSyncPlugin.js.map","import { CapacitorSQLiteAdapter } from './CapacitorSQLiteAdapter.js';\nvar SqliteSynchronous;\n(function (SqliteSynchronous) {\n SqliteSynchronous[\"normal\"] = \"NORMAL\";\n SqliteSynchronous[\"full\"] = \"FULL\";\n SqliteSynchronous[\"off\"] = \"OFF\";\n})(SqliteSynchronous || (SqliteSynchronous = {}));\nexport const DEFAULT_SQLITE_OPTIONS = {\n journalSizeLimit: 6 * 1024 * 1024,\n synchronous: SqliteSynchronous.normal,\n cacheSizeKb: 50 * 1024\n};\nexport class CapacitorSQLiteOpenFactory {\n constructor(options) {\n this.options = options;\n }\n openDB() {\n return new CapacitorSQLiteAdapter(this.options);\n }\n}\n//# sourceMappingURL=CapacitorSQLiteOpenFactory.js.map","import { CapacitorSQLite, SQLiteConnection } from '@capacitor-community/sqlite';\nimport { Capacitor } from '@capacitor/core';\nimport { BaseObserver, DBAdapterDefaultMixin, Mutex, timeoutSignal } from '@powersync/web';\nimport { PowerSyncCore } from '../plugin/PowerSyncCore.js';\nimport { messageForErrorCode } from '../plugin/PowerSyncPlugin.js';\nimport { DEFAULT_SQLITE_OPTIONS } from './CapacitorSQLiteOpenFactory.js';\n/**\n * Monitors the execution time of a query and logs it to the performance timeline.\n */\nasync function monitorQuery(sql, executor) {\n const start = performance.now();\n try {\n const r = await executor();\n performance.measure(`[SQL] ${sql}`, { start });\n return r;\n }\n catch (e) {\n performance.measure(`[SQL] [ERROR: ${e.message}] ${sql}`, { start });\n throw e;\n }\n}\nclass CapacitorConnectionPool extends BaseObserver {\n constructor(options) {\n super();\n this.options = options;\n this._writeConnection = null;\n this._readConnection = null;\n this.writeMutex = new Mutex();\n this.readMutex = new Mutex();\n this.initializedPromise = this.init();\n }\n get writeConnection() {\n if (!this._writeConnection) {\n throw new Error('Init not completed yet');\n }\n return this._writeConnection;\n }\n get readConnection() {\n if (!this._readConnection) {\n throw new Error('Init not completed yet');\n }\n return this._readConnection;\n }\n get name() {\n return this.options.dbFilename;\n }\n async init() {\n const { responseCode: registrationResponseCode } = await PowerSyncCore.registerCore();\n if (registrationResponseCode != 0) {\n throw new Error(`Could not register PowerSync core extension: ${messageForErrorCode(registrationResponseCode)}`);\n }\n const sqlite = new SQLiteConnection(CapacitorSQLite);\n // It seems like the isConnection and retrieveConnection methods\n // only check a JS side map of connections.\n // On hot reload this JS cache can be cleared, while the connection\n // still exists natively. and `createConnection` will fail if it already exists.\n await sqlite.closeConnection(this.options.dbFilename, false).catch(() => { });\n await sqlite.closeConnection(this.options.dbFilename, true).catch(() => { });\n // TODO support encryption eventually\n this._writeConnection = await sqlite.createConnection(this.options.dbFilename, false, 'no-encryption', 1, false);\n this._readConnection = await sqlite.createConnection(this.options.dbFilename, false, 'no-encryption', 1, true);\n await this._writeConnection.open();\n const { cacheSizeKb, journalSizeLimit, synchronous } = Object.assign(Object.assign({}, DEFAULT_SQLITE_OPTIONS), this.options.sqliteOptions);\n await this.writeConnection.query('PRAGMA journal_mode = WAL');\n await this.writeConnection.query(`PRAGMA journal_size_limit = ${journalSizeLimit}`);\n await this.writeConnection.query(`PRAGMA temp_store = memory`);\n await this.writeConnection.query(`PRAGMA synchronous = ${synchronous}`);\n await this.writeConnection.query(`PRAGMA cache_size = -${cacheSizeKb}`);\n await this._readConnection.open();\n const platform = Capacitor.getPlatform();\n if (platform == 'android') {\n /**\n * SQLCipher for Android enables dynamic loading of extensions.\n * On iOS we use a static auto extension registration.\n */\n const extensionQuery = \"SELECT load_extension('libpowersync.so', 'sqlite3_powersync_init')\";\n await this.writeConnection.query(extensionQuery);\n await this.readConnection.query(extensionQuery);\n }\n await this.writeConnection.query(\"SELECT powersync_update_hooks('install')\");\n }\n async close() {\n await this.initializedPromise;\n await this.writeConnection.close();\n await this.readConnection.close();\n }\n generateLockContext(db) {\n const _query = async (query, params = []) => {\n var _a;\n const result = await db.query(query, params);\n const arrayResult = (_a = result.values) !== null && _a !== void 0 ? _a : [];\n return {\n rowsAffected: 0,\n rows: {\n _array: arrayResult,\n length: arrayResult.length,\n item: (idx) => arrayResult[idx]\n }\n };\n };\n const _execute = async (query, params = []) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const platform = Capacitor.getPlatform();\n if (db.getConnectionReadOnly()) {\n return _query(query, params);\n }\n if (platform == 'android') {\n // Android: use query for SELECT and executeSet for mutations\n // We cannot use `run` here for both cases.\n if (query.toLowerCase().trim().startsWith('select')) {\n return _query(query, params);\n }\n else {\n const result = await db.executeSet([{ statement: query, values: params }], false);\n return {\n insertId: (_a = result.changes) === null || _a === void 0 ? void 0 : _a.lastId,\n rowsAffected: (_c = (_b = result.changes) === null || _b === void 0 ? void 0 : _b.changes) !== null && _c !== void 0 ? _c : 0,\n rows: {\n _array: [],\n length: 0,\n item: () => null\n }\n };\n }\n }\n // iOS (and other platforms): use run(\"all\")\n const result = await db.run(query, params, false, 'all');\n const resultSet = (_e = (_d = result.changes) === null || _d === void 0 ? void 0 : _d.values) !== null && _e !== void 0 ? _e : [];\n return {\n insertId: (_f = result.changes) === null || _f === void 0 ? void 0 : _f.lastId,\n rowsAffected: (_h = (_g = result.changes) === null || _g === void 0 ? void 0 : _g.changes) !== null && _h !== void 0 ? _h : 0,\n rows: {\n _array: resultSet,\n length: resultSet.length,\n item: (idx) => resultSet[idx]\n }\n };\n };\n const execute = this.options.debugMode\n ? (sql, params) => monitorQuery(sql, () => _execute(sql, params))\n : _execute;\n const executeQuery = this.options.debugMode\n ? (sql, params) => monitorQuery(sql, () => _query(sql, params))\n : _query;\n const getAll = async (query, params) => {\n var _a, _b;\n const result = await executeQuery(query, params);\n return (_b = (_a = result.rows) === null || _a === void 0 ? void 0 : _a._array) !== null && _b !== void 0 ? _b : [];\n };\n const getOptional = async (query, params) => {\n const results = await getAll(query, params);\n return results.length > 0 ? results[0] : null;\n };\n const get = async (query, params) => {\n const result = await getOptional(query, params);\n if (!result) {\n throw new Error(`No results for query: ${query}`);\n }\n return result;\n };\n const executeRaw = async (query, params) => {\n var _a, _b;\n // This is a workaround, we don't support multiple columns of the same name\n const results = await execute(query, params);\n return (_b = (_a = results.rows) === null || _a === void 0 ? void 0 : _a._array.map((row) => Object.values(row))) !== null && _b !== void 0 ? _b : [];\n };\n const executeBatch = async (query, params = []) => {\n var _a, _b, _c;\n let result = await db.executeSet(params.map((param) => ({\n statement: query,\n values: param\n })));\n return {\n rowsAffected: (_b = (_a = result.changes) === null || _a === void 0 ? void 0 : _a.changes) !== null && _b !== void 0 ? _b : 0,\n insertId: (_c = result.changes) === null || _c === void 0 ? void 0 : _c.lastId\n };\n };\n return {\n getAll,\n getOptional,\n get,\n executeRaw,\n execute,\n executeBatch\n };\n }\n readLock(fn, options) {\n return this.readMutex.runExclusive(async () => {\n await this.initializedPromise;\n return fn(this.generateLockContext(this.readConnection));\n }, timeoutSignal(options === null || options === void 0 ? void 0 : options.timeoutMs));\n }\n writeLock(fn, options) {\n return this.writeMutex.runExclusive(async () => {\n var _a;\n await this.initializedPromise;\n const result = await fn(this.generateLockContext(this.writeConnection));\n // Fetch table updates\n const updates = await this.writeConnection.query(\"SELECT powersync_update_hooks('get') AS table_name\");\n const jsonUpdates = (_a = updates.values) === null || _a === void 0 ? void 0 : _a[0];\n if (!jsonUpdates || !jsonUpdates.table_name) {\n throw new Error('Could not fetch table updates');\n }\n const notification = {\n rawUpdates: [],\n tables: JSON.parse(jsonUpdates.table_name),\n groupedUpdates: {}\n };\n this.iterateListeners((l) => { var _a; return (_a = l.tablesUpdated) === null || _a === void 0 ? void 0 : _a.call(l, notification); });\n return result;\n }, timeoutSignal(options === null || options === void 0 ? void 0 : options.timeoutMs));\n }\n refreshSchema() {\n return this.writeLock(async (writeTx) => {\n return this.readLock(async (readTx) => {\n const updateQuery = `PRAGMA table_info('sqlite_master')`;\n await writeTx.get(updateQuery);\n await readTx.get(updateQuery);\n });\n });\n }\n}\n/**\n * An implementation of {@link DBAdapter} using the Capacitor Community SQLite [plugin](https://github.com/capacitor-community/sqlite).\n *\n * @experimental\n * @alpha This is currently experimental and may change without a major version bump.\n */\nexport class CapacitorSQLiteAdapter extends DBAdapterDefaultMixin(CapacitorConnectionPool) {\n}\n//# sourceMappingURL=CapacitorSQLiteAdapter.js.map","import { AbstractStreamingSyncImplementation, LockType, Mutex } from '@powersync/web';\nconst GLOBAL_MUTEX_STORE = new Map();\n/**\n * Used to identify multiple instances of CapacitorStreamingSyncImplementation\n */\nlet _CAPACITOR_STREAMING_SYNC_SEQUENCE = 0;\nexport class CapacitorStreamingSyncImplementation extends AbstractStreamingSyncImplementation {\n constructor() {\n super(...arguments);\n // A unique ID for tacking this specific instance of CapacitorStreamingSyncImplementation\n this.instanceId = _CAPACITOR_STREAMING_SYNC_SEQUENCE++;\n }\n async dispose() {\n await super.dispose();\n // Clear up any global mutexes which aren't used anymore\n for (const mutexEntry of GLOBAL_MUTEX_STORE.entries()) {\n const [identifier, mutex] = mutexEntry;\n if (!mutex.tracking.has(this.instanceId)) {\n continue;\n }\n mutex.tracking.delete(this.instanceId);\n if (mutex.tracking.size == 0) {\n GLOBAL_MUTEX_STORE.delete(identifier);\n }\n }\n }\n async obtainLock(lockOptions) {\n // If we don't have an identifier for some reason (should not happen), we use a shared Mutex\n const { identifier: baseIdentifier = 'DEFAULT' } = this.options;\n if (!GLOBAL_MUTEX_STORE.has(baseIdentifier)) {\n GLOBAL_MUTEX_STORE.set(baseIdentifier, {\n tracking: new Set([this.instanceId]),\n locks: {\n [LockType.CRUD]: new Mutex(),\n [LockType.SYNC]: new Mutex()\n }\n });\n }\n const mutexRecord = GLOBAL_MUTEX_STORE.get(baseIdentifier);\n mutexRecord.tracking.add(this.instanceId);\n const mutex = mutexRecord.locks[lockOptions.type];\n return mutex.runExclusive(async () => {\n return await lockOptions.callback();\n }, lockOptions.signal);\n }\n}\n//# sourceMappingURL=CapacitorSyncImplementation.js.map","import { Capacitor } from '@capacitor/core';\nimport { MEMORY_TRIGGER_CLAIM_MANAGER, PowerSyncDatabase as WebPowerSyncDatabase, WebRemote } from '@powersync/web';\nimport { CapacitorSQLiteAdapter } from './adapter/CapacitorSQLiteAdapter.js';\nimport { CapacitorStreamingSyncImplementation } from './sync/CapacitorSyncImplementation.js';\n/**\n * PowerSyncDatabase class for managing database connections and sync implementations.\n * This extends the WebPowerSyncDatabase to provide platform-specific implementations\n * for Capacitor environments (iOS and Android).\n *\n * @experimental\n * @alpha\n */\nexport class PowerSyncDatabase extends WebPowerSyncDatabase {\n get isNativeCapacitorPlatform() {\n const platform = Capacitor.getPlatform();\n return platform == 'ios' || platform == 'android';\n }\n openDBAdapter(options) {\n var _a, _b, _c;\n const platform = Capacitor.getPlatform();\n if (platform == 'ios' || platform == 'android') {\n if (options.database.dbLocation) {\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.warn(`\n dbLocation is ignored on iOS and Android platforms. \n The database directory can be configured in the Capacitor project.\n See https://github.com/capacitor-community/sqlite?tab=readme-ov-file#installation`);\n }\n (_b = options.logger) === null || _b === void 0 ? void 0 : _b.debug(`Using CapacitorSQLiteAdapter for platform: ${platform}`);\n return new CapacitorSQLiteAdapter(Object.assign({}, options.database));\n }\n else {\n (_c = options.logger) === null || _c === void 0 ? void 0 : _c.debug(`Using default web adapter for web platform`);\n return super.openDBAdapter(options);\n }\n }\n generateTriggerManagerConfig() {\n const config = super.generateTriggerManagerConfig();\n if (this.isNativeCapacitorPlatform) {\n /**\n * We usually only ever have a single tab for capacitor.\n * Avoiding navigator locks allows insecure contexts (during development).\n */\n config.claimManager = MEMORY_TRIGGER_CLAIM_MANAGER;\n }\n return config;\n }\n runExclusive(cb) {\n if (this.isNativeCapacitorPlatform) {\n // Use mutex for mobile platforms.\n // This is mainly for testing purposes since navigator.locks require secure contexts.\n return this.runExclusiveMutex.runExclusive(cb);\n }\n else {\n // Use navigator.locks for web platform\n return super.runExclusive(cb);\n }\n }\n generateSyncStreamImplementation(connector, options) {\n var _a;\n if (this.isNativeCapacitorPlatform) {\n // We don't want to support multi-tab on mobile platforms.\n // We technically can, but it's not a common use case and requires additional work/testing.\n this.logger.debug(`Using Capacitor sync implementation`);\n if ((_a = this.options.flags) === null || _a === void 0 ? void 0 : _a.enableMultiTabs) {\n this.logger.warn(`enableMultiTabs is not supported on Capacitor mobile platforms. Ignoring the flag.`);\n }\n const remote = new WebRemote(connector, this.logger);\n return new CapacitorStreamingSyncImplementation(Object.assign(Object.assign({}, this.options), { retryDelayMs: options.retryDelayMs, crudUploadThrottleMs: options.crudUploadThrottleMs, adapter: this.bucketStorageAdapter, remote, uploadCrud: async () => {\n await this.waitForReady();\n await connector.uploadData(this);\n }, identifier: this.database.name, logger: this.logger, subscriptions: options.subscriptions }));\n }\n else {\n this.logger.debug(`Using default web sync implementation for web platform`);\n return super.generateSyncStreamImplementation(connector, options);\n }\n }\n}\n//# sourceMappingURL=PowerSyncDatabase.js.map","import { WebPlugin } from '@capacitor/core';\nexport class PowerSyncWeb extends WebPlugin {\n async registerCore() {\n throw new Error('This code path is not supported on web.');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","BaseObserver","Mutex","sqlite","SQLiteConnection","CapacitorSQLite","Capacitor","timeoutSignal","DBAdapterDefaultMixin","AbstractStreamingSyncImplementation","LockType","WebPowerSyncDatabase","MEMORY_TRIGGER_CLAIM_MANAGER","WebRemote","WebPlugin"],"mappings":"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"}
|
package/dist/plugin.d.cts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { SQLiteDBConnection } from '@capacitor-community/sqlite';
|
|
2
|
-
import { SQLOpenOptions, SQLOpenFactory, DBAdapter,
|
|
3
|
-
import { Mutex } from 'async-mutex';
|
|
2
|
+
import { SQLOpenOptions, SQLOpenFactory, DBAdapter, Transaction, DBLockOptions, QueryResult, LockContext, DBAdapterListener, BaseObserver, ConnectionPool, Mutex, PowerSyncDatabase as PowerSyncDatabase$1, WebPowerSyncDatabaseOptionsWithSettings, TriggerManagerConfig, PowerSyncBackendConnector, RequiredAdditionalConnectionOptions, StreamingSyncImplementation } from '@powersync/web';
|
|
4
3
|
|
|
5
4
|
declare enum SqliteSynchronous {
|
|
6
5
|
normal = "NORMAL",
|
|
@@ -35,13 +34,7 @@ declare class CapacitorSQLiteOpenFactory implements SQLOpenFactory {
|
|
|
35
34
|
openDB(): DBAdapter;
|
|
36
35
|
}
|
|
37
36
|
|
|
38
|
-
|
|
39
|
-
* An implementation of {@link DBAdapter} using the Capacitor Community SQLite [plugin](https://github.com/capacitor-community/sqlite).
|
|
40
|
-
*
|
|
41
|
-
* @experimental
|
|
42
|
-
* @alpha This is currently experimental and may change without a major version bump.
|
|
43
|
-
*/
|
|
44
|
-
declare class CapacitorSQLiteAdapter extends BaseObserver<DBAdapterListener> implements DBAdapter {
|
|
37
|
+
declare class CapacitorConnectionPool extends BaseObserver<DBAdapterListener> implements ConnectionPool {
|
|
45
38
|
protected options: CapacitorSQLiteOpenFactoryOptions;
|
|
46
39
|
protected _writeConnection: SQLiteDBConnection | null;
|
|
47
40
|
protected _readConnection: SQLiteDBConnection | null;
|
|
@@ -55,18 +48,33 @@ declare class CapacitorSQLiteAdapter extends BaseObserver<DBAdapterListener> imp
|
|
|
55
48
|
private init;
|
|
56
49
|
close(): Promise<void>;
|
|
57
50
|
protected generateLockContext(db: SQLiteDBConnection): LockContext;
|
|
58
|
-
execute(query: string, params?: any[]): Promise<QueryResult>;
|
|
59
|
-
executeRaw(query: string, params?: any[]): Promise<any[][]>;
|
|
60
|
-
executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
|
|
61
51
|
readLock<T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions): Promise<T>;
|
|
62
|
-
readTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
|
|
63
52
|
writeLock<T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions): Promise<T>;
|
|
64
|
-
writeTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
|
|
65
53
|
refreshSchema(): Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
declare const CapacitorSQLiteAdapter_base: (new (...args: any[]) => {
|
|
56
|
+
readTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
|
|
57
|
+
writeTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
|
|
66
58
|
getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
|
|
67
59
|
getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
|
|
68
60
|
get<T>(sql: string, parameters?: any[]): Promise<T>;
|
|
69
|
-
|
|
61
|
+
execute(query: string, params?: any[]): Promise<QueryResult>;
|
|
62
|
+
executeRaw(query: string, params?: any[]): Promise<any[][]>;
|
|
63
|
+
executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
|
|
64
|
+
name: string;
|
|
65
|
+
close: () => void | Promise<void>;
|
|
66
|
+
readLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
67
|
+
writeLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
68
|
+
refreshSchema: () => Promise<void>;
|
|
69
|
+
registerListener(listener: Partial<DBAdapterListener>): () => void;
|
|
70
|
+
}) & typeof CapacitorConnectionPool;
|
|
71
|
+
/**
|
|
72
|
+
* An implementation of {@link DBAdapter} using the Capacitor Community SQLite [plugin](https://github.com/capacitor-community/sqlite).
|
|
73
|
+
*
|
|
74
|
+
* @experimental
|
|
75
|
+
* @alpha This is currently experimental and may change without a major version bump.
|
|
76
|
+
*/
|
|
77
|
+
declare class CapacitorSQLiteAdapter extends CapacitorSQLiteAdapter_base {
|
|
70
78
|
}
|
|
71
79
|
|
|
72
80
|
/**
|
package/dist/plugin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var capacitorPowerSync = (function (exports, sqlite, core, web$1
|
|
1
|
+
var capacitorPowerSync = (function (exports, sqlite, core, web$1) {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
const PowerSyncCore = core.registerPlugin('PowerSync', {
|
|
@@ -49,20 +49,14 @@ var capacitorPowerSync = (function (exports, sqlite, core, web$1, asyncMutex) {
|
|
|
49
49
|
throw e;
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
* An implementation of {@link DBAdapter} using the Capacitor Community SQLite [plugin](https://github.com/capacitor-community/sqlite).
|
|
54
|
-
*
|
|
55
|
-
* @experimental
|
|
56
|
-
* @alpha This is currently experimental and may change without a major version bump.
|
|
57
|
-
*/
|
|
58
|
-
class CapacitorSQLiteAdapter extends web$1.BaseObserver {
|
|
52
|
+
class CapacitorConnectionPool extends web$1.BaseObserver {
|
|
59
53
|
constructor(options) {
|
|
60
54
|
super();
|
|
61
55
|
this.options = options;
|
|
62
56
|
this._writeConnection = null;
|
|
63
57
|
this._readConnection = null;
|
|
64
|
-
this.writeMutex = new
|
|
65
|
-
this.readMutex = new
|
|
58
|
+
this.writeMutex = new web$1.Mutex();
|
|
59
|
+
this.readMutex = new web$1.Mutex();
|
|
66
60
|
this.initializedPromise = this.init();
|
|
67
61
|
}
|
|
68
62
|
get writeConnection() {
|
|
@@ -200,24 +194,9 @@ var capacitorPowerSync = (function (exports, sqlite, core, web$1, asyncMutex) {
|
|
|
200
194
|
const results = await execute(query, params);
|
|
201
195
|
return (_b = (_a = results.rows) === null || _a === void 0 ? void 0 : _a._array.map((row) => Object.values(row))) !== null && _b !== void 0 ? _b : [];
|
|
202
196
|
};
|
|
203
|
-
|
|
204
|
-
getAll,
|
|
205
|
-
getOptional,
|
|
206
|
-
get,
|
|
207
|
-
executeRaw,
|
|
208
|
-
execute
|
|
209
|
-
};
|
|
210
|
-
}
|
|
211
|
-
execute(query, params) {
|
|
212
|
-
return this.writeLock((tx) => tx.execute(query, params));
|
|
213
|
-
}
|
|
214
|
-
executeRaw(query, params) {
|
|
215
|
-
return this.writeLock((tx) => tx.executeRaw(query, params));
|
|
216
|
-
}
|
|
217
|
-
async executeBatch(query, params = []) {
|
|
218
|
-
return this.writeLock(async (tx) => {
|
|
197
|
+
const executeBatch = async (query, params = []) => {
|
|
219
198
|
var _a, _b, _c;
|
|
220
|
-
let result = await
|
|
199
|
+
let result = await db.executeSet(params.map((param) => ({
|
|
221
200
|
statement: query,
|
|
222
201
|
values: param
|
|
223
202
|
})));
|
|
@@ -225,21 +204,24 @@ var capacitorPowerSync = (function (exports, sqlite, core, web$1, asyncMutex) {
|
|
|
225
204
|
rowsAffected: (_b = (_a = result.changes) === null || _a === void 0 ? void 0 : _a.changes) !== null && _b !== void 0 ? _b : 0,
|
|
226
205
|
insertId: (_c = result.changes) === null || _c === void 0 ? void 0 : _c.lastId
|
|
227
206
|
};
|
|
228
|
-
}
|
|
207
|
+
};
|
|
208
|
+
return {
|
|
209
|
+
getAll,
|
|
210
|
+
getOptional,
|
|
211
|
+
get,
|
|
212
|
+
executeRaw,
|
|
213
|
+
execute,
|
|
214
|
+
executeBatch
|
|
215
|
+
};
|
|
229
216
|
}
|
|
230
217
|
readLock(fn, options) {
|
|
231
|
-
return
|
|
218
|
+
return this.readMutex.runExclusive(async () => {
|
|
232
219
|
await this.initializedPromise;
|
|
233
|
-
return
|
|
234
|
-
}, options);
|
|
235
|
-
}
|
|
236
|
-
readTransaction(fn, options) {
|
|
237
|
-
return this.readLock(async (ctx) => {
|
|
238
|
-
return this.internalTransaction(ctx, fn);
|
|
239
|
-
});
|
|
220
|
+
return fn(this.generateLockContext(this.readConnection));
|
|
221
|
+
}, web$1.timeoutSignal(options === null || options === void 0 ? void 0 : options.timeoutMs));
|
|
240
222
|
}
|
|
241
223
|
writeLock(fn, options) {
|
|
242
|
-
return
|
|
224
|
+
return this.writeMutex.runExclusive(async () => {
|
|
243
225
|
var _a;
|
|
244
226
|
await this.initializedPromise;
|
|
245
227
|
const result = await fn(this.generateLockContext(this.writeConnection));
|
|
@@ -256,12 +238,7 @@ var capacitorPowerSync = (function (exports, sqlite, core, web$1, asyncMutex) {
|
|
|
256
238
|
};
|
|
257
239
|
this.iterateListeners((l) => { var _a; return (_a = l.tablesUpdated) === null || _a === void 0 ? void 0 : _a.call(l, notification); });
|
|
258
240
|
return result;
|
|
259
|
-
}, options);
|
|
260
|
-
}
|
|
261
|
-
writeTransaction(fn, options) {
|
|
262
|
-
return this.writeLock(async (ctx) => {
|
|
263
|
-
return this.internalTransaction(ctx, fn);
|
|
264
|
-
});
|
|
241
|
+
}, web$1.timeoutSignal(options === null || options === void 0 ? void 0 : options.timeoutMs));
|
|
265
242
|
}
|
|
266
243
|
refreshSchema() {
|
|
267
244
|
return this.writeLock(async (writeTx) => {
|
|
@@ -272,49 +249,14 @@ var capacitorPowerSync = (function (exports, sqlite, core, web$1, asyncMutex) {
|
|
|
272
249
|
});
|
|
273
250
|
});
|
|
274
251
|
}
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}
|
|
284
|
-
async internalTransaction(ctx, fn) {
|
|
285
|
-
let finalized = false;
|
|
286
|
-
const commit = async () => {
|
|
287
|
-
if (finalized) {
|
|
288
|
-
return { rowsAffected: 0 };
|
|
289
|
-
}
|
|
290
|
-
finalized = true;
|
|
291
|
-
return ctx.execute('COMMIT');
|
|
292
|
-
};
|
|
293
|
-
const rollback = async () => {
|
|
294
|
-
if (finalized) {
|
|
295
|
-
return { rowsAffected: 0 };
|
|
296
|
-
}
|
|
297
|
-
finalized = true;
|
|
298
|
-
return ctx.execute('ROLLBACK');
|
|
299
|
-
};
|
|
300
|
-
try {
|
|
301
|
-
await ctx.execute('BEGIN');
|
|
302
|
-
const result = await fn(Object.assign(Object.assign({}, ctx), { commit,
|
|
303
|
-
rollback }));
|
|
304
|
-
await commit();
|
|
305
|
-
return result;
|
|
306
|
-
}
|
|
307
|
-
catch (ex) {
|
|
308
|
-
try {
|
|
309
|
-
await rollback();
|
|
310
|
-
}
|
|
311
|
-
catch (ex2) {
|
|
312
|
-
// In rare cases, a rollback may fail.
|
|
313
|
-
// Safe to ignore.
|
|
314
|
-
}
|
|
315
|
-
throw ex;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* An implementation of {@link DBAdapter} using the Capacitor Community SQLite [plugin](https://github.com/capacitor-community/sqlite).
|
|
255
|
+
*
|
|
256
|
+
* @experimental
|
|
257
|
+
* @alpha This is currently experimental and may change without a major version bump.
|
|
258
|
+
*/
|
|
259
|
+
class CapacitorSQLiteAdapter extends web$1.DBAdapterDefaultMixin(CapacitorConnectionPool) {
|
|
318
260
|
}
|
|
319
261
|
|
|
320
262
|
const GLOBAL_MUTEX_STORE = new Map();
|
|
@@ -349,21 +291,17 @@ var capacitorPowerSync = (function (exports, sqlite, core, web$1, asyncMutex) {
|
|
|
349
291
|
GLOBAL_MUTEX_STORE.set(baseIdentifier, {
|
|
350
292
|
tracking: new Set([this.instanceId]),
|
|
351
293
|
locks: {
|
|
352
|
-
[web$1.LockType.CRUD]: new
|
|
353
|
-
[web$1.LockType.SYNC]: new
|
|
294
|
+
[web$1.LockType.CRUD]: new web$1.Mutex(),
|
|
295
|
+
[web$1.LockType.SYNC]: new web$1.Mutex()
|
|
354
296
|
}
|
|
355
297
|
});
|
|
356
298
|
}
|
|
357
299
|
const mutexRecord = GLOBAL_MUTEX_STORE.get(baseIdentifier);
|
|
358
300
|
mutexRecord.tracking.add(this.instanceId);
|
|
359
301
|
const mutex = mutexRecord.locks[lockOptions.type];
|
|
360
|
-
return
|
|
361
|
-
var _a;
|
|
362
|
-
if ((_a = lockOptions.signal) === null || _a === void 0 ? void 0 : _a.aborted) {
|
|
363
|
-
throw new Error('Aborted');
|
|
364
|
-
}
|
|
302
|
+
return mutex.runExclusive(async () => {
|
|
365
303
|
return await lockOptions.callback();
|
|
366
|
-
});
|
|
304
|
+
}, lockOptions.signal);
|
|
367
305
|
}
|
|
368
306
|
}
|
|
369
307
|
|
|
@@ -459,5 +397,5 @@ var capacitorPowerSync = (function (exports, sqlite, core, web$1, asyncMutex) {
|
|
|
459
397
|
|
|
460
398
|
return exports;
|
|
461
399
|
|
|
462
|
-
})({}, sqlite, capacitorExports, web$1
|
|
400
|
+
})({}, sqlite, capacitorExports, web$1);
|
|
463
401
|
//# sourceMappingURL=plugin.js.map
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/plugin/PowerSyncCore.js","esm/plugin/PowerSyncPlugin.js","esm/adapter/CapacitorSQLiteOpenFactory.js","esm/adapter/CapacitorSQLiteAdapter.js","esm/sync/CapacitorSyncImplementation.js","esm/PowerSyncDatabase.js","esm/plugin/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nexport const PowerSyncCore = registerPlugin('PowerSync', {\n web: () => import('./web.js').then((m) => new m.PowerSyncWeb())\n});\n//# sourceMappingURL=PowerSyncCore.js.map","export const messageForErrorCode = (code) => {\n switch (code) {\n case 0:\n return 'Success';\n default:\n return `Extension registration failed with SQLite error code: ${code}`;\n }\n};\n//# sourceMappingURL=PowerSyncPlugin.js.map","import { CapacitorSQLiteAdapter } from './CapacitorSQLiteAdapter.js';\nvar SqliteSynchronous;\n(function (SqliteSynchronous) {\n SqliteSynchronous[\"normal\"] = \"NORMAL\";\n SqliteSynchronous[\"full\"] = \"FULL\";\n SqliteSynchronous[\"off\"] = \"OFF\";\n})(SqliteSynchronous || (SqliteSynchronous = {}));\nexport const DEFAULT_SQLITE_OPTIONS = {\n journalSizeLimit: 6 * 1024 * 1024,\n synchronous: SqliteSynchronous.normal,\n cacheSizeKb: 50 * 1024\n};\nexport class CapacitorSQLiteOpenFactory {\n constructor(options) {\n this.options = options;\n }\n openDB() {\n return new CapacitorSQLiteAdapter(this.options);\n }\n}\n//# sourceMappingURL=CapacitorSQLiteOpenFactory.js.map","import { CapacitorSQLite, SQLiteConnection } from '@capacitor-community/sqlite';\nimport { Capacitor } from '@capacitor/core';\nimport { BaseObserver, mutexRunExclusive } from '@powersync/web';\nimport { Mutex } from 'async-mutex';\nimport { PowerSyncCore } from '../plugin/PowerSyncCore.js';\nimport { messageForErrorCode } from '../plugin/PowerSyncPlugin.js';\nimport { DEFAULT_SQLITE_OPTIONS } from './CapacitorSQLiteOpenFactory.js';\n/**\n * Monitors the execution time of a query and logs it to the performance timeline.\n */\nasync function monitorQuery(sql, executor) {\n const start = performance.now();\n try {\n const r = await executor();\n performance.measure(`[SQL] ${sql}`, { start });\n return r;\n }\n catch (e) {\n performance.measure(`[SQL] [ERROR: ${e.message}] ${sql}`, { start });\n throw e;\n }\n}\n/**\n * An implementation of {@link DBAdapter} using the Capacitor Community SQLite [plugin](https://github.com/capacitor-community/sqlite).\n *\n * @experimental\n * @alpha This is currently experimental and may change without a major version bump.\n */\nexport class CapacitorSQLiteAdapter extends BaseObserver {\n constructor(options) {\n super();\n this.options = options;\n this._writeConnection = null;\n this._readConnection = null;\n this.writeMutex = new Mutex();\n this.readMutex = new Mutex();\n this.initializedPromise = this.init();\n }\n get writeConnection() {\n if (!this._writeConnection) {\n throw new Error('Init not completed yet');\n }\n return this._writeConnection;\n }\n get readConnection() {\n if (!this._readConnection) {\n throw new Error('Init not completed yet');\n }\n return this._readConnection;\n }\n get name() {\n return this.options.dbFilename;\n }\n async init() {\n const { responseCode: registrationResponseCode } = await PowerSyncCore.registerCore();\n if (registrationResponseCode != 0) {\n throw new Error(`Could not register PowerSync core extension: ${messageForErrorCode(registrationResponseCode)}`);\n }\n const sqlite = new SQLiteConnection(CapacitorSQLite);\n // It seems like the isConnection and retrieveConnection methods\n // only check a JS side map of connections.\n // On hot reload this JS cache can be cleared, while the connection\n // still exists natively. and `createConnection` will fail if it already exists.\n await sqlite.closeConnection(this.options.dbFilename, false).catch(() => { });\n await sqlite.closeConnection(this.options.dbFilename, true).catch(() => { });\n // TODO support encryption eventually\n this._writeConnection = await sqlite.createConnection(this.options.dbFilename, false, 'no-encryption', 1, false);\n this._readConnection = await sqlite.createConnection(this.options.dbFilename, false, 'no-encryption', 1, true);\n await this._writeConnection.open();\n const { cacheSizeKb, journalSizeLimit, synchronous } = Object.assign(Object.assign({}, DEFAULT_SQLITE_OPTIONS), this.options.sqliteOptions);\n await this.writeConnection.query('PRAGMA journal_mode = WAL');\n await this.writeConnection.query(`PRAGMA journal_size_limit = ${journalSizeLimit}`);\n await this.writeConnection.query(`PRAGMA temp_store = memory`);\n await this.writeConnection.query(`PRAGMA synchronous = ${synchronous}`);\n await this.writeConnection.query(`PRAGMA cache_size = -${cacheSizeKb}`);\n await this._readConnection.open();\n const platform = Capacitor.getPlatform();\n if (platform == 'android') {\n /**\n * SQLCipher for Android enables dynamic loading of extensions.\n * On iOS we use a static auto extension registration.\n */\n const extensionQuery = \"SELECT load_extension('libpowersync.so', 'sqlite3_powersync_init')\";\n await this.writeConnection.query(extensionQuery);\n await this.readConnection.query(extensionQuery);\n }\n await this.writeConnection.query(\"SELECT powersync_update_hooks('install')\");\n }\n async close() {\n await this.initializedPromise;\n await this.writeConnection.close();\n await this.readConnection.close();\n }\n generateLockContext(db) {\n const _query = async (query, params = []) => {\n var _a;\n const result = await db.query(query, params);\n const arrayResult = (_a = result.values) !== null && _a !== void 0 ? _a : [];\n return {\n rowsAffected: 0,\n rows: {\n _array: arrayResult,\n length: arrayResult.length,\n item: (idx) => arrayResult[idx]\n }\n };\n };\n const _execute = async (query, params = []) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const platform = Capacitor.getPlatform();\n if (db.getConnectionReadOnly()) {\n return _query(query, params);\n }\n if (platform == 'android') {\n // Android: use query for SELECT and executeSet for mutations\n // We cannot use `run` here for both cases.\n if (query.toLowerCase().trim().startsWith('select')) {\n return _query(query, params);\n }\n else {\n const result = await db.executeSet([{ statement: query, values: params }], false);\n return {\n insertId: (_a = result.changes) === null || _a === void 0 ? void 0 : _a.lastId,\n rowsAffected: (_c = (_b = result.changes) === null || _b === void 0 ? void 0 : _b.changes) !== null && _c !== void 0 ? _c : 0,\n rows: {\n _array: [],\n length: 0,\n item: () => null\n }\n };\n }\n }\n // iOS (and other platforms): use run(\"all\")\n const result = await db.run(query, params, false, 'all');\n const resultSet = (_e = (_d = result.changes) === null || _d === void 0 ? void 0 : _d.values) !== null && _e !== void 0 ? _e : [];\n return {\n insertId: (_f = result.changes) === null || _f === void 0 ? void 0 : _f.lastId,\n rowsAffected: (_h = (_g = result.changes) === null || _g === void 0 ? void 0 : _g.changes) !== null && _h !== void 0 ? _h : 0,\n rows: {\n _array: resultSet,\n length: resultSet.length,\n item: (idx) => resultSet[idx]\n }\n };\n };\n const execute = this.options.debugMode\n ? (sql, params) => monitorQuery(sql, () => _execute(sql, params))\n : _execute;\n const executeQuery = this.options.debugMode\n ? (sql, params) => monitorQuery(sql, () => _query(sql, params))\n : _query;\n const getAll = async (query, params) => {\n var _a, _b;\n const result = await executeQuery(query, params);\n return (_b = (_a = result.rows) === null || _a === void 0 ? void 0 : _a._array) !== null && _b !== void 0 ? _b : [];\n };\n const getOptional = async (query, params) => {\n const results = await getAll(query, params);\n return results.length > 0 ? results[0] : null;\n };\n const get = async (query, params) => {\n const result = await getOptional(query, params);\n if (!result) {\n throw new Error(`No results for query: ${query}`);\n }\n return result;\n };\n const executeRaw = async (query, params) => {\n var _a, _b;\n // This is a workaround, we don't support multiple columns of the same name\n const results = await execute(query, params);\n return (_b = (_a = results.rows) === null || _a === void 0 ? void 0 : _a._array.map((row) => Object.values(row))) !== null && _b !== void 0 ? _b : [];\n };\n return {\n getAll,\n getOptional,\n get,\n executeRaw,\n execute\n };\n }\n execute(query, params) {\n return this.writeLock((tx) => tx.execute(query, params));\n }\n executeRaw(query, params) {\n return this.writeLock((tx) => tx.executeRaw(query, params));\n }\n async executeBatch(query, params = []) {\n return this.writeLock(async (tx) => {\n var _a, _b, _c;\n let result = await this.writeConnection.executeSet(params.map((param) => ({\n statement: query,\n values: param\n })));\n return {\n rowsAffected: (_b = (_a = result.changes) === null || _a === void 0 ? void 0 : _a.changes) !== null && _b !== void 0 ? _b : 0,\n insertId: (_c = result.changes) === null || _c === void 0 ? void 0 : _c.lastId\n };\n });\n }\n readLock(fn, options) {\n return mutexRunExclusive(this.readMutex, async () => {\n await this.initializedPromise;\n return await fn(this.generateLockContext(this.readConnection));\n }, options);\n }\n readTransaction(fn, options) {\n return this.readLock(async (ctx) => {\n return this.internalTransaction(ctx, fn);\n });\n }\n writeLock(fn, options) {\n return mutexRunExclusive(this.writeMutex, async () => {\n var _a;\n await this.initializedPromise;\n const result = await fn(this.generateLockContext(this.writeConnection));\n // Fetch table updates\n const updates = await this.writeConnection.query(\"SELECT powersync_update_hooks('get') AS table_name\");\n const jsonUpdates = (_a = updates.values) === null || _a === void 0 ? void 0 : _a[0];\n if (!jsonUpdates || !jsonUpdates.table_name) {\n throw new Error('Could not fetch table updates');\n }\n const notification = {\n rawUpdates: [],\n tables: JSON.parse(jsonUpdates.table_name),\n groupedUpdates: {}\n };\n this.iterateListeners((l) => { var _a; return (_a = l.tablesUpdated) === null || _a === void 0 ? void 0 : _a.call(l, notification); });\n return result;\n }, options);\n }\n writeTransaction(fn, options) {\n return this.writeLock(async (ctx) => {\n return this.internalTransaction(ctx, fn);\n });\n }\n refreshSchema() {\n return this.writeLock(async (writeTx) => {\n return this.readLock(async (readTx) => {\n const updateQuery = `PRAGMA table_info('sqlite_master')`;\n await writeTx.get(updateQuery);\n await readTx.get(updateQuery);\n });\n });\n }\n getAll(sql, parameters) {\n return this.readLock((tx) => tx.getAll(sql, parameters));\n }\n getOptional(sql, parameters) {\n return this.readLock((tx) => tx.getOptional(sql, parameters));\n }\n get(sql, parameters) {\n return this.readLock((tx) => tx.get(sql, parameters));\n }\n async internalTransaction(ctx, fn) {\n let finalized = false;\n const commit = async () => {\n if (finalized) {\n return { rowsAffected: 0 };\n }\n finalized = true;\n return ctx.execute('COMMIT');\n };\n const rollback = async () => {\n if (finalized) {\n return { rowsAffected: 0 };\n }\n finalized = true;\n return ctx.execute('ROLLBACK');\n };\n try {\n await ctx.execute('BEGIN');\n const result = await fn(Object.assign(Object.assign({}, ctx), { commit,\n rollback }));\n await commit();\n return result;\n }\n catch (ex) {\n try {\n await rollback();\n }\n catch (ex2) {\n // In rare cases, a rollback may fail.\n // Safe to ignore.\n }\n throw ex;\n }\n }\n}\n//# sourceMappingURL=CapacitorSQLiteAdapter.js.map","import { AbstractStreamingSyncImplementation, LockType, mutexRunExclusive } from '@powersync/web';\nimport { Mutex } from 'async-mutex';\nconst GLOBAL_MUTEX_STORE = new Map();\n/**\n * Used to identify multiple instances of CapacitorStreamingSyncImplementation\n */\nlet _CAPACITOR_STREAMING_SYNC_SEQUENCE = 0;\nexport class CapacitorStreamingSyncImplementation extends AbstractStreamingSyncImplementation {\n constructor() {\n super(...arguments);\n // A unique ID for tacking this specific instance of CapacitorStreamingSyncImplementation\n this.instanceId = _CAPACITOR_STREAMING_SYNC_SEQUENCE++;\n }\n async dispose() {\n await super.dispose();\n // Clear up any global mutexes which aren't used anymore\n for (const mutexEntry of GLOBAL_MUTEX_STORE.entries()) {\n const [identifier, mutex] = mutexEntry;\n if (!mutex.tracking.has(this.instanceId)) {\n continue;\n }\n mutex.tracking.delete(this.instanceId);\n if (mutex.tracking.size == 0) {\n GLOBAL_MUTEX_STORE.delete(identifier);\n }\n }\n }\n async obtainLock(lockOptions) {\n // If we don't have an identifier for some reason (should not happen), we use a shared Mutex\n const { identifier: baseIdentifier = 'DEFAULT' } = this.options;\n if (!GLOBAL_MUTEX_STORE.has(baseIdentifier)) {\n GLOBAL_MUTEX_STORE.set(baseIdentifier, {\n tracking: new Set([this.instanceId]),\n locks: {\n [LockType.CRUD]: new Mutex(),\n [LockType.SYNC]: new Mutex()\n }\n });\n }\n const mutexRecord = GLOBAL_MUTEX_STORE.get(baseIdentifier);\n mutexRecord.tracking.add(this.instanceId);\n const mutex = mutexRecord.locks[lockOptions.type];\n return mutexRunExclusive(mutex, async () => {\n var _a;\n if ((_a = lockOptions.signal) === null || _a === void 0 ? void 0 : _a.aborted) {\n throw new Error('Aborted');\n }\n return await lockOptions.callback();\n });\n }\n}\n//# sourceMappingURL=CapacitorSyncImplementation.js.map","import { Capacitor } from '@capacitor/core';\nimport { MEMORY_TRIGGER_CLAIM_MANAGER, PowerSyncDatabase as WebPowerSyncDatabase, WebRemote } from '@powersync/web';\nimport { CapacitorSQLiteAdapter } from './adapter/CapacitorSQLiteAdapter.js';\nimport { CapacitorStreamingSyncImplementation } from './sync/CapacitorSyncImplementation.js';\n/**\n * PowerSyncDatabase class for managing database connections and sync implementations.\n * This extends the WebPowerSyncDatabase to provide platform-specific implementations\n * for Capacitor environments (iOS and Android).\n *\n * @experimental\n * @alpha\n */\nexport class PowerSyncDatabase extends WebPowerSyncDatabase {\n get isNativeCapacitorPlatform() {\n const platform = Capacitor.getPlatform();\n return platform == 'ios' || platform == 'android';\n }\n openDBAdapter(options) {\n var _a, _b, _c;\n const platform = Capacitor.getPlatform();\n if (platform == 'ios' || platform == 'android') {\n if (options.database.dbLocation) {\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.warn(`\n dbLocation is ignored on iOS and Android platforms. \n The database directory can be configured in the Capacitor project.\n See https://github.com/capacitor-community/sqlite?tab=readme-ov-file#installation`);\n }\n (_b = options.logger) === null || _b === void 0 ? void 0 : _b.debug(`Using CapacitorSQLiteAdapter for platform: ${platform}`);\n return new CapacitorSQLiteAdapter(Object.assign({}, options.database));\n }\n else {\n (_c = options.logger) === null || _c === void 0 ? void 0 : _c.debug(`Using default web adapter for web platform`);\n return super.openDBAdapter(options);\n }\n }\n generateTriggerManagerConfig() {\n const config = super.generateTriggerManagerConfig();\n if (this.isNativeCapacitorPlatform) {\n /**\n * We usually only ever have a single tab for capacitor.\n * Avoiding navigator locks allows insecure contexts (during development).\n */\n config.claimManager = MEMORY_TRIGGER_CLAIM_MANAGER;\n }\n return config;\n }\n runExclusive(cb) {\n if (this.isNativeCapacitorPlatform) {\n // Use mutex for mobile platforms.\n // This is mainly for testing purposes since navigator.locks require secure contexts.\n return this.runExclusiveMutex.runExclusive(cb);\n }\n else {\n // Use navigator.locks for web platform\n return super.runExclusive(cb);\n }\n }\n generateSyncStreamImplementation(connector, options) {\n var _a;\n if (this.isNativeCapacitorPlatform) {\n // We don't want to support multi-tab on mobile platforms.\n // We technically can, but it's not a common use case and requires additional work/testing.\n this.logger.debug(`Using Capacitor sync implementation`);\n if ((_a = this.options.flags) === null || _a === void 0 ? void 0 : _a.enableMultiTabs) {\n this.logger.warn(`enableMultiTabs is not supported on Capacitor mobile platforms. Ignoring the flag.`);\n }\n const remote = new WebRemote(connector, this.logger);\n return new CapacitorStreamingSyncImplementation(Object.assign(Object.assign({}, this.options), { retryDelayMs: options.retryDelayMs, crudUploadThrottleMs: options.crudUploadThrottleMs, adapter: this.bucketStorageAdapter, remote, uploadCrud: async () => {\n await this.waitForReady();\n await connector.uploadData(this);\n }, identifier: this.database.name, logger: this.logger, subscriptions: options.subscriptions }));\n }\n else {\n this.logger.debug(`Using default web sync implementation for web platform`);\n return super.generateSyncStreamImplementation(connector, options);\n }\n }\n}\n//# sourceMappingURL=PowerSyncDatabase.js.map","import { WebPlugin } from '@capacitor/core';\nexport class PowerSyncWeb extends WebPlugin {\n async registerCore() {\n throw new Error('This code path is not supported on web.');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","BaseObserver","Mutex","sqlite","SQLiteConnection","CapacitorSQLite","Capacitor","mutexRunExclusive","AbstractStreamingSyncImplementation","LockType","WebPowerSyncDatabase","MEMORY_TRIGGER_CLAIM_MANAGER","WebRemote","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/plugin/PowerSyncCore.js","esm/plugin/PowerSyncPlugin.js","esm/adapter/CapacitorSQLiteOpenFactory.js","esm/adapter/CapacitorSQLiteAdapter.js","esm/sync/CapacitorSyncImplementation.js","esm/PowerSyncDatabase.js","esm/plugin/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nexport const PowerSyncCore = registerPlugin('PowerSync', {\n web: () => import('./web.js').then((m) => new m.PowerSyncWeb())\n});\n//# sourceMappingURL=PowerSyncCore.js.map","export const messageForErrorCode = (code) => {\n switch (code) {\n case 0:\n return 'Success';\n default:\n return `Extension registration failed with SQLite error code: ${code}`;\n }\n};\n//# sourceMappingURL=PowerSyncPlugin.js.map","import { CapacitorSQLiteAdapter } from './CapacitorSQLiteAdapter.js';\nvar SqliteSynchronous;\n(function (SqliteSynchronous) {\n SqliteSynchronous[\"normal\"] = \"NORMAL\";\n SqliteSynchronous[\"full\"] = \"FULL\";\n SqliteSynchronous[\"off\"] = \"OFF\";\n})(SqliteSynchronous || (SqliteSynchronous = {}));\nexport const DEFAULT_SQLITE_OPTIONS = {\n journalSizeLimit: 6 * 1024 * 1024,\n synchronous: SqliteSynchronous.normal,\n cacheSizeKb: 50 * 1024\n};\nexport class CapacitorSQLiteOpenFactory {\n constructor(options) {\n this.options = options;\n }\n openDB() {\n return new CapacitorSQLiteAdapter(this.options);\n }\n}\n//# sourceMappingURL=CapacitorSQLiteOpenFactory.js.map","import { CapacitorSQLite, SQLiteConnection } from '@capacitor-community/sqlite';\nimport { Capacitor } from '@capacitor/core';\nimport { BaseObserver, DBAdapterDefaultMixin, Mutex, timeoutSignal } from '@powersync/web';\nimport { PowerSyncCore } from '../plugin/PowerSyncCore.js';\nimport { messageForErrorCode } from '../plugin/PowerSyncPlugin.js';\nimport { DEFAULT_SQLITE_OPTIONS } from './CapacitorSQLiteOpenFactory.js';\n/**\n * Monitors the execution time of a query and logs it to the performance timeline.\n */\nasync function monitorQuery(sql, executor) {\n const start = performance.now();\n try {\n const r = await executor();\n performance.measure(`[SQL] ${sql}`, { start });\n return r;\n }\n catch (e) {\n performance.measure(`[SQL] [ERROR: ${e.message}] ${sql}`, { start });\n throw e;\n }\n}\nclass CapacitorConnectionPool extends BaseObserver {\n constructor(options) {\n super();\n this.options = options;\n this._writeConnection = null;\n this._readConnection = null;\n this.writeMutex = new Mutex();\n this.readMutex = new Mutex();\n this.initializedPromise = this.init();\n }\n get writeConnection() {\n if (!this._writeConnection) {\n throw new Error('Init not completed yet');\n }\n return this._writeConnection;\n }\n get readConnection() {\n if (!this._readConnection) {\n throw new Error('Init not completed yet');\n }\n return this._readConnection;\n }\n get name() {\n return this.options.dbFilename;\n }\n async init() {\n const { responseCode: registrationResponseCode } = await PowerSyncCore.registerCore();\n if (registrationResponseCode != 0) {\n throw new Error(`Could not register PowerSync core extension: ${messageForErrorCode(registrationResponseCode)}`);\n }\n const sqlite = new SQLiteConnection(CapacitorSQLite);\n // It seems like the isConnection and retrieveConnection methods\n // only check a JS side map of connections.\n // On hot reload this JS cache can be cleared, while the connection\n // still exists natively. and `createConnection` will fail if it already exists.\n await sqlite.closeConnection(this.options.dbFilename, false).catch(() => { });\n await sqlite.closeConnection(this.options.dbFilename, true).catch(() => { });\n // TODO support encryption eventually\n this._writeConnection = await sqlite.createConnection(this.options.dbFilename, false, 'no-encryption', 1, false);\n this._readConnection = await sqlite.createConnection(this.options.dbFilename, false, 'no-encryption', 1, true);\n await this._writeConnection.open();\n const { cacheSizeKb, journalSizeLimit, synchronous } = Object.assign(Object.assign({}, DEFAULT_SQLITE_OPTIONS), this.options.sqliteOptions);\n await this.writeConnection.query('PRAGMA journal_mode = WAL');\n await this.writeConnection.query(`PRAGMA journal_size_limit = ${journalSizeLimit}`);\n await this.writeConnection.query(`PRAGMA temp_store = memory`);\n await this.writeConnection.query(`PRAGMA synchronous = ${synchronous}`);\n await this.writeConnection.query(`PRAGMA cache_size = -${cacheSizeKb}`);\n await this._readConnection.open();\n const platform = Capacitor.getPlatform();\n if (platform == 'android') {\n /**\n * SQLCipher for Android enables dynamic loading of extensions.\n * On iOS we use a static auto extension registration.\n */\n const extensionQuery = \"SELECT load_extension('libpowersync.so', 'sqlite3_powersync_init')\";\n await this.writeConnection.query(extensionQuery);\n await this.readConnection.query(extensionQuery);\n }\n await this.writeConnection.query(\"SELECT powersync_update_hooks('install')\");\n }\n async close() {\n await this.initializedPromise;\n await this.writeConnection.close();\n await this.readConnection.close();\n }\n generateLockContext(db) {\n const _query = async (query, params = []) => {\n var _a;\n const result = await db.query(query, params);\n const arrayResult = (_a = result.values) !== null && _a !== void 0 ? _a : [];\n return {\n rowsAffected: 0,\n rows: {\n _array: arrayResult,\n length: arrayResult.length,\n item: (idx) => arrayResult[idx]\n }\n };\n };\n const _execute = async (query, params = []) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const platform = Capacitor.getPlatform();\n if (db.getConnectionReadOnly()) {\n return _query(query, params);\n }\n if (platform == 'android') {\n // Android: use query for SELECT and executeSet for mutations\n // We cannot use `run` here for both cases.\n if (query.toLowerCase().trim().startsWith('select')) {\n return _query(query, params);\n }\n else {\n const result = await db.executeSet([{ statement: query, values: params }], false);\n return {\n insertId: (_a = result.changes) === null || _a === void 0 ? void 0 : _a.lastId,\n rowsAffected: (_c = (_b = result.changes) === null || _b === void 0 ? void 0 : _b.changes) !== null && _c !== void 0 ? _c : 0,\n rows: {\n _array: [],\n length: 0,\n item: () => null\n }\n };\n }\n }\n // iOS (and other platforms): use run(\"all\")\n const result = await db.run(query, params, false, 'all');\n const resultSet = (_e = (_d = result.changes) === null || _d === void 0 ? void 0 : _d.values) !== null && _e !== void 0 ? _e : [];\n return {\n insertId: (_f = result.changes) === null || _f === void 0 ? void 0 : _f.lastId,\n rowsAffected: (_h = (_g = result.changes) === null || _g === void 0 ? void 0 : _g.changes) !== null && _h !== void 0 ? _h : 0,\n rows: {\n _array: resultSet,\n length: resultSet.length,\n item: (idx) => resultSet[idx]\n }\n };\n };\n const execute = this.options.debugMode\n ? (sql, params) => monitorQuery(sql, () => _execute(sql, params))\n : _execute;\n const executeQuery = this.options.debugMode\n ? (sql, params) => monitorQuery(sql, () => _query(sql, params))\n : _query;\n const getAll = async (query, params) => {\n var _a, _b;\n const result = await executeQuery(query, params);\n return (_b = (_a = result.rows) === null || _a === void 0 ? void 0 : _a._array) !== null && _b !== void 0 ? _b : [];\n };\n const getOptional = async (query, params) => {\n const results = await getAll(query, params);\n return results.length > 0 ? results[0] : null;\n };\n const get = async (query, params) => {\n const result = await getOptional(query, params);\n if (!result) {\n throw new Error(`No results for query: ${query}`);\n }\n return result;\n };\n const executeRaw = async (query, params) => {\n var _a, _b;\n // This is a workaround, we don't support multiple columns of the same name\n const results = await execute(query, params);\n return (_b = (_a = results.rows) === null || _a === void 0 ? void 0 : _a._array.map((row) => Object.values(row))) !== null && _b !== void 0 ? _b : [];\n };\n const executeBatch = async (query, params = []) => {\n var _a, _b, _c;\n let result = await db.executeSet(params.map((param) => ({\n statement: query,\n values: param\n })));\n return {\n rowsAffected: (_b = (_a = result.changes) === null || _a === void 0 ? void 0 : _a.changes) !== null && _b !== void 0 ? _b : 0,\n insertId: (_c = result.changes) === null || _c === void 0 ? void 0 : _c.lastId\n };\n };\n return {\n getAll,\n getOptional,\n get,\n executeRaw,\n execute,\n executeBatch\n };\n }\n readLock(fn, options) {\n return this.readMutex.runExclusive(async () => {\n await this.initializedPromise;\n return fn(this.generateLockContext(this.readConnection));\n }, timeoutSignal(options === null || options === void 0 ? void 0 : options.timeoutMs));\n }\n writeLock(fn, options) {\n return this.writeMutex.runExclusive(async () => {\n var _a;\n await this.initializedPromise;\n const result = await fn(this.generateLockContext(this.writeConnection));\n // Fetch table updates\n const updates = await this.writeConnection.query(\"SELECT powersync_update_hooks('get') AS table_name\");\n const jsonUpdates = (_a = updates.values) === null || _a === void 0 ? void 0 : _a[0];\n if (!jsonUpdates || !jsonUpdates.table_name) {\n throw new Error('Could not fetch table updates');\n }\n const notification = {\n rawUpdates: [],\n tables: JSON.parse(jsonUpdates.table_name),\n groupedUpdates: {}\n };\n this.iterateListeners((l) => { var _a; return (_a = l.tablesUpdated) === null || _a === void 0 ? void 0 : _a.call(l, notification); });\n return result;\n }, timeoutSignal(options === null || options === void 0 ? void 0 : options.timeoutMs));\n }\n refreshSchema() {\n return this.writeLock(async (writeTx) => {\n return this.readLock(async (readTx) => {\n const updateQuery = `PRAGMA table_info('sqlite_master')`;\n await writeTx.get(updateQuery);\n await readTx.get(updateQuery);\n });\n });\n }\n}\n/**\n * An implementation of {@link DBAdapter} using the Capacitor Community SQLite [plugin](https://github.com/capacitor-community/sqlite).\n *\n * @experimental\n * @alpha This is currently experimental and may change without a major version bump.\n */\nexport class CapacitorSQLiteAdapter extends DBAdapterDefaultMixin(CapacitorConnectionPool) {\n}\n//# sourceMappingURL=CapacitorSQLiteAdapter.js.map","import { AbstractStreamingSyncImplementation, LockType, Mutex } from '@powersync/web';\nconst GLOBAL_MUTEX_STORE = new Map();\n/**\n * Used to identify multiple instances of CapacitorStreamingSyncImplementation\n */\nlet _CAPACITOR_STREAMING_SYNC_SEQUENCE = 0;\nexport class CapacitorStreamingSyncImplementation extends AbstractStreamingSyncImplementation {\n constructor() {\n super(...arguments);\n // A unique ID for tacking this specific instance of CapacitorStreamingSyncImplementation\n this.instanceId = _CAPACITOR_STREAMING_SYNC_SEQUENCE++;\n }\n async dispose() {\n await super.dispose();\n // Clear up any global mutexes which aren't used anymore\n for (const mutexEntry of GLOBAL_MUTEX_STORE.entries()) {\n const [identifier, mutex] = mutexEntry;\n if (!mutex.tracking.has(this.instanceId)) {\n continue;\n }\n mutex.tracking.delete(this.instanceId);\n if (mutex.tracking.size == 0) {\n GLOBAL_MUTEX_STORE.delete(identifier);\n }\n }\n }\n async obtainLock(lockOptions) {\n // If we don't have an identifier for some reason (should not happen), we use a shared Mutex\n const { identifier: baseIdentifier = 'DEFAULT' } = this.options;\n if (!GLOBAL_MUTEX_STORE.has(baseIdentifier)) {\n GLOBAL_MUTEX_STORE.set(baseIdentifier, {\n tracking: new Set([this.instanceId]),\n locks: {\n [LockType.CRUD]: new Mutex(),\n [LockType.SYNC]: new Mutex()\n }\n });\n }\n const mutexRecord = GLOBAL_MUTEX_STORE.get(baseIdentifier);\n mutexRecord.tracking.add(this.instanceId);\n const mutex = mutexRecord.locks[lockOptions.type];\n return mutex.runExclusive(async () => {\n return await lockOptions.callback();\n }, lockOptions.signal);\n }\n}\n//# sourceMappingURL=CapacitorSyncImplementation.js.map","import { Capacitor } from '@capacitor/core';\nimport { MEMORY_TRIGGER_CLAIM_MANAGER, PowerSyncDatabase as WebPowerSyncDatabase, WebRemote } from '@powersync/web';\nimport { CapacitorSQLiteAdapter } from './adapter/CapacitorSQLiteAdapter.js';\nimport { CapacitorStreamingSyncImplementation } from './sync/CapacitorSyncImplementation.js';\n/**\n * PowerSyncDatabase class for managing database connections and sync implementations.\n * This extends the WebPowerSyncDatabase to provide platform-specific implementations\n * for Capacitor environments (iOS and Android).\n *\n * @experimental\n * @alpha\n */\nexport class PowerSyncDatabase extends WebPowerSyncDatabase {\n get isNativeCapacitorPlatform() {\n const platform = Capacitor.getPlatform();\n return platform == 'ios' || platform == 'android';\n }\n openDBAdapter(options) {\n var _a, _b, _c;\n const platform = Capacitor.getPlatform();\n if (platform == 'ios' || platform == 'android') {\n if (options.database.dbLocation) {\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.warn(`\n dbLocation is ignored on iOS and Android platforms. \n The database directory can be configured in the Capacitor project.\n See https://github.com/capacitor-community/sqlite?tab=readme-ov-file#installation`);\n }\n (_b = options.logger) === null || _b === void 0 ? void 0 : _b.debug(`Using CapacitorSQLiteAdapter for platform: ${platform}`);\n return new CapacitorSQLiteAdapter(Object.assign({}, options.database));\n }\n else {\n (_c = options.logger) === null || _c === void 0 ? void 0 : _c.debug(`Using default web adapter for web platform`);\n return super.openDBAdapter(options);\n }\n }\n generateTriggerManagerConfig() {\n const config = super.generateTriggerManagerConfig();\n if (this.isNativeCapacitorPlatform) {\n /**\n * We usually only ever have a single tab for capacitor.\n * Avoiding navigator locks allows insecure contexts (during development).\n */\n config.claimManager = MEMORY_TRIGGER_CLAIM_MANAGER;\n }\n return config;\n }\n runExclusive(cb) {\n if (this.isNativeCapacitorPlatform) {\n // Use mutex for mobile platforms.\n // This is mainly for testing purposes since navigator.locks require secure contexts.\n return this.runExclusiveMutex.runExclusive(cb);\n }\n else {\n // Use navigator.locks for web platform\n return super.runExclusive(cb);\n }\n }\n generateSyncStreamImplementation(connector, options) {\n var _a;\n if (this.isNativeCapacitorPlatform) {\n // We don't want to support multi-tab on mobile platforms.\n // We technically can, but it's not a common use case and requires additional work/testing.\n this.logger.debug(`Using Capacitor sync implementation`);\n if ((_a = this.options.flags) === null || _a === void 0 ? void 0 : _a.enableMultiTabs) {\n this.logger.warn(`enableMultiTabs is not supported on Capacitor mobile platforms. Ignoring the flag.`);\n }\n const remote = new WebRemote(connector, this.logger);\n return new CapacitorStreamingSyncImplementation(Object.assign(Object.assign({}, this.options), { retryDelayMs: options.retryDelayMs, crudUploadThrottleMs: options.crudUploadThrottleMs, adapter: this.bucketStorageAdapter, remote, uploadCrud: async () => {\n await this.waitForReady();\n await connector.uploadData(this);\n }, identifier: this.database.name, logger: this.logger, subscriptions: options.subscriptions }));\n }\n else {\n this.logger.debug(`Using default web sync implementation for web platform`);\n return super.generateSyncStreamImplementation(connector, options);\n }\n }\n}\n//# sourceMappingURL=PowerSyncDatabase.js.map","import { WebPlugin } from '@capacitor/core';\nexport class PowerSyncWeb extends WebPlugin {\n async registerCore() {\n throw new Error('This code path is not supported on web.');\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","BaseObserver","Mutex","sqlite","SQLiteConnection","CapacitorSQLite","Capacitor","timeoutSignal","DBAdapterDefaultMixin","AbstractStreamingSyncImplementation","LockType","WebPowerSyncDatabase","MEMORY_TRIGGER_CLAIM_MANAGER","WebRemote","WebPlugin"],"mappings":"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"}
|