Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,29 @@ import 'dart:async';
import 'package:powersync_core/src/open_factory/abstract_powersync_open_factory.dart';
import 'package:powersync_core/src/uuid.dart';
import 'package:sqlite_async/sqlite3_common.dart';
import 'package:sqlite_async/sqlite3_web.dart';
import 'package:sqlite_async/sqlite_async.dart';
import 'package:sqlite_async/web.dart';

import '../../web/worker_utils.dart';

/// Web implementation for [AbstractPowerSyncOpenFactory]
class PowerSyncOpenFactory extends AbstractPowerSyncOpenFactory {
class PowerSyncOpenFactory extends AbstractPowerSyncOpenFactory
implements WebSqliteOpenFactory {
PowerSyncOpenFactory({
required super.path,
super.sqliteOptions,
});

@override
Future<WebSqlite> openWebSqlite(WebSqliteOptions options) async {
return WebSqlite.open(
wasmModule: Uri.parse(sqliteOptions.webSqliteOptions.wasmUri),
worker: Uri.parse(sqliteOptions.webSqliteOptions.workerUri),
controller: PowerSyncAsyncSqliteController(),
);
}

@override
void enableExtension() {
// No op for web
Expand Down
20 changes: 0 additions & 20 deletions packages/powersync_core/lib/src/web/powersync_db.worker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,10 @@

library;

import 'dart:js_interop';

import 'package:sqlite_async/sqlite3_web_worker.dart';
import 'package:sqlite_async/sqlite3_web.dart';
import 'package:sqlite_async/sqlite3_wasm.dart';

import 'worker_utils.dart';

void main() {
WebSqlite.workerEntrypoint(controller: PowerSyncAsyncSqliteController());
}

final class PowerSyncAsyncSqliteController extends AsyncSqliteController {
@override
Future<WorkerDatabase> openDatabase(
WasmSqlite3 sqlite3, String path, String vfs) async {
final asyncDb = await super.openDatabase(sqlite3, path, vfs);
setupPowerSyncDatabase(asyncDb.database);
return asyncDb;
}

@override
Future<JSAny?> handleCustomRequest(
ClientConnection connection, JSAny? request) {
throw UnimplementedError();
}
}
22 changes: 21 additions & 1 deletion packages/powersync_core/lib/src/web/worker_utils.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,27 @@
import 'package:powersync_core/sqlite3_common.dart';
import 'dart:js_interop';

import 'package:powersync_core/src/open_factory/common_db_functions.dart';
import 'package:sqlite_async/sqlite3_wasm.dart';
import 'package:sqlite_async/sqlite3_web.dart';
import 'package:sqlite_async/sqlite3_web_worker.dart';
import 'package:uuid/uuid.dart';

final class PowerSyncAsyncSqliteController extends AsyncSqliteController {
@override
Future<WorkerDatabase> openDatabase(
WasmSqlite3 sqlite3, String path, String vfs) async {
final asyncDb = await super.openDatabase(sqlite3, path, vfs);
setupPowerSyncDatabase(asyncDb.database);
return asyncDb;
}

@override
Future<JSAny?> handleCustomRequest(
ClientConnection connection, JSAny? request) {
throw UnimplementedError();
}
}

// Registers custom SQLite functions for the SQLite connection
void setupPowerSyncDatabase(CommonDatabase database) {
setupCommonDBFunctions(database);
Expand Down
2 changes: 1 addition & 1 deletion packages/powersync_core/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ environment:
sdk: ^3.4.3

dependencies:
sqlite_async: ^0.11.0
sqlite_async: ^0.11.1
# We only use sqlite3 as a transitive dependency,
# but right now we need a minimum of v2.4.6.
sqlite3: ^2.4.6
Expand Down
Loading