Web support for powersync_sqlcipher
#230
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Since
sqlite3_web: ^0.3.0
, we can pass additional options from the client to theDatabaseController
when opening a database. This implementation uses that in two steps:powersync_core
, introduce an additional option in the worker that will make it usemultipleciphers-$vfs
when we've set up a VFS named$vfs
for a database.powersync_sqlcipher
, add a web implementation and set that option to enable the multipleciphers-based VFS.This ensures that we're using an encryption-compatible VFS for the database. Applying encryption is then only a matter of setting the
key
pragma, which we can also do in the open factory.To aid in downloading web assets for
powersync_sqlcipher
, I've moved thesetup_web.dart
intopowersync_core
. Botthpowersync
andpowersync_sqlcipher
can use that library to download the web workers and WASM assets. The only difference is thatpowersync_sqlcipher
will downloadsqlite3mc.wasm
instead of the regular one.Closes #216