Web support#361
Draft
simolus3 wants to merge 5 commits into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Here is
:demos:supabase-todolist, with almost no code changes, compiled to JavaScript and running in Firefox:(compiling to WebAssembly works too!)
This uses the
sqlite3-webnpm package, a JavaScript library for communicating with workers compiled with thepackage:sqlite3_webprotocol. The PowerSync Dart SDK happens to provide such worker, this PR adds a Kotlin client for the unmodified Dart web worker.Todos
SqliteExceptions from Dart into appropriate Kotlin exceptions.sqlite3_webuses abort controllers.Caveats
Longvalues as a pair of two JS numbers (low and high bits). This is a very annoying format to work with, since we need properBigInts in JavaScript. Binding long values that don't fit into 32 bits throws.sqlite3_webjs package. We could look into ways to let Kotlin encode / decode intended types directly (to distinguish between3and3.0).Closes #336.
AI use: None so far. I'll let Claude write more tests and scan for issues before marking this as ready for review though.