From 8a0561857a9818aed2054924d522cb3e784b5af5 Mon Sep 17 00:00:00 2001 From: Steven Ontong Date: Mon, 20 May 2024 08:37:25 +0200 Subject: [PATCH 1/8] wip --- demos/supabase-anonymous-auth/pubspec.lock | 69 +++++----- .../supabase-edge-function-auth/pubspec.lock | 69 +++++----- demos/supabase-simple-chat/pubspec.lock | 71 +++++------ .../lib/migrations/fts_setup.dart | 24 ++-- demos/supabase-todolist/macos/Podfile.lock | 4 +- .../macos/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- demos/supabase-todolist/pubspec.lock | 61 +++++---- melos.yaml | 2 +- .../lib/src/web/powersync_db.worker.dart | 108 +++++++++------- .../powersync/lib/src/web/worker_utils.dart | 40 ++++++ packages/powersync/pubspec.yaml | 15 ++- packages/powersync_web_worker/.gitignore | 15 --- packages/powersync_web_worker/README.md | 3 - .../lib/src/powersync_db.worker.dart | 120 ------------------ packages/powersync_web_worker/lib/worker.dart | 1 - packages/powersync_web_worker/pubspec.yaml | 27 ---- pubspec.lock | 41 ------ pubspec.yaml | 6 - .../bin => scripts}/compile_webworker.dart | 5 +- scripts/init_sqlite_wasm.dart | 2 +- 21 files changed, 253 insertions(+), 434 deletions(-) create mode 100644 packages/powersync/lib/src/web/worker_utils.dart delete mode 100644 packages/powersync_web_worker/.gitignore delete mode 100644 packages/powersync_web_worker/README.md delete mode 100644 packages/powersync_web_worker/lib/src/powersync_db.worker.dart delete mode 100644 packages/powersync_web_worker/lib/worker.dart delete mode 100644 packages/powersync_web_worker/pubspec.yaml rename {packages/powersync_web_worker/bin => scripts}/compile_webworker.dart (88%) diff --git a/demos/supabase-anonymous-auth/pubspec.lock b/demos/supabase-anonymous-auth/pubspec.lock index 0e804340..77254039 100644 --- a/demos/supabase-anonymous-auth/pubspec.lock +++ b/demos/supabase-anonymous-auth/pubspec.lock @@ -49,14 +49,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.18.0" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" crypto: dependency: transitive description: @@ -65,14 +57,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - drift: - dependency: transitive - description: - name: drift - sha256: "3b276c838ff7f8e19aac18a51f9b388715268f3534eaaf8047c8455ef3c1738d" - url: "https://pub.dev" - source: hosted - version: "2.16.0" fake_async: dependency: transitive description: @@ -204,26 +188,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" url: "https://pub.dev" source: hosted - version: "10.0.0" + version: "10.0.4" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.3" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.1" lints: dependency: transitive description: @@ -260,10 +244,10 @@ packages: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.12.0" mime: dependency: transitive description: @@ -366,7 +350,7 @@ packages: path: "../../packages/powersync" relative: true source: path - version: "1.3.0-alpha.3" + version: "1.3.0-alpha.4" realtime_client: dependency: transitive description: @@ -469,13 +453,12 @@ packages: source: hosted version: "7.0.0" sqlite3: - dependency: transitive + dependency: "direct overridden" description: - name: sqlite3 - sha256: "1abbeb84bf2b1a10e5e1138c913123c8aa9d83cd64e5f9a0dd847b3c83063202" - url: "https://pub.dev" - source: hosted - version: "2.4.2" + path: "/Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3" + relative: false + source: path + version: "2.4.1-dev" sqlite3_flutter_libs: dependency: transitive description: @@ -484,14 +467,20 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.20" + sqlite3_web: + dependency: "direct overridden" + description: + path: "/Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3_web" + relative: false + source: path + version: "0.1.0" sqlite_async: dependency: "direct main" description: - name: sqlite_async - sha256: cfe14e9b10db9f40f550125f4a8528ad5f891754a4852bf1c1622a4b0192e80c - url: "https://pub.dev" - source: hosted - version: "0.7.0-alpha.3" + path: "/Users/stevenontong/Documents/platform_code/powersync/sqlite_async.dart" + relative: false + source: path + version: "0.7.0-alpha.2" stack_trace: dependency: transitive description: @@ -552,10 +541,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.0" typed_data: dependency: transitive description: @@ -656,10 +645,10 @@ packages: dependency: transitive description: name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "14.2.1" web: dependency: transitive description: diff --git a/demos/supabase-edge-function-auth/pubspec.lock b/demos/supabase-edge-function-auth/pubspec.lock index 0e804340..77254039 100644 --- a/demos/supabase-edge-function-auth/pubspec.lock +++ b/demos/supabase-edge-function-auth/pubspec.lock @@ -49,14 +49,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.18.0" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" crypto: dependency: transitive description: @@ -65,14 +57,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - drift: - dependency: transitive - description: - name: drift - sha256: "3b276c838ff7f8e19aac18a51f9b388715268f3534eaaf8047c8455ef3c1738d" - url: "https://pub.dev" - source: hosted - version: "2.16.0" fake_async: dependency: transitive description: @@ -204,26 +188,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" url: "https://pub.dev" source: hosted - version: "10.0.0" + version: "10.0.4" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.3" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.1" lints: dependency: transitive description: @@ -260,10 +244,10 @@ packages: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.12.0" mime: dependency: transitive description: @@ -366,7 +350,7 @@ packages: path: "../../packages/powersync" relative: true source: path - version: "1.3.0-alpha.3" + version: "1.3.0-alpha.4" realtime_client: dependency: transitive description: @@ -469,13 +453,12 @@ packages: source: hosted version: "7.0.0" sqlite3: - dependency: transitive + dependency: "direct overridden" description: - name: sqlite3 - sha256: "1abbeb84bf2b1a10e5e1138c913123c8aa9d83cd64e5f9a0dd847b3c83063202" - url: "https://pub.dev" - source: hosted - version: "2.4.2" + path: "/Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3" + relative: false + source: path + version: "2.4.1-dev" sqlite3_flutter_libs: dependency: transitive description: @@ -484,14 +467,20 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.20" + sqlite3_web: + dependency: "direct overridden" + description: + path: "/Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3_web" + relative: false + source: path + version: "0.1.0" sqlite_async: dependency: "direct main" description: - name: sqlite_async - sha256: cfe14e9b10db9f40f550125f4a8528ad5f891754a4852bf1c1622a4b0192e80c - url: "https://pub.dev" - source: hosted - version: "0.7.0-alpha.3" + path: "/Users/stevenontong/Documents/platform_code/powersync/sqlite_async.dart" + relative: false + source: path + version: "0.7.0-alpha.2" stack_trace: dependency: transitive description: @@ -552,10 +541,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.0" typed_data: dependency: transitive description: @@ -656,10 +645,10 @@ packages: dependency: transitive description: name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "14.2.1" web: dependency: transitive description: diff --git a/demos/supabase-simple-chat/pubspec.lock b/demos/supabase-simple-chat/pubspec.lock index 1166ab2d..ce7c6f9f 100644 --- a/demos/supabase-simple-chat/pubspec.lock +++ b/demos/supabase-simple-chat/pubspec.lock @@ -49,14 +49,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.18.0" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" crypto: dependency: transitive description: @@ -73,14 +65,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.6" - drift: - dependency: transitive - description: - name: drift - sha256: "3b276c838ff7f8e19aac18a51f9b388715268f3534eaaf8047c8455ef3c1738d" - url: "https://pub.dev" - source: hosted - version: "2.16.0" fake_async: dependency: transitive description: @@ -236,26 +220,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" url: "https://pub.dev" source: hosted - version: "10.0.0" + version: "10.0.4" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.3" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.1" lints: dependency: transitive description: @@ -292,10 +276,10 @@ packages: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.12.0" mime: dependency: transitive description: @@ -398,7 +382,7 @@ packages: path: "../../packages/powersync" relative: true source: path - version: "1.3.0-alpha.3" + version: "1.3.0-alpha.4" realtime_client: dependency: transitive description: @@ -525,13 +509,12 @@ packages: source: hosted version: "7.0.0" sqlite3: - dependency: transitive + dependency: "direct overridden" description: - name: sqlite3 - sha256: "1abbeb84bf2b1a10e5e1138c913123c8aa9d83cd64e5f9a0dd847b3c83063202" - url: "https://pub.dev" - source: hosted - version: "2.4.2" + path: "/Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3" + relative: false + source: path + version: "2.4.1-dev" sqlite3_flutter_libs: dependency: transitive description: @@ -540,14 +523,20 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.20" + sqlite3_web: + dependency: "direct overridden" + description: + path: "/Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3_web" + relative: false + source: path + version: "0.1.0" sqlite_async: - dependency: transitive + dependency: "direct overridden" description: - name: sqlite_async - sha256: cfe14e9b10db9f40f550125f4a8528ad5f891754a4852bf1c1622a4b0192e80c - url: "https://pub.dev" - source: hosted - version: "0.7.0-alpha.3" + path: "/Users/stevenontong/Documents/platform_code/powersync/sqlite_async.dart" + relative: false + source: path + version: "0.7.0-alpha.2" stack_trace: dependency: transitive description: @@ -608,10 +597,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.0" timeago: dependency: "direct main" description: @@ -720,10 +709,10 @@ packages: dependency: transitive description: name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "14.2.1" web: dependency: transitive description: diff --git a/demos/supabase-todolist/lib/migrations/fts_setup.dart b/demos/supabase-todolist/lib/migrations/fts_setup.dart index 063d8484..be4c0bf7 100644 --- a/demos/supabase-todolist/lib/migrations/fts_setup.dart +++ b/demos/supabase-todolist/lib/migrations/fts_setup.dart @@ -61,16 +61,16 @@ SqliteMigration createFtsMigration( /// that correspond to the tables in your schema and populate them /// with the data you would like to search on Future configureFts(PowerSyncDatabase db) async { - migrations - ..add(createFtsMigration( - migrationVersion: 1, - tableName: 'lists', - columns: ['name'], - tokenizationMethod: 'porter unicode61')) - ..add(createFtsMigration( - migrationVersion: 2, - tableName: 'todos', - columns: ['description', 'list_id'], - )); - await migrations.migrate(db); + // migrations + // ..add(createFtsMigration( + // migrationVersion: 1, + // tableName: 'lists', + // columns: ['name'], + // tokenizationMethod: 'porter unicode61')) + // ..add(createFtsMigration( + // migrationVersion: 2, + // tableName: 'todos', + // columns: ['description', 'list_id'], + // )); + // await migrations.migrate(db); } diff --git a/demos/supabase-todolist/macos/Podfile.lock b/demos/supabase-todolist/macos/Podfile.lock index f3ca846a..e84dc305 100644 --- a/demos/supabase-todolist/macos/Podfile.lock +++ b/demos/supabase-todolist/macos/Podfile.lock @@ -53,7 +53,7 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos SPEC CHECKSUMS: - app_links: 4481ed4d71f384b0c3ae5016f4633aa73d32ff67 + app_links: 10e0a0ab602ffaf34d142cd4862f29d34b303b2a FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 @@ -63,4 +63,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367 -COCOAPODS: 1.13.0 +COCOAPODS: 1.15.2 diff --git a/demos/supabase-todolist/macos/Runner.xcodeproj/project.pbxproj b/demos/supabase-todolist/macos/Runner.xcodeproj/project.pbxproj index 46a2dce9..fe47ba76 100644 --- a/demos/supabase-todolist/macos/Runner.xcodeproj/project.pbxproj +++ b/demos/supabase-todolist/macos/Runner.xcodeproj/project.pbxproj @@ -259,7 +259,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 1430; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 33CC10EC2044A3C60003C045 = { diff --git a/demos/supabase-todolist/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/demos/supabase-todolist/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index cc0e03af..2c526589 100644 --- a/demos/supabase-todolist/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/demos/supabase-todolist/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ uuid.v4(), - ); - database.createFunction( - functionName: 'powersync_sleep', - argumentCount: const AllowedArgumentCount(1), - function: (args) { - // Can't perform synchronous sleep on web - final millis = args[0] as int; - return millis; - }, - ); - - database.createFunction( - functionName: 'powersync_connection_name', - argumentCount: const AllowedArgumentCount(0), - function: (args) { - return 'N/A'; - }, - ); -} +library; + +import 'dart:js_interop'; + +import 'package:mutex/mutex.dart'; +import 'package:sqlite3/wasm.dart'; + +import 'package:sqlite_async/sqlite3_web_worker.dart'; +import 'package:sqlite3_web/sqlite3_web.dart'; + +import 'worker_utils.dart'; void main() { - WasmDatabase.workerMainForOpen( - setupAllDatabases: setupPowerSyncDatabase, - ); + WebSqlite.workerEntrypoint(controller: _AsyncSqliteController()); +} + +/// TODO this could be exported from sqlite_async +final class _AsyncSqliteController extends DatabaseController { + @override + Future openDatabase(WasmSqlite3 sqlite3, String vfs) async { + final db = sqlite3.open('/app.db', vfs: vfs); + setupPowerSyncDatabase(db); + + return _AsyncSqliteDatabase(database: db); + } + + @override + Future handleCustomRequest( + ClientConnection connection, JSAny? request) { + throw UnimplementedError(); + } +} + +class _AsyncSqliteDatabase extends WorkerDatabase { + @override + final CommonDatabase database; + + // This mutex is only used for lock requests from clients. Clients only send + // these requests for shared workers, so we can assume each database is only + // opened once and we don't need web locks here. + final mutex = ReadWriteMutex(); + + _AsyncSqliteDatabase({required this.database}); + + @override + Future handleCustomRequest( + ClientConnection connection, JSAny? request) async { + final message = request as CustomDatabaseMessage; + + switch (message.kind) { + case CustomDatabaseMessageKind.requestSharedLock: + await mutex.acquireRead(); + case CustomDatabaseMessageKind.requestExclusiveLock: + await mutex.acquireWrite(); + case CustomDatabaseMessageKind.releaseLock: + mutex.release(); + case CustomDatabaseMessageKind.lockObtained: + throw UnsupportedError('This is a response, not a request'); + case CustomDatabaseMessageKind.getAutoCommit: + return database.autocommit.toJS; + } + + return CustomDatabaseMessage(CustomDatabaseMessageKind.lockObtained); + } } diff --git a/packages/powersync/lib/src/web/worker_utils.dart b/packages/powersync/lib/src/web/worker_utils.dart new file mode 100644 index 00000000..9f15547f --- /dev/null +++ b/packages/powersync/lib/src/web/worker_utils.dart @@ -0,0 +1,40 @@ +import 'package:powersync/sqlite3_common.dart'; +import 'package:powersync/src/open_factory/common_db_functions.dart'; +import 'package:uuid/uuid.dart'; + +// Registers custom SQLite functions for the SQLite connection +void setupPowerSyncDatabase(CommonDatabase database) { + setupCommonDBFunctions(database); + final uuid = Uuid(); + + database.createFunction( + functionName: 'uuid', + argumentCount: const AllowedArgumentCount(0), + function: (args) { + return uuid.v4(); + }, + ); + database.createFunction( + // Postgres compatibility + functionName: 'gen_random_uuid', + argumentCount: const AllowedArgumentCount(0), + function: (args) => uuid.v4(), + ); + database.createFunction( + functionName: 'powersync_sleep', + argumentCount: const AllowedArgumentCount(1), + function: (args) { + // Can't perform synchronous sleep on web + final millis = args[0] as int; + return millis; + }, + ); + + database.createFunction( + functionName: 'powersync_connection_name', + argumentCount: const AllowedArgumentCount(0), + function: (args) { + return 'N/A'; + }, + ); +} diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml index 4649fd0b..3daff52f 100644 --- a/packages/powersync/pubspec.yaml +++ b/packages/powersync/pubspec.yaml @@ -20,6 +20,10 @@ dependencies: collection: ^1.17.0 fetch_client: ^1.0.2 js: ^0.6.7 + sqlite3_web: + path: /Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3_web + sqlite3: + path: /Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3 dev_dependencies: dcli: ^3.3.5 @@ -27,13 +31,20 @@ dev_dependencies: test: ^1.25.0 test_api: ^0.7.0 path_provider: ^2.0.13 - sqlite3: ^2.3.0 + shelf: ^1.4.1 shelf_router: ^1.1.4 shelf_static: ^1.1.2 stream_channel: ^2.1.2 path: ^1.8.3 - drift: 2.15.0 + +dependency_overrides: + sqlite3_web: + path: /Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3_web + sqlite3: + path: /Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3 + sqlite_async: + path: /Users/stevenontong/Documents/platform_code/powersync/sqlite_async.dart platforms: android: diff --git a/packages/powersync_web_worker/.gitignore b/packages/powersync_web_worker/.gitignore deleted file mode 100644 index 920d19bd..00000000 --- a/packages/powersync_web_worker/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -# https://dart.dev/guides/libraries/private-files -# Created by `dart pub` -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Avoid committing pubspec.lock for library packages; see -# https://dart.dev/guides/libraries/private-files#pubspeclock. -pubspec.lock diff --git a/packages/powersync_web_worker/README.md b/packages/powersync_web_worker/README.md deleted file mode 100644 index 7deab737..00000000 --- a/packages/powersync_web_worker/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# PowerSync Dart Web Worker Builder - -Temporary package which builds the PowerSync Javascript worker code. \ No newline at end of file diff --git a/packages/powersync_web_worker/lib/src/powersync_db.worker.dart b/packages/powersync_web_worker/lib/src/powersync_db.worker.dart deleted file mode 100644 index 2c4020b5..00000000 --- a/packages/powersync_web_worker/lib/src/powersync_db.worker.dart +++ /dev/null @@ -1,120 +0,0 @@ -library; - -/// This file needs to be compiled to JavaScript with the command -/// dart compile js -O4 packages/powersync_web_worker/lib/src/powersync_db.worker.dart -o assets/powersync_db.worker.js -/// The output should then be included in each project's `web` directory -/// -/// NOTE: This package contains some code duplicated from [sqlite_async.dart] -/// and [powersync.dart]. -/// This is only necessary while we are using a -/// [forked](https://github.com/powersync-ja/drift/tree/test) version of Drift -/// which is not published as a package, but imported from a Git Repository. -/// -/// [sqlite_async.dart] is a published package which cannot depend on Git -/// Repository dependencies, it instead depends on `drift: 2.15.0`. -/// This is possible since the forked changes are only on the compiled -/// worker side. SQLite Async can use the standard Drift client. -/// -/// [powersync.dart] depends on [sqlite_async.dart], but it needs to use -/// the forked [drift.dart] library in order to compile its web worker. -/// Since both packages are published, they cannot depend on the forked -/// Drift Git repository. -/// -/// This intermediate package exists only to compile the Javascript -/// web worker for [powersync.dart]. It cannot depend on [powersync.dart] -/// or [sqlite_async.dart] since those require the hosted `drift: 2.15.0` -/// dependency. Dart's package manager cannot resolve using both. -/// -/// Code duplication is required since this package cannot depend on the -/// other libraries. This will be solved once a published Drift package -/// is available. - -import 'dart:convert'; - -import 'package:drift/wasm.dart'; -import 'package:sqlite3/common.dart'; -import 'package:uuid/uuid.dart'; -import 'package:uuid/data.dart'; -import 'package:uuid/rng.dart'; - -/// Custom function which exposes CommonDatabase.autocommit -const sqliteAsyncAutoCommitCommand = 'sqlite_async_autocommit'; - -void setupDB(CommonDatabase database) { - /// Duplicate from [sqlite_async.dart] - database.createFunction( - functionName: sqliteAsyncAutoCommitCommand, - argumentCount: const AllowedArgumentCount(0), - function: (args) { - return database.autocommit; - }); - - /// Functions below are duplicates from [powersync.dart] - database.createFunction( - functionName: 'powersync_diff', - argumentCount: const AllowedArgumentCount(2), - deterministic: true, - directOnly: false, - function: (args) { - final oldData = jsonDecode(args[0] as String) as Map; - final newData = jsonDecode(args[1] as String) as Map; - - Map result = {}; - - for (final newEntry in newData.entries) { - final oldValue = oldData[newEntry.key]; - final newValue = newEntry.value; - - if (newValue != oldValue) { - result[newEntry.key] = newValue; - } - } - - for (final key in oldData.keys) { - if (!newData.containsKey(key)) { - result[key] = null; - } - } - - return jsonEncode(result); - }); - - final uuid = Uuid(goptions: GlobalOptions(CryptoRNG())); - - database.createFunction( - functionName: 'uuid', - argumentCount: const AllowedArgumentCount(0), - function: (args) { - return uuid.v4(); - }, - ); - database.createFunction( - // Postgres compatibility - functionName: 'gen_random_uuid', - argumentCount: const AllowedArgumentCount(0), - function: (args) => uuid.v4(), - ); - database.createFunction( - functionName: 'powersync_sleep', - argumentCount: const AllowedArgumentCount(1), - function: (args) { - // Can't perform synchronous sleep on web - final millis = args[0] as int; - return millis; - }, - ); - - database.createFunction( - functionName: 'powersync_connection_name', - argumentCount: const AllowedArgumentCount(0), - function: (args) { - return 'N/A'; - }, - ); -} - -void main() { - WasmDatabase.workerMainForOpen( - setupAllDatabases: setupDB, - ); -} diff --git a/packages/powersync_web_worker/lib/worker.dart b/packages/powersync_web_worker/lib/worker.dart deleted file mode 100644 index e495f5b8..00000000 --- a/packages/powersync_web_worker/lib/worker.dart +++ /dev/null @@ -1 +0,0 @@ -export 'src/powersync_db.worker.dart'; diff --git a/packages/powersync_web_worker/pubspec.yaml b/packages/powersync_web_worker/pubspec.yaml deleted file mode 100644 index 977c489e..00000000 --- a/packages/powersync_web_worker/pubspec.yaml +++ /dev/null @@ -1,27 +0,0 @@ -name: powersync_web_worker -version: 0.0.1 -homepage: https://powersync.com -repository: https://github.com/powersync-ja/powersync.dart -description: PowerSync Dart Web Worker Builder -environment: - sdk: ^3.2.3 - -publish_to: none - -executables: - compile_worker: bin/compile_worker.dart - -dev_dependencies: - dcli: ^3.3.5 - uuid: ^4.2.0 - async: ^2.10.0 - path: ^1.8.3 - sqlite3: ^2.3.0 - drift: - git: - url: https://github.com/powersync-ja/drift.git - ref: test # branch name - path: drift - -platforms: - web: diff --git a/pubspec.lock b/pubspec.lock index 99f242bf..556d7257 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -113,22 +113,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - drift: - dependency: transitive - description: - name: drift - sha256: b50a8342c6ddf05be53bda1d246404cbad101b64dc73e8d6d1ac1090d119b4e2 - url: "https://pub.dev" - source: hosted - version: "2.15.0" - ffi: - dependency: transitive - description: - name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" - url: "https://pub.dev" - source: hosted - version: "2.1.0" file: dependency: transitive description: @@ -265,14 +249,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" - mutex: - dependency: transitive - description: - name: mutex - sha256: "8827da25de792088eb33e572115a5eb0d61d61a3c01acbc8bcbe76ed78f1a1f2" - url: "https://pub.dev" - source: hosted - version: "3.1.0" node_preamble: dependency: transitive description: @@ -417,23 +393,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.0" - sqlite3: - dependency: transitive - description: - name: sqlite3 - sha256: c4a4c5a4b2a32e2d0f6837b33d7c91a67903891a5b7dbe706cf4b1f6b0c798c5 - url: "https://pub.dev" - source: hosted - version: "2.3.0" - sqlite_async: - dependency: "direct overridden" - description: - path: "." - ref: web - resolved-ref: f946e1ad70d61ae0eee930c59e567e8a01f1ca77 - url: "https://github.com/powersync-ja/sqlite_async.dart.git" - source: git - version: "0.6.0" stack_trace: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 20fa5f20..6d2b07ac 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -8,12 +8,6 @@ environment: # Add regular dependencies here. -dependency_overrides: - sqlite_async: - git: - url: https://github.com/powersync-ja/sqlite_async.dart.git - ref: web # branch name - dev_dependencies: lints: ^2.1.1 melos: ^3.4.0 diff --git a/packages/powersync_web_worker/bin/compile_webworker.dart b/scripts/compile_webworker.dart similarity index 88% rename from packages/powersync_web_worker/bin/compile_webworker.dart rename to scripts/compile_webworker.dart index 5f6f11b1..26a75eef 100644 --- a/packages/powersync_web_worker/bin/compile_webworker.dart +++ b/scripts/compile_webworker.dart @@ -5,13 +5,14 @@ import 'package:path/path.dart' as path; Future main() async { // This should be the package root final cwd = Directory.current.absolute.path; - final repoRoot = path.normalize(path.join(cwd, '../../')); + final repoRoot = path.normalize(cwd); /// The monorepo root assets directory final workerFilename = 'powersync_db.worker.js'; final outputPath = path.join(repoRoot, 'assets/$workerFilename'); - final workerSourcePath = './lib/src/powersync_db.worker.dart'; + final workerSourcePath = path.join( + repoRoot, './packages/powersync/lib/src/web/powersync_db.worker.dart'); // And compile worker code final process = await Process.run( diff --git a/scripts/init_sqlite_wasm.dart b/scripts/init_sqlite_wasm.dart index 8ccbc4d8..34d94a37 100644 --- a/scripts/init_sqlite_wasm.dart +++ b/scripts/init_sqlite_wasm.dart @@ -2,7 +2,7 @@ import 'dart:io'; final sqliteUrl = - 'https://github.com/simolus3/sqlite3.dart/releases/download/sqlite3-2.3.0/sqlite3.wasm'; + 'https://github.com/simolus3/sqlite3.dart/releases/download/sqlite3-2.4.3/sqlite3.wasm'; void main() async { // Create assets directory if it doesn't exist From 35788faa1646ce51bae6a996ab1f66b6f623f960 Mon Sep 17 00:00:00 2001 From: Steven Ontong Date: Tue, 28 May 2024 14:03:53 +0200 Subject: [PATCH 2/8] use latest --- demos/supabase-anonymous-auth/pubspec.lock | 10 ++-- .../supabase-edge-function-auth/pubspec.lock | 10 ++-- demos/supabase-simple-chat/pubspec.lock | 10 ++-- demos/supabase-todolist/pubspec.lock | 10 ++-- .../lib/src/web/powersync_db.worker.dart | 46 +++---------------- packages/powersync/pubspec.yaml | 20 +++----- .../powersync/test/bucket_storage_test.dart | 2 + .../powersync/test/server/worker_server.dart | 5 +- .../powersync/test/utils/web_test_utils.dart | 10 ++-- packages/powersync/test/watch_test.dart | 4 -- .../powersync_attachments_helper/pubspec.yaml | 10 +++- pubspec.lock | 2 +- pubspec.yaml | 3 +- 13 files changed, 52 insertions(+), 90 deletions(-) diff --git a/demos/supabase-anonymous-auth/pubspec.lock b/demos/supabase-anonymous-auth/pubspec.lock index 77254039..093ddc28 100644 --- a/demos/supabase-anonymous-auth/pubspec.lock +++ b/demos/supabase-anonymous-auth/pubspec.lock @@ -69,18 +69,18 @@ packages: dependency: transitive description: name: fetch_api - sha256: "74a1e426d41ed9c89353703b2d80400c5d0ecfa144b2d8a7bd8882fbc9e48787" + sha256: "97f46c25b480aad74f7cc2ad7ccba2c5c6f08d008e68f95c1077286ce243d0e6" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "2.2.0" fetch_client: dependency: transitive description: name: fetch_client - sha256: "83c07b07a63526a43630572c72715707ca113a8aa3459efbc7b2d366b79402af" + sha256: "9666ee14536778474072245ed5cba07db81ae8eb5de3b7bf4a2d1e2c49696092" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.2" ffi: dependency: transitive description: @@ -480,7 +480,7 @@ packages: path: "/Users/stevenontong/Documents/platform_code/powersync/sqlite_async.dart" relative: false source: path - version: "0.7.0-alpha.2" + version: "0.7.0-alpha.3" stack_trace: dependency: transitive description: diff --git a/demos/supabase-edge-function-auth/pubspec.lock b/demos/supabase-edge-function-auth/pubspec.lock index 77254039..093ddc28 100644 --- a/demos/supabase-edge-function-auth/pubspec.lock +++ b/demos/supabase-edge-function-auth/pubspec.lock @@ -69,18 +69,18 @@ packages: dependency: transitive description: name: fetch_api - sha256: "74a1e426d41ed9c89353703b2d80400c5d0ecfa144b2d8a7bd8882fbc9e48787" + sha256: "97f46c25b480aad74f7cc2ad7ccba2c5c6f08d008e68f95c1077286ce243d0e6" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "2.2.0" fetch_client: dependency: transitive description: name: fetch_client - sha256: "83c07b07a63526a43630572c72715707ca113a8aa3459efbc7b2d366b79402af" + sha256: "9666ee14536778474072245ed5cba07db81ae8eb5de3b7bf4a2d1e2c49696092" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.2" ffi: dependency: transitive description: @@ -480,7 +480,7 @@ packages: path: "/Users/stevenontong/Documents/platform_code/powersync/sqlite_async.dart" relative: false source: path - version: "0.7.0-alpha.2" + version: "0.7.0-alpha.3" stack_trace: dependency: transitive description: diff --git a/demos/supabase-simple-chat/pubspec.lock b/demos/supabase-simple-chat/pubspec.lock index ce7c6f9f..8717f3dc 100644 --- a/demos/supabase-simple-chat/pubspec.lock +++ b/demos/supabase-simple-chat/pubspec.lock @@ -77,18 +77,18 @@ packages: dependency: transitive description: name: fetch_api - sha256: "74a1e426d41ed9c89353703b2d80400c5d0ecfa144b2d8a7bd8882fbc9e48787" + sha256: "97f46c25b480aad74f7cc2ad7ccba2c5c6f08d008e68f95c1077286ce243d0e6" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "2.2.0" fetch_client: dependency: transitive description: name: fetch_client - sha256: "83c07b07a63526a43630572c72715707ca113a8aa3459efbc7b2d366b79402af" + sha256: "9666ee14536778474072245ed5cba07db81ae8eb5de3b7bf4a2d1e2c49696092" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.2" ffi: dependency: transitive description: @@ -536,7 +536,7 @@ packages: path: "/Users/stevenontong/Documents/platform_code/powersync/sqlite_async.dart" relative: false source: path - version: "0.7.0-alpha.2" + version: "0.7.0-alpha.3" stack_trace: dependency: transitive description: diff --git a/demos/supabase-todolist/pubspec.lock b/demos/supabase-todolist/pubspec.lock index 2dcbcb92..4f166476 100644 --- a/demos/supabase-todolist/pubspec.lock +++ b/demos/supabase-todolist/pubspec.lock @@ -133,18 +133,18 @@ packages: dependency: transitive description: name: fetch_api - sha256: "74a1e426d41ed9c89353703b2d80400c5d0ecfa144b2d8a7bd8882fbc9e48787" + sha256: "97f46c25b480aad74f7cc2ad7ccba2c5c6f08d008e68f95c1077286ce243d0e6" url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "2.2.0" fetch_client: dependency: transitive description: name: fetch_client - sha256: "83c07b07a63526a43630572c72715707ca113a8aa3459efbc7b2d366b79402af" + sha256: "9666ee14536778474072245ed5cba07db81ae8eb5de3b7bf4a2d1e2c49696092" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.2" ffi: dependency: transitive description: @@ -583,7 +583,7 @@ packages: path: "/Users/stevenontong/Documents/platform_code/powersync/sqlite_async.dart" relative: false source: path - version: "0.7.0-alpha.2" + version: "0.7.0-alpha.3" stack_trace: dependency: transitive description: diff --git a/packages/powersync/lib/src/web/powersync_db.worker.dart b/packages/powersync/lib/src/web/powersync_db.worker.dart index 054f4b15..53e041d6 100644 --- a/packages/powersync/lib/src/web/powersync_db.worker.dart +++ b/packages/powersync/lib/src/web/powersync_db.worker.dart @@ -6,7 +6,6 @@ library; import 'dart:js_interop'; -import 'package:mutex/mutex.dart'; import 'package:sqlite3/wasm.dart'; import 'package:sqlite_async/sqlite3_web_worker.dart'; @@ -15,17 +14,17 @@ import 'package:sqlite3_web/sqlite3_web.dart'; import 'worker_utils.dart'; void main() { - WebSqlite.workerEntrypoint(controller: _AsyncSqliteController()); + WebSqlite.workerEntrypoint(controller: PowerSyncAsyncSqliteController()); } -/// TODO this could be exported from sqlite_async -final class _AsyncSqliteController extends DatabaseController { +final class PowerSyncAsyncSqliteController extends AsyncSqliteController { @override - Future openDatabase(WasmSqlite3 sqlite3, String vfs) async { - final db = sqlite3.open('/app.db', vfs: vfs); + Future openDatabase( + WasmSqlite3 sqlite3, String path, String vfs) async { + final db = sqlite3.open(path, vfs: vfs); setupPowerSyncDatabase(db); - return _AsyncSqliteDatabase(database: db); + return AsyncSqliteDatabase(database: db); } @override @@ -34,36 +33,3 @@ final class _AsyncSqliteController extends DatabaseController { throw UnimplementedError(); } } - -class _AsyncSqliteDatabase extends WorkerDatabase { - @override - final CommonDatabase database; - - // This mutex is only used for lock requests from clients. Clients only send - // these requests for shared workers, so we can assume each database is only - // opened once and we don't need web locks here. - final mutex = ReadWriteMutex(); - - _AsyncSqliteDatabase({required this.database}); - - @override - Future handleCustomRequest( - ClientConnection connection, JSAny? request) async { - final message = request as CustomDatabaseMessage; - - switch (message.kind) { - case CustomDatabaseMessageKind.requestSharedLock: - await mutex.acquireRead(); - case CustomDatabaseMessageKind.requestExclusiveLock: - await mutex.acquireWrite(); - case CustomDatabaseMessageKind.releaseLock: - mutex.release(); - case CustomDatabaseMessageKind.lockObtained: - throw UnsupportedError('This is a response, not a request'); - case CustomDatabaseMessageKind.getAutoCommit: - return database.autocommit.toJS; - } - - return CustomDatabaseMessage(CustomDatabaseMessageKind.lockObtained); - } -} diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml index 3daff52f..2349d79b 100644 --- a/packages/powersync/pubspec.yaml +++ b/packages/powersync/pubspec.yaml @@ -4,7 +4,7 @@ homepage: https://powersync.com repository: https://github.com/powersync-ja/powersync.dart description: PowerSync Flutter SDK - keep PostgreSQL databases in sync with on-device SQLite databases. environment: - sdk: ^3.2.3 + sdk: '>=3.3.0 <4.0.0' dependencies: # Needed because of sqlite3_flutter_libs flutter: @@ -18,15 +18,11 @@ dependencies: async: ^2.10.0 logging: ^1.1.1 collection: ^1.17.0 - fetch_client: ^1.0.2 + fetch_client: ^1.1.2 js: ^0.6.7 - sqlite3_web: - path: /Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3_web - sqlite3: - path: /Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3 - + sqlite3: ^2.4.3 dev_dependencies: - dcli: ^3.3.5 + dcli: ^4.0.0 lints: ^3.0.0 test: ^1.25.0 test_api: ^0.7.0 @@ -39,12 +35,10 @@ dev_dependencies: path: ^1.8.3 dependency_overrides: - sqlite3_web: - path: /Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3_web - sqlite3: - path: /Users/stevenontong/Documents/platform_code/powersync/dart_deps/sqlite3.dart/sqlite3 sqlite_async: - path: /Users/stevenontong/Documents/platform_code/powersync/sqlite_async.dart + git: + url: https://github.com/powersync-ja/sqlite_async.dart.git + ref: sqlite_proto platforms: android: diff --git a/packages/powersync/test/bucket_storage_test.dart b/packages/powersync/test/bucket_storage_test.dart index 777bc558..b081fb52 100644 --- a/packages/powersync/test/bucket_storage_test.dart +++ b/packages/powersync/test/bucket_storage_test.dart @@ -453,6 +453,8 @@ void main() { throwsA((e) => e is SqliteException && e.message.contains('no such table'))); + await powersync.close(); + // Add schema again powersync = PowerSyncDatabase.withFactory( await testUtils.testFactory(path: path), diff --git a/packages/powersync/test/server/worker_server.dart b/packages/powersync/test/server/worker_server.dart index c0b12572..c34debc9 100644 --- a/packages/powersync/test/server/worker_server.dart +++ b/packages/powersync/test/server/worker_server.dart @@ -20,10 +20,9 @@ Future hybridMain(StreamChannel channel) async { 'sqlite3.wasm file should be present in the root assets folder'); } - final driftWorkerOutputPath = - p.join(assetsDirectory, 'powersync_db.worker.js'); + final workerOutputPath = p.join(assetsDirectory, 'powersync_db.worker.js'); - if (!(await File(driftWorkerOutputPath).exists())) { + if (!(await File(workerOutputPath).exists())) { throw AssertionError( 'powersync_db.worker.js file should be present in the ./assets folder'); } diff --git a/packages/powersync/test/utils/web_test_utils.dart b/packages/powersync/test/utils/web_test_utils.dart index 2bb28c1c..a316fff3 100644 --- a/packages/powersync/test/utils/web_test_utils.dart +++ b/packages/powersync/test/utils/web_test_utils.dart @@ -14,7 +14,7 @@ external String _createObjectURL(Blob blob); class TestUtils extends AbstractTestUtils { late Future _isInitialized; late final String sqlite3WASMUri; - late final String driftUri; + late final String workerUri; TestUtils() { _isInitialized = _init(); @@ -26,11 +26,11 @@ class TestUtils extends AbstractTestUtils { final port = await channel.stream.first as int; sqlite3WASMUri = 'http://localhost:$port/sqlite3.wasm'; // Cross origin workers are not supported, but we can supply a Blob - final driftUriSource = 'http://localhost:$port/powersync_db.worker.js'; + final workerUriSource = 'http://localhost:$port/powersync_db.worker.js'; - final blob = Blob(['importScripts("$driftUriSource");'], + final blob = Blob(['importScripts("$workerUriSource");'], 'application/javascript'); - driftUri = _createObjectURL(blob); + workerUri = _createObjectURL(blob); } @override @@ -45,7 +45,7 @@ class TestUtils extends AbstractTestUtils { final webOptions = SqliteOptions( webSqliteOptions: - WebSqliteOptions(wasmUri: sqlite3WASMUri, workerUri: driftUri)); + WebSqliteOptions(wasmUri: sqlite3WASMUri, workerUri: workerUri)); return super.testFactory(path: path, options: webOptions); } diff --git a/packages/powersync/test/watch_test.dart b/packages/powersync/test/watch_test.dart index e10ef5f4..493f1aa7 100644 --- a/packages/powersync/test/watch_test.dart +++ b/packages/powersync/test/watch_test.dart @@ -1,7 +1,3 @@ -@TestOn('!browser') - -/// TODO, this requires a custom Drift worker script on web. -/// Verified manually for now library; import 'dart:async'; diff --git a/packages/powersync_attachments_helper/pubspec.yaml b/packages/powersync_attachments_helper/pubspec.yaml index 67e6ddf7..f57ce5a5 100644 --- a/packages/powersync_attachments_helper/pubspec.yaml +++ b/packages/powersync_attachments_helper/pubspec.yaml @@ -4,7 +4,7 @@ version: 0.3.0-alpha.1 repository: https://github.com/powersync-ja/powersync.dart homepage: https://www.powersync.com/ environment: - sdk: ^3.2.3 + sdk: '>=3.3.0 <4.0.0' dependencies: flutter: @@ -12,7 +12,7 @@ dependencies: powersync: ^1.3.0-alpha.3 logging: ^1.2.0 - sqlite3: ^2.3.0 + sqlite3: ^2.4.3 sqlite_async: ^0.7.0-alpha.2 path_provider: ^2.1.1 @@ -20,6 +20,12 @@ dev_dependencies: lints: ^3.0.0 test: ^1.25.2 +dependency_overrides: + sqlite_async: + git: + url: https://github.com/powersync-ja/sqlite_async.dart.git + ref: sqlite_proto + platforms: android: ios: diff --git a/pubspec.lock b/pubspec.lock index 556d7257..02fdf572 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -522,4 +522,4 @@ packages: source: hosted version: "2.1.1" sdks: - dart: ">=3.2.3 <4.0.0" + dart: ">=3.3.0 <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 6d2b07ac..a192f2c4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,10 +1,9 @@ name: powersync_dart description: A sample command-line application. version: 1.0.0 -# repository: https://github.com/my_org/my_repo environment: - sdk: ^3.2.3 + sdk: '>=3.3.0 <4.0.0' # Add regular dependencies here. From e22307fa71f4dfa604e24e82171fb04953d67d91 Mon Sep 17 00:00:00 2001 From: Steven Ontong Date: Wed, 5 Jun 2024 16:57:57 +0200 Subject: [PATCH 3/8] update sqlite_async package updates --- .../lib/migrations/fts_setup.dart | 2 +- demos/supabase-todolist/pubspec.lock | 45 +++--- demos/supabase-todolist/pubspec.yaml | 10 +- .../powersync/lib/src/bucket_storage.dart | 3 +- packages/powersync/lib/src/crud.dart | 2 +- packages/powersync/pubspec.yaml | 1 + .../lib/src/attachments_service.dart | 2 +- .../powersync_attachments_helper/pubspec.yaml | 7 - packages/powersync_web_worker/pubspec.lock | 134 ------------------ 9 files changed, 32 insertions(+), 174 deletions(-) delete mode 100644 packages/powersync_web_worker/pubspec.lock diff --git a/demos/supabase-todolist/lib/migrations/fts_setup.dart b/demos/supabase-todolist/lib/migrations/fts_setup.dart index be4c0bf7..3f34c3a8 100644 --- a/demos/supabase-todolist/lib/migrations/fts_setup.dart +++ b/demos/supabase-todolist/lib/migrations/fts_setup.dart @@ -1,5 +1,5 @@ import 'package:powersync/powersync.dart'; -import 'package:sqlite_async/sqlite_async.dart'; +import 'package:powersync/sqlite_async.dart'; import 'helpers.dart'; import '../models/schema.dart'; diff --git a/demos/supabase-todolist/pubspec.lock b/demos/supabase-todolist/pubspec.lock index 14f2ad0a..e12429d0 100644 --- a/demos/supabase-todolist/pubspec.lock +++ b/demos/supabase-todolist/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: archive - sha256: "6bd38d335f0954f5fad9c79e614604fbf03a0e5b975923dd001b6ea965ef5b4b" + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d url: "https://pub.dev" source: hosted - version: "3.6.0" + version: "3.6.1" async: dependency: transitive description: @@ -97,14 +97,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.18.0" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" cross_file: dependency: transitive description: @@ -121,14 +113,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - drift: - dependency: transitive - description: - name: drift - sha256: "6acedc562ffeed308049f78fb1906abad3d65714580b6745441ee6d50ec564cd" - url: "https://pub.dev" - source: hosted - version: "2.18.0" fake_async: dependency: transitive description: @@ -567,17 +551,26 @@ packages: dependency: transitive description: name: sqlite3_flutter_libs - sha256: "1e62698dc1ab396152ccaf3b3990d826244e9f3c8c39b51805f209adcd6dbea3" + sha256: "9f89a7e7dc36eac2035808427eba1c3fbd79e59c3a22093d8dace6d36b1fe89e" url: "https://pub.dev" source: hosted - version: "0.5.22" - sqlite_async: - dependency: "direct main" + version: "0.5.23" + sqlite3_web: + dependency: transitive description: - name: sqlite_async - sha256: "4f43be2da7957c580643302c94ae3180045facc6b5872b7e5ba5241afd82c939" + name: sqlite3_web + sha256: "51fec34757577841cc72d79086067e3651c434669d5af557a5c106787198a76f" url: "https://pub.dev" source: hosted + version: "0.1.2-wip" + sqlite_async: + dependency: "direct overridden" + description: + path: "." + ref: sqlite_proto + resolved-ref: "94b7b956fa1ec808649a0cc9d8c2bcfa52015c2b" + url: "https://github.com/powersync-ja/sqlite_async.dart.git" + source: git version: "0.7.0-alpha.4" stack_trace: dependency: transitive @@ -671,10 +664,10 @@ packages: dependency: transitive description: name: url_launcher - sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e" + sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" url: "https://pub.dev" source: hosted - version: "6.2.6" + version: "6.3.0" url_launcher_android: dependency: transitive description: diff --git a/demos/supabase-todolist/pubspec.yaml b/demos/supabase-todolist/pubspec.yaml index 89d2bcda..70af7d9a 100644 --- a/demos/supabase-todolist/pubspec.yaml +++ b/demos/supabase-todolist/pubspec.yaml @@ -1,6 +1,6 @@ name: powersync_flutter_demo description: PowerSync Flutter Demo -publish_to: 'none' +publish_to: "none" version: 1.0.1 @@ -17,11 +17,17 @@ dependencies: supabase_flutter: ^2.0.1 path: ^1.8.3 logging: ^1.2.0 - sqlite_async: ^0.7.0-alpha.4 camera: ^0.10.5+7 image: ^4.1.3 universal_io: ^2.2.2 +# TODO remove this +dependency_overrides: + sqlite_async: + git: + url: https://github.com/powersync-ja/sqlite_async.dart.git + ref: sqlite_proto + dev_dependencies: flutter_test: sdk: flutter diff --git a/packages/powersync/lib/src/bucket_storage.dart b/packages/powersync/lib/src/bucket_storage.dart index 73a78491..b08c097f 100644 --- a/packages/powersync/lib/src/bucket_storage.dart +++ b/packages/powersync/lib/src/bucket_storage.dart @@ -4,8 +4,7 @@ import 'dart:convert'; import 'package:collection/collection.dart'; import 'package:meta/meta.dart'; import 'package:powersync/sqlite_async.dart'; -import 'package:sqlite_async/sqlite3_common.dart' as sqlite; -import 'package:sqlite_async/sqlite_async.dart'; +import 'package:powersync/sqlite3_common.dart' as sqlite; import 'crud.dart'; import 'schema_helpers.dart'; diff --git a/packages/powersync/lib/src/crud.dart b/packages/powersync/lib/src/crud.dart index 66ad699d..3ca4c288 100644 --- a/packages/powersync/lib/src/crud.dart +++ b/packages/powersync/lib/src/crud.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:collection/collection.dart'; -import 'package:sqlite_async/sqlite3_common.dart' as sqlite; +import 'package:powersync/sqlite3_common.dart' as sqlite; /// A batch of client-side changes. class CrudBatch { diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml index 9c938eba..56a5a239 100644 --- a/packages/powersync/pubspec.yaml +++ b/packages/powersync/pubspec.yaml @@ -33,6 +33,7 @@ dev_dependencies: stream_channel: ^2.1.2 path: ^1.8.3 +# TODO remove this dependency_overrides: sqlite_async: git: diff --git a/packages/powersync_attachments_helper/lib/src/attachments_service.dart b/packages/powersync_attachments_helper/lib/src/attachments_service.dart index 1a56ed72..0383a393 100644 --- a/packages/powersync_attachments_helper/lib/src/attachments_service.dart +++ b/packages/powersync_attachments_helper/lib/src/attachments_service.dart @@ -2,7 +2,7 @@ import './attachments_queue.dart'; import './attachments_queue_table.dart'; import './local_storage_adapter.dart'; import 'package:powersync/powersync.dart'; -import 'package:sqlite_async/sqlite3_common.dart'; +import 'package:powersync/sqlite3_common.dart'; /// Service for interacting with the attachment queue. class AttachmentsService { diff --git a/packages/powersync_attachments_helper/pubspec.yaml b/packages/powersync_attachments_helper/pubspec.yaml index e30489a3..1369fedf 100644 --- a/packages/powersync_attachments_helper/pubspec.yaml +++ b/packages/powersync_attachments_helper/pubspec.yaml @@ -13,19 +13,12 @@ dependencies: powersync: ^1.3.0-alpha.5 logging: ^1.2.0 sqlite3: "^2.4.3" - sqlite_async: ^0.7.0-alpha.4 path_provider: ^2.0.13 dev_dependencies: lints: ^3.0.0 test: ^1.25.2 -dependency_overrides: - sqlite_async: - git: - url: https://github.com/powersync-ja/sqlite_async.dart.git - ref: sqlite_proto - platforms: android: ios: diff --git a/packages/powersync_web_worker/pubspec.lock b/packages/powersync_web_worker/pubspec.lock deleted file mode 100644 index ec8703ea..00000000 --- a/packages/powersync_web_worker/pubspec.lock +++ /dev/null @@ -1,134 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - async: - dependency: "direct dev" - description: - name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.dev" - source: hosted - version: "2.11.0" - collection: - dependency: transitive - description: - name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a - url: "https://pub.dev" - source: hosted - version: "1.18.0" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" - crypto: - dependency: transitive - description: - name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab - url: "https://pub.dev" - source: hosted - version: "3.0.3" - drift: - dependency: "direct dev" - description: - path: drift - ref: test - resolved-ref: e37557b92e371748865e42468c3273b76fda89c8 - url: "https://github.com/powersync-ja/drift.git" - source: git - version: "2.15.0" - ffi: - dependency: transitive - description: - name: ffi - sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - fixnum: - dependency: transitive - description: - name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" - meta: - dependency: transitive - description: - name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 - url: "https://pub.dev" - source: hosted - version: "1.15.0" - path: - dependency: "direct dev" - description: - name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" - url: "https://pub.dev" - source: hosted - version: "1.9.0" - sprintf: - dependency: transitive - description: - name: sprintf - sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://pub.dev" - source: hosted - version: "7.0.0" - sqlite3: - dependency: "direct dev" - description: - name: sqlite3 - sha256: "1abbeb84bf2b1a10e5e1138c913123c8aa9d83cd64e5f9a0dd847b3c83063202" - url: "https://pub.dev" - source: hosted - version: "2.4.2" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" - url: "https://pub.dev" - source: hosted - version: "1.11.1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 - url: "https://pub.dev" - source: hosted - version: "2.1.2" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.dev" - source: hosted - version: "1.3.2" - uuid: - dependency: "direct dev" - description: - name: uuid - sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8" - url: "https://pub.dev" - source: hosted - version: "4.4.0" -sdks: - dart: ">=3.3.0 <4.0.0" From d12c0046a9912bda97df4f08070fa3d64463e650 Mon Sep 17 00:00:00 2001 From: Steven Ontong Date: Wed, 5 Jun 2024 17:33:15 +0200 Subject: [PATCH 4/8] disable FTS on web --- demos/supabase-todolist/lib/powersync.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/demos/supabase-todolist/lib/powersync.dart b/demos/supabase-todolist/lib/powersync.dart index 10c5966a..6cbb1388 100644 --- a/demos/supabase-todolist/lib/powersync.dart +++ b/demos/supabase-todolist/lib/powersync.dart @@ -190,7 +190,10 @@ Future openDatabase() async { // Demo using SQLite Full-Text Search with PowerSync. // See https://docs.powersync.com/usage-examples/full-text-search for more details - await configureFts(db); + if (kIsWeb) { + // FTS does not seem to work well on web currently + await configureFts(db); + } } /// Explicit sign out - clear database and log out. From cf5e080341a0751df6026795150fbd02d9a1b222 Mon Sep 17 00:00:00 2001 From: Steven Ontong Date: Wed, 5 Jun 2024 17:41:44 +0200 Subject: [PATCH 5/8] use sqlite_async for sqlite wasm --- packages/powersync/lib/src/web/powersync_db.worker.dart | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/powersync/lib/src/web/powersync_db.worker.dart b/packages/powersync/lib/src/web/powersync_db.worker.dart index 53e041d6..28a8e11a 100644 --- a/packages/powersync/lib/src/web/powersync_db.worker.dart +++ b/packages/powersync/lib/src/web/powersync_db.worker.dart @@ -6,10 +6,9 @@ library; import 'dart:js_interop'; -import 'package:sqlite3/wasm.dart'; - import 'package:sqlite_async/sqlite3_web_worker.dart'; -import 'package:sqlite3_web/sqlite3_web.dart'; +import 'package:sqlite_async/sqlite3_web.dart'; +import 'package:sqlite_async/sqlite3_wasm.dart'; import 'worker_utils.dart'; From 171f848a983ee304b362ca307235127b1cd7db2e Mon Sep 17 00:00:00 2001 From: Steven Ontong Date: Wed, 5 Jun 2024 17:46:00 +0200 Subject: [PATCH 6/8] cleanup --- .../lib/migrations/fts_setup.dart | 24 +++++++++---------- demos/supabase-todolist/lib/powersync.dart | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/demos/supabase-todolist/lib/migrations/fts_setup.dart b/demos/supabase-todolist/lib/migrations/fts_setup.dart index 3f34c3a8..9754e44e 100644 --- a/demos/supabase-todolist/lib/migrations/fts_setup.dart +++ b/demos/supabase-todolist/lib/migrations/fts_setup.dart @@ -61,16 +61,16 @@ SqliteMigration createFtsMigration( /// that correspond to the tables in your schema and populate them /// with the data you would like to search on Future configureFts(PowerSyncDatabase db) async { - // migrations - // ..add(createFtsMigration( - // migrationVersion: 1, - // tableName: 'lists', - // columns: ['name'], - // tokenizationMethod: 'porter unicode61')) - // ..add(createFtsMigration( - // migrationVersion: 2, - // tableName: 'todos', - // columns: ['description', 'list_id'], - // )); - // await migrations.migrate(db); + migrations + ..add(createFtsMigration( + migrationVersion: 1, + tableName: 'lists', + columns: ['name'], + tokenizationMethod: 'porter unicode61')) + ..add(createFtsMigration( + migrationVersion: 2, + tableName: 'todos', + columns: ['description', 'list_id'], + )); + await migrations.migrate(db); } diff --git a/demos/supabase-todolist/lib/powersync.dart b/demos/supabase-todolist/lib/powersync.dart index 6cbb1388..a1b177f9 100644 --- a/demos/supabase-todolist/lib/powersync.dart +++ b/demos/supabase-todolist/lib/powersync.dart @@ -190,7 +190,7 @@ Future openDatabase() async { // Demo using SQLite Full-Text Search with PowerSync. // See https://docs.powersync.com/usage-examples/full-text-search for more details - if (kIsWeb) { + if (!kIsWeb) { // FTS does not seem to work well on web currently await configureFts(db); } From c90548f8ad495e0bd710d28784eaf8abd079272d Mon Sep 17 00:00:00 2001 From: Mughees Khan Date: Thu, 20 Jun 2024 14:10:06 +0200 Subject: [PATCH 7/8] Add recursive triggers for web (#101) * Add recursive triggers for web * Override openConnection to execute pragma statements * Await pragma execute --- demos/supabase-todolist/lib/powersync.dart | 5 +---- .../lib/widgets/fts_search_delegate.dart | 1 + .../lib/src/open_factory/web/web_open_factory.dart | 13 +++++++++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/demos/supabase-todolist/lib/powersync.dart b/demos/supabase-todolist/lib/powersync.dart index a1b177f9..10c5966a 100644 --- a/demos/supabase-todolist/lib/powersync.dart +++ b/demos/supabase-todolist/lib/powersync.dart @@ -190,10 +190,7 @@ Future openDatabase() async { // Demo using SQLite Full-Text Search with PowerSync. // See https://docs.powersync.com/usage-examples/full-text-search for more details - if (!kIsWeb) { - // FTS does not seem to work well on web currently - await configureFts(db); - } + await configureFts(db); } /// Explicit sign out - clear database and log out. diff --git a/demos/supabase-todolist/lib/widgets/fts_search_delegate.dart b/demos/supabase-todolist/lib/widgets/fts_search_delegate.dart index a4ef1dce..915449dd 100644 --- a/demos/supabase-todolist/lib/widgets/fts_search_delegate.dart +++ b/demos/supabase-todolist/lib/widgets/fts_search_delegate.dart @@ -89,6 +89,7 @@ class FtsSearchDelegate extends SearchDelegate { } Future _search() async { + if (query.isEmpty) return []; List listsSearchResults = await fts_helpers.search(query, 'lists'); List todoItemsSearchResults = await fts_helpers.search(query, 'todos'); List formattedListResults = listsSearchResults diff --git a/packages/powersync/lib/src/open_factory/web/web_open_factory.dart b/packages/powersync/lib/src/open_factory/web/web_open_factory.dart index 8fbe9987..eaf06c1f 100644 --- a/packages/powersync/lib/src/open_factory/web/web_open_factory.dart +++ b/packages/powersync/lib/src/open_factory/web/web_open_factory.dart @@ -1,6 +1,9 @@ +import 'dart:async'; + import 'package:powersync/src/open_factory/abstract_powersync_open_factory.dart'; import 'package:powersync/src/uuid.dart'; import 'package:sqlite_async/sqlite3_common.dart'; +import 'package:sqlite_async/sqlite_async.dart'; /// Web implementation for [AbstractPowerSyncOpenFactory] class PowerSyncOpenFactory extends AbstractPowerSyncOpenFactory { @@ -14,6 +17,16 @@ class PowerSyncOpenFactory extends AbstractPowerSyncOpenFactory { // No op for web } + @override + Future openConnection(SqliteOpenOptions options) async { + var conn = await super.openConnection(options); + for (final statement in super.pragmaStatements(options)) { + await conn.execute(statement); + } + + return super.openConnection(options); + } + @override /// This is only called when synchronous connections are created in the same From 0619d93e1a1c77c60fd9c17d4b471d33738570b2 Mon Sep 17 00:00:00 2001 From: Mugi Khan Date: Thu, 27 Jun 2024 15:15:08 +0200 Subject: [PATCH 8/8] Update sqlite_async dependency to published version --- demos/supabase-anonymous-auth/pubspec.lock | 34 ++++++-------- demos/supabase-anonymous-auth/pubspec.yaml | 4 +- .../supabase-edge-function-auth/pubspec.lock | 34 ++++++-------- .../supabase-edge-function-auth/pubspec.yaml | 4 +- demos/supabase-simple-chat/pubspec.lock | 32 +++++-------- demos/supabase-todolist/pubspec.lock | 45 +++++++++---------- demos/supabase-todolist/pubspec.yaml | 8 +--- packages/powersync/pubspec.yaml | 9 +--- 8 files changed, 66 insertions(+), 104 deletions(-) diff --git a/demos/supabase-anonymous-auth/pubspec.lock b/demos/supabase-anonymous-auth/pubspec.lock index 19dbec9f..5c140134 100644 --- a/demos/supabase-anonymous-auth/pubspec.lock +++ b/demos/supabase-anonymous-auth/pubspec.lock @@ -49,14 +49,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.18.0" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" crypto: dependency: transitive description: @@ -65,14 +57,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - drift: - dependency: transitive - description: - name: drift - sha256: "6acedc562ffeed308049f78fb1906abad3d65714580b6745441ee6d50ec564cd" - url: "https://pub.dev" - source: hosted - version: "2.18.0" fake_async: dependency: transitive description: @@ -472,10 +456,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: b384f598b813b347c5a7e5ffad82cbaff1bec3d1561af267041e66f6f0899295 + sha256: "6d17989c0b06a5870b2190d391925186f944cb943e5262d0d3f778fcfca3bc6e" url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.4.4" sqlite3_flutter_libs: dependency: transitive description: @@ -484,14 +468,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.20" + sqlite3_web: + dependency: transitive + description: + name: sqlite3_web + sha256: "51fec34757577841cc72d79086067e3651c434669d5af557a5c106787198a76f" + url: "https://pub.dev" + source: hosted + version: "0.1.2-wip" sqlite_async: dependency: "direct main" description: name: sqlite_async - sha256: "4f43be2da7957c580643302c94ae3180045facc6b5872b7e5ba5241afd82c939" + sha256: bf989697c50db97043702c625330895a8ebec4491548a8e46d315b9f60b7582e url: "https://pub.dev" source: hosted - version: "0.7.0-alpha.4" + version: "0.7.0-alpha.5" stack_trace: dependency: transitive description: @@ -701,5 +693,5 @@ packages: source: hosted version: "2.0.0" sdks: - dart: ">=3.3.0 <4.0.0" + dart: ">=3.4.0 <4.0.0" flutter: ">=3.19.0" diff --git a/demos/supabase-anonymous-auth/pubspec.yaml b/demos/supabase-anonymous-auth/pubspec.yaml index 1e09dee0..5997ba91 100644 --- a/demos/supabase-anonymous-auth/pubspec.yaml +++ b/demos/supabase-anonymous-auth/pubspec.yaml @@ -1,6 +1,6 @@ name: supabase_anonymous_auth description: PowerSync Supabase Anonymous Auth Demo -publish_to: 'none' +publish_to: "none" version: 1.0.1 @@ -16,7 +16,7 @@ dependencies: supabase_flutter: ^2.0.2 path: ^1.8.3 logging: ^1.2.0 - sqlite_async: ^0.7.0-alpha.4 + sqlite_async: 0.7.0-alpha.5 universal_io: ^2.2.2 dev_dependencies: diff --git a/demos/supabase-edge-function-auth/pubspec.lock b/demos/supabase-edge-function-auth/pubspec.lock index 19dbec9f..5c140134 100644 --- a/demos/supabase-edge-function-auth/pubspec.lock +++ b/demos/supabase-edge-function-auth/pubspec.lock @@ -49,14 +49,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.18.0" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" crypto: dependency: transitive description: @@ -65,14 +57,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" - drift: - dependency: transitive - description: - name: drift - sha256: "6acedc562ffeed308049f78fb1906abad3d65714580b6745441ee6d50ec564cd" - url: "https://pub.dev" - source: hosted - version: "2.18.0" fake_async: dependency: transitive description: @@ -472,10 +456,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: b384f598b813b347c5a7e5ffad82cbaff1bec3d1561af267041e66f6f0899295 + sha256: "6d17989c0b06a5870b2190d391925186f944cb943e5262d0d3f778fcfca3bc6e" url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.4.4" sqlite3_flutter_libs: dependency: transitive description: @@ -484,14 +468,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.20" + sqlite3_web: + dependency: transitive + description: + name: sqlite3_web + sha256: "51fec34757577841cc72d79086067e3651c434669d5af557a5c106787198a76f" + url: "https://pub.dev" + source: hosted + version: "0.1.2-wip" sqlite_async: dependency: "direct main" description: name: sqlite_async - sha256: "4f43be2da7957c580643302c94ae3180045facc6b5872b7e5ba5241afd82c939" + sha256: bf989697c50db97043702c625330895a8ebec4491548a8e46d315b9f60b7582e url: "https://pub.dev" source: hosted - version: "0.7.0-alpha.4" + version: "0.7.0-alpha.5" stack_trace: dependency: transitive description: @@ -701,5 +693,5 @@ packages: source: hosted version: "2.0.0" sdks: - dart: ">=3.3.0 <4.0.0" + dart: ">=3.4.0 <4.0.0" flutter: ">=3.19.0" diff --git a/demos/supabase-edge-function-auth/pubspec.yaml b/demos/supabase-edge-function-auth/pubspec.yaml index 463f4617..aea43550 100644 --- a/demos/supabase-edge-function-auth/pubspec.yaml +++ b/demos/supabase-edge-function-auth/pubspec.yaml @@ -1,6 +1,6 @@ name: supabase_jwt_auth description: PowerSync Supabase JWT Auth Demo -publish_to: 'none' +publish_to: "none" version: 1.0.1 @@ -16,7 +16,7 @@ dependencies: supabase_flutter: ^2.0.2 path: ^1.8.3 logging: ^1.2.0 - sqlite_async: ^0.7.0-alpha.4 + sqlite_async: 0.7.0-alpha.5 universal_io: ^2.2.2 dev_dependencies: diff --git a/demos/supabase-simple-chat/pubspec.lock b/demos/supabase-simple-chat/pubspec.lock index 8fef3bca..f672b509 100644 --- a/demos/supabase-simple-chat/pubspec.lock +++ b/demos/supabase-simple-chat/pubspec.lock @@ -49,14 +49,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.18.0" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" crypto: dependency: transitive description: @@ -73,14 +65,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" - drift: - dependency: transitive - description: - name: drift - sha256: "6acedc562ffeed308049f78fb1906abad3d65714580b6745441ee6d50ec564cd" - url: "https://pub.dev" - source: hosted - version: "2.18.0" fake_async: dependency: transitive description: @@ -528,10 +512,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: b384f598b813b347c5a7e5ffad82cbaff1bec3d1561af267041e66f6f0899295 + sha256: "6d17989c0b06a5870b2190d391925186f944cb943e5262d0d3f778fcfca3bc6e" url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.4.4" sqlite3_flutter_libs: dependency: transitive description: @@ -540,14 +524,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.5.23" + sqlite3_web: + dependency: transitive + description: + name: sqlite3_web + sha256: "51fec34757577841cc72d79086067e3651c434669d5af557a5c106787198a76f" + url: "https://pub.dev" + source: hosted + version: "0.1.2-wip" sqlite_async: dependency: transitive description: name: sqlite_async - sha256: "4f43be2da7957c580643302c94ae3180045facc6b5872b7e5ba5241afd82c939" + sha256: bf989697c50db97043702c625330895a8ebec4491548a8e46d315b9f60b7582e url: "https://pub.dev" source: hosted - version: "0.7.0-alpha.4" + version: "0.7.0-alpha.5" stack_trace: dependency: transitive description: diff --git a/demos/supabase-todolist/pubspec.lock b/demos/supabase-todolist/pubspec.lock index e12429d0..ed383fa7 100644 --- a/demos/supabase-todolist/pubspec.lock +++ b/demos/supabase-todolist/pubspec.lock @@ -45,10 +45,10 @@ packages: dependency: transitive description: name: camera_android - sha256: "3af7f0b55f184d392d2eec238aaa30552ebeef2915e5e094f5488bf50d6d7ca2" + sha256: b350ac087f111467e705b2b76cc1322f7f5bdc122aa83b4b243b0872f390d229 url: "https://pub.dev" source: hosted - version: "0.10.9+3" + version: "0.10.9+2" camera_avfoundation: dependency: transitive description: @@ -178,10 +178,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e + sha256: "8cf40eebf5dec866a6d1956ad7b4f7016e6c0cc69847ab946833b7d43743809f" url: "https://pub.dev" source: hosted - version: "2.0.20" + version: "2.0.19" flutter_test: dependency: "direct dev" description: flutter @@ -356,10 +356,10 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "9c96da072b421e98183f9ea7464898428e764bc0ce5567f27ec8693442e72514" + sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d url: "https://pub.dev" source: hosted - version: "2.2.5" + version: "2.2.4" path_provider_foundation: dependency: transitive description: @@ -474,10 +474,10 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577" + sha256: "1ee8bf911094a1b592de7ab29add6f826a7331fb854273d55918693d5364a1f2" url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.2.2" shared_preferences_foundation: dependency: transitive description: @@ -543,10 +543,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: b384f598b813b347c5a7e5ffad82cbaff1bec3d1561af267041e66f6f0899295 + sha256: "6d17989c0b06a5870b2190d391925186f944cb943e5262d0d3f778fcfca3bc6e" url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.4.4" sqlite3_flutter_libs: dependency: transitive description: @@ -564,14 +564,13 @@ packages: source: hosted version: "0.1.2-wip" sqlite_async: - dependency: "direct overridden" - description: - path: "." - ref: sqlite_proto - resolved-ref: "94b7b956fa1ec808649a0cc9d8c2bcfa52015c2b" - url: "https://github.com/powersync-ja/sqlite_async.dart.git" - source: git - version: "0.7.0-alpha.4" + dependency: "direct main" + description: + name: sqlite_async + sha256: bf989697c50db97043702c625330895a8ebec4491548a8e46d315b9f60b7582e + url: "https://pub.dev" + source: hosted + version: "0.7.0-alpha.5" stack_trace: dependency: transitive description: @@ -672,10 +671,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf + sha256: "17cd5e205ea615e2c6ea7a77323a11712dffa0720a8a90540db57a01347f9ad9" url: "https://pub.dev" source: hosted - version: "6.3.3" + version: "6.3.2" url_launcher_ios: dependency: transitive description: @@ -768,10 +767,10 @@ packages: dependency: transitive description: name: win32 - sha256: a79dbe579cb51ecd6d30b17e0cae4e0ea15e2c0e66f69ad4198f22a6789e94f4 + sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb" url: "https://pub.dev" source: hosted - version: "5.5.1" + version: "5.5.0" xdg_directories: dependency: transitive description: @@ -798,4 +797,4 @@ packages: version: "2.0.0" sdks: dart: ">=3.4.0 <4.0.0" - flutter: ">=3.22.0" + flutter: ">=3.19.0" diff --git a/demos/supabase-todolist/pubspec.yaml b/demos/supabase-todolist/pubspec.yaml index 70af7d9a..5378f137 100644 --- a/demos/supabase-todolist/pubspec.yaml +++ b/demos/supabase-todolist/pubspec.yaml @@ -20,13 +20,7 @@ dependencies: camera: ^0.10.5+7 image: ^4.1.3 universal_io: ^2.2.2 - -# TODO remove this -dependency_overrides: - sqlite_async: - git: - url: https://github.com/powersync-ja/sqlite_async.dart.git - ref: sqlite_proto + sqlite_async: 0.7.0-alpha.5 dev_dependencies: flutter_test: diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml index 56a5a239..38244a82 100644 --- a/packages/powersync/pubspec.yaml +++ b/packages/powersync/pubspec.yaml @@ -10,7 +10,7 @@ dependencies: flutter: sdk: flutter - sqlite_async: ^0.7.0-alpha.4 + sqlite_async: 0.7.0-alpha.5 sqlite3_flutter_libs: ^0.5.15 meta: ^1.0.0 http: ^1.1.0 @@ -33,13 +33,6 @@ dev_dependencies: stream_channel: ^2.1.2 path: ^1.8.3 -# TODO remove this -dependency_overrides: - sqlite_async: - git: - url: https://github.com/powersync-ja/sqlite_async.dart.git - ref: sqlite_proto - platforms: android: ios: