From 75c97928d43923337b391def09cb7737794c2374 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Tue, 15 Oct 2024 18:26:26 +0200
Subject: [PATCH 01/33] Setup powersync core
---
demos/django-todolist/pubspec.lock | 7 +++
demos/supabase-anonymous-auth/pubspec.lock | 7 +++
.../supabase-edge-function-auth/pubspec.lock | 7 +++
demos/supabase-simple-chat/pubspec.lock | 7 +++
demos/supabase-todolist-drift/pubspec.lock | 7 +++
.../pubspec.lock | 7 +++
demos/supabase-todolist/pubspec.lock | 7 +++
packages/powersync/lib/powersync.dart | 20 ++++----
.../powersync/lib/src/powersync_database.dart | 1 -
packages/powersync/lib/web_worker.dart | 2 +-
packages/powersync/pubspec.yaml | 1 +
packages/powersync_core/.gitignore | 7 +++
packages/powersync_core/CHANGELOG.md | 3 ++
packages/powersync_core/README.md | 39 +++++++++++++++
packages/powersync_core/analysis_options.yaml | 30 ++++++++++++
.../powersync_core/lib/powersync_core.dart | 15 ++++++
packages/powersync_core/lib/sqlite3.dart | 5 ++
.../powersync_core/lib/sqlite3_common.dart | 5 ++
packages/powersync_core/lib/sqlite_async.dart | 5 ++
.../lib/src/abort_controller.dart | 0
.../lib/src/bucket_storage.dart | 4 +-
.../lib/src/connector.dart | 0
.../lib/src/crud.dart | 2 +-
.../native/native_powersync_database.dart | 28 +++++------
.../lib/src/database/powersync_database.dart | 6 +--
.../src/database/powersync_database_impl.dart | 0
.../powersync_database_impl_stub.dart | 6 +--
.../lib/src/database/powersync_db_mixin.dart | 18 +++----
.../database/web/web_powersync_database.dart | 22 ++++-----
.../lib/src/exceptions.dart | 0
.../lib/src/isolate_completer.dart | 0
.../lib/src/log.dart | 2 +-
.../lib/src/log_internal.dart | 0
.../lib/src/open_factory.dart | 0
.../abstract_powersync_open_factory.dart | 4 +-
.../src/open_factory/common_db_functions.dart | 0
.../native/native_open_factory.dart | 5 +-
.../src/open_factory/open_factory_stub.dart | 0
.../open_factory/web/web_open_factory.dart | 4 +-
.../lib/src/powersync_database.dart | 1 +
.../src/powersync_update_notification.dart | 0
.../lib/src/schema.dart | 0
.../lib/src/schema_logic.dart | 0
.../lib/src/stream_utils.dart | 0
.../lib/src/streaming_sync.dart | 8 +--
.../lib/src/sync_status.dart | 0
.../lib/src/sync_types.dart | 0
.../lib/src/user_agent/user_agent.dart | 0
.../lib/src/user_agent/user_agent_native.dart | 2 +-
.../lib/src/user_agent/user_agent_stub.dart | 0
.../lib/src/user_agent/user_agent_web.dart | 2 +-
.../lib/src/uuid.dart | 0
.../lib/src/version.dart | 0
.../lib/src/web/powersync_db.worker.dart | 0
.../lib/src/web/worker_utils.dart | 4 +-
packages/powersync_core/pubspec.yaml | 49 +++++++++++++++++++
.../test/bucket_storage_test.dart | 6 +--
.../test/credentials_test.dart | 2 +-
.../test/crud_test.dart | 2 +-
.../test/disconnect_test.dart | 4 +-
.../test/offline_online_test.dart | 2 +-
.../test/performance_native_test.dart | 2 +-
.../test/performance_shared_test.dart | 2 +-
.../test/powersync_native_test.dart | 2 +-
.../test/powersync_shared_test.dart | 0
.../test/schema_test.dart | 2 +-
.../test/server/asset_server.dart | 0
.../test/server/worker_server.dart | 0
.../test/stream_test.dart | 2 +-
.../test/streaming_sync_test.dart | 2 +-
.../test/test_server.dart | 0
.../test/upload_test.dart | 2 +-
.../test/utils/abstract_test_utils.dart | 2 +-
.../test/utils/native_test_utils.dart | 2 +-
.../test/utils/stub_test_utils.dart | 0
.../test/utils/test_utils_impl.dart | 0
.../test/utils/web_test_utils.dart | 2 +-
.../test/watch_test.dart | 2 +-
78 files changed, 298 insertions(+), 89 deletions(-)
delete mode 100644 packages/powersync/lib/src/powersync_database.dart
create mode 100644 packages/powersync_core/.gitignore
create mode 100644 packages/powersync_core/CHANGELOG.md
create mode 100644 packages/powersync_core/README.md
create mode 100644 packages/powersync_core/analysis_options.yaml
create mode 100644 packages/powersync_core/lib/powersync_core.dart
create mode 100644 packages/powersync_core/lib/sqlite3.dart
create mode 100644 packages/powersync_core/lib/sqlite3_common.dart
create mode 100644 packages/powersync_core/lib/sqlite_async.dart
rename packages/{powersync => powersync_core}/lib/src/abort_controller.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/bucket_storage.dart (99%)
rename packages/{powersync => powersync_core}/lib/src/connector.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/crud.dart (98%)
rename packages/{powersync => powersync_core}/lib/src/database/native/native_powersync_database.dart (93%)
rename packages/{powersync => powersync_core}/lib/src/database/powersync_database.dart (92%)
rename packages/{powersync => powersync_core}/lib/src/database/powersync_database_impl.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/database/powersync_database_impl_stub.dart (94%)
rename packages/{powersync => powersync_core}/lib/src/database/powersync_db_mixin.dart (96%)
rename packages/{powersync => powersync_core}/lib/src/database/web/web_powersync_database.dart (91%)
rename packages/{powersync => powersync_core}/lib/src/exceptions.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/isolate_completer.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/log.dart (95%)
rename packages/{powersync => powersync_core}/lib/src/log_internal.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/open_factory.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/open_factory/abstract_powersync_open_factory.dart (95%)
rename packages/{powersync => powersync_core}/lib/src/open_factory/common_db_functions.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/open_factory/native/native_open_factory.dart (94%)
rename packages/{powersync => powersync_core}/lib/src/open_factory/open_factory_stub.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/open_factory/web/web_open_factory.dart (91%)
create mode 100644 packages/powersync_core/lib/src/powersync_database.dart
rename packages/{powersync => powersync_core}/lib/src/powersync_update_notification.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/schema.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/schema_logic.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/stream_utils.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/streaming_sync.dart (98%)
rename packages/{powersync => powersync_core}/lib/src/sync_status.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/sync_types.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/user_agent/user_agent.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/user_agent/user_agent_native.dart (90%)
rename packages/{powersync => powersync_core}/lib/src/user_agent/user_agent_stub.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/user_agent/user_agent_web.dart (86%)
rename packages/{powersync => powersync_core}/lib/src/uuid.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/version.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/web/powersync_db.worker.dart (100%)
rename packages/{powersync => powersync_core}/lib/src/web/worker_utils.dart (88%)
create mode 100644 packages/powersync_core/pubspec.yaml
rename packages/{powersync => powersync_core}/test/bucket_storage_test.dart (99%)
rename packages/{powersync => powersync_core}/test/credentials_test.dart (90%)
rename packages/{powersync => powersync_core}/test/crud_test.dart (99%)
rename packages/{powersync => powersync_core}/test/disconnect_test.dart (95%)
rename packages/{powersync => powersync_core}/test/offline_online_test.dart (98%)
rename packages/{powersync => powersync_core}/test/performance_native_test.dart (98%)
rename packages/{powersync => powersync_core}/test/performance_shared_test.dart (98%)
rename packages/{powersync => powersync_core}/test/powersync_native_test.dart (98%)
rename packages/{powersync => powersync_core}/test/powersync_shared_test.dart (100%)
rename packages/{powersync => powersync_core}/test/schema_test.dart (99%)
rename packages/{powersync => powersync_core}/test/server/asset_server.dart (100%)
rename packages/{powersync => powersync_core}/test/server/worker_server.dart (100%)
rename packages/{powersync => powersync_core}/test/stream_test.dart (99%)
rename packages/{powersync => powersync_core}/test/streaming_sync_test.dart (98%)
rename packages/{powersync => powersync_core}/test/test_server.dart (100%)
rename packages/{powersync => powersync_core}/test/upload_test.dart (97%)
rename packages/{powersync => powersync_core}/test/utils/abstract_test_utils.dart (98%)
rename packages/{powersync => powersync_core}/test/utils/native_test_utils.dart (97%)
rename packages/{powersync => powersync_core}/test/utils/stub_test_utils.dart (100%)
rename packages/{powersync => powersync_core}/test/utils/test_utils_impl.dart (100%)
rename packages/{powersync => powersync_core}/test/utils/web_test_utils.dart (97%)
rename packages/{powersync => powersync_core}/test/watch_test.dart (98%)
diff --git a/demos/django-todolist/pubspec.lock b/demos/django-todolist/pubspec.lock
index ec6cf1d4..370bf044 100644
--- a/demos/django-todolist/pubspec.lock
+++ b/demos/django-todolist/pubspec.lock
@@ -311,6 +311,13 @@ packages:
relative: true
source: path
version: "1.8.6"
+ powersync_core:
+ dependency: "direct overridden"
+ description:
+ path: "../../packages/powersync_core"
+ relative: true
+ source: path
+ version: "1.0.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-anonymous-auth/pubspec.lock b/demos/supabase-anonymous-auth/pubspec.lock
index 9edfe7f5..9200998f 100644
--- a/demos/supabase-anonymous-auth/pubspec.lock
+++ b/demos/supabase-anonymous-auth/pubspec.lock
@@ -367,6 +367,13 @@ packages:
relative: true
source: path
version: "1.8.6"
+ powersync_core:
+ dependency: "direct overridden"
+ description:
+ path: "../../packages/powersync_core"
+ relative: true
+ source: path
+ version: "1.0.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-edge-function-auth/pubspec.lock b/demos/supabase-edge-function-auth/pubspec.lock
index 2b784165..674616c0 100644
--- a/demos/supabase-edge-function-auth/pubspec.lock
+++ b/demos/supabase-edge-function-auth/pubspec.lock
@@ -391,6 +391,13 @@ packages:
relative: true
source: path
version: "1.8.6"
+ powersync_core:
+ dependency: "direct overridden"
+ description:
+ path: "../../packages/powersync_core"
+ relative: true
+ source: path
+ version: "1.0.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-simple-chat/pubspec.lock b/demos/supabase-simple-chat/pubspec.lock
index c86ebc21..86c7307c 100644
--- a/demos/supabase-simple-chat/pubspec.lock
+++ b/demos/supabase-simple-chat/pubspec.lock
@@ -407,6 +407,13 @@ packages:
relative: true
source: path
version: "1.8.6"
+ powersync_core:
+ dependency: "direct overridden"
+ description:
+ path: "../../packages/powersync_core"
+ relative: true
+ source: path
+ version: "1.0.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist-drift/pubspec.lock b/demos/supabase-todolist-drift/pubspec.lock
index 7bf8bca8..f54653f3 100644
--- a/demos/supabase-todolist-drift/pubspec.lock
+++ b/demos/supabase-todolist-drift/pubspec.lock
@@ -694,6 +694,13 @@ packages:
relative: true
source: path
version: "0.6.10"
+ powersync_core:
+ dependency: "direct overridden"
+ description:
+ path: "../../packages/powersync_core"
+ relative: true
+ source: path
+ version: "1.0.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist-optional-sync/pubspec.lock b/demos/supabase-todolist-optional-sync/pubspec.lock
index bdad84ec..42340c10 100644
--- a/demos/supabase-todolist-optional-sync/pubspec.lock
+++ b/demos/supabase-todolist-optional-sync/pubspec.lock
@@ -471,6 +471,13 @@ packages:
relative: true
source: path
version: "1.8.6"
+ powersync_core:
+ dependency: "direct overridden"
+ description:
+ path: "../../packages/powersync_core"
+ relative: true
+ source: path
+ version: "1.0.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist/pubspec.lock b/demos/supabase-todolist/pubspec.lock
index a743a40a..84d7d5a7 100644
--- a/demos/supabase-todolist/pubspec.lock
+++ b/demos/supabase-todolist/pubspec.lock
@@ -478,6 +478,13 @@ packages:
relative: true
source: path
version: "0.6.10"
+ powersync_core:
+ dependency: "direct overridden"
+ description:
+ path: "../../packages/powersync_core"
+ relative: true
+ source: path
+ version: "1.0.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/packages/powersync/lib/powersync.dart b/packages/powersync/lib/powersync.dart
index d931d4f4..25738e89 100644
--- a/packages/powersync/lib/powersync.dart
+++ b/packages/powersync/lib/powersync.dart
@@ -3,13 +3,13 @@
/// Use [PowerSyncDatabase] to open a database.
library;
-export 'src/connector.dart';
-export 'src/crud.dart';
-export 'src/database/powersync_database.dart';
-export 'src/exceptions.dart';
-export 'src/log.dart';
-export 'src/open_factory.dart';
-export 'src/powersync_database.dart';
-export 'src/schema.dart';
-export 'src/sync_status.dart';
-export 'src/uuid.dart';
+export 'package:powersync_core/src/connector.dart';
+export 'package:powersync_core/src/crud.dart';
+export 'package:powersync_core/src/database/powersync_database.dart';
+export 'package:powersync_core/src/exceptions.dart';
+export 'package:powersync_core/src/log.dart';
+export 'package:powersync_core/src/open_factory.dart';
+export 'package:powersync_core/src/powersync_database.dart';
+export 'package:powersync_core/src/schema.dart';
+export 'package:powersync_core/src/sync_status.dart';
+export 'package:powersync_core/src/uuid.dart';
diff --git a/packages/powersync/lib/src/powersync_database.dart b/packages/powersync/lib/src/powersync_database.dart
deleted file mode 100644
index c051b90d..00000000
--- a/packages/powersync/lib/src/powersync_database.dart
+++ /dev/null
@@ -1 +0,0 @@
-export 'package:powersync/src/database/powersync_database.dart';
diff --git a/packages/powersync/lib/web_worker.dart b/packages/powersync/lib/web_worker.dart
index 19983751..5d7b86d3 100644
--- a/packages/powersync/lib/web_worker.dart
+++ b/packages/powersync/lib/web_worker.dart
@@ -1 +1 @@
-export 'src/web/powersync_db.worker.dart';
+export 'package:powersync_core/src/web/powersync_db.worker.dart';
diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml
index 1c7d9ef6..3c8f8345 100644
--- a/packages/powersync/pubspec.yaml
+++ b/packages/powersync/pubspec.yaml
@@ -17,6 +17,7 @@ dependencies:
universal_io: ^2.0.0
sqlite3_flutter_libs: ^0.5.23
powersync_flutter_libs: ^0.4.0
+ powersync_core: ^1.0.0
meta: ^1.0.0
http: ^1.1.0
uuid: ^4.2.0
diff --git a/packages/powersync_core/.gitignore b/packages/powersync_core/.gitignore
new file mode 100644
index 00000000..3cceda55
--- /dev/null
+++ b/packages/powersync_core/.gitignore
@@ -0,0 +1,7 @@
+# https://dart.dev/guides/libraries/private-files
+# Created by `dart pub`
+.dart_tool/
+
+# Avoid committing pubspec.lock for library packages; see
+# https://dart.dev/guides/libraries/private-files#pubspeclock.
+pubspec.lock
diff --git a/packages/powersync_core/CHANGELOG.md b/packages/powersync_core/CHANGELOG.md
new file mode 100644
index 00000000..effe43c8
--- /dev/null
+++ b/packages/powersync_core/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 1.0.0
+
+- Initial version.
diff --git a/packages/powersync_core/README.md b/packages/powersync_core/README.md
new file mode 100644
index 00000000..8b55e735
--- /dev/null
+++ b/packages/powersync_core/README.md
@@ -0,0 +1,39 @@
+
+
+TODO: Put a short description of the package here that helps potential users
+know whether this package might be useful for them.
+
+## Features
+
+TODO: List what your package can do. Maybe include images, gifs, or videos.
+
+## Getting started
+
+TODO: List prerequisites and provide or point to information on how to
+start using the package.
+
+## Usage
+
+TODO: Include short and useful examples for package users. Add longer examples
+to `/example` folder.
+
+```dart
+const like = 'sample';
+```
+
+## Additional information
+
+TODO: Tell users more about the package: where to find more information, how to
+contribute to the package, how to file issues, what response they can expect
+from the package authors, and more.
diff --git a/packages/powersync_core/analysis_options.yaml b/packages/powersync_core/analysis_options.yaml
new file mode 100644
index 00000000..dee8927a
--- /dev/null
+++ b/packages/powersync_core/analysis_options.yaml
@@ -0,0 +1,30 @@
+# This file configures the static analysis results for your project (errors,
+# warnings, and lints).
+#
+# This enables the 'recommended' set of lints from `package:lints`.
+# This set helps identify many issues that may lead to problems when running
+# or consuming Dart code, and enforces writing Dart using a single, idiomatic
+# style and format.
+#
+# If you want a smaller set of lints you can change this to specify
+# 'package:lints/core.yaml'. These are just the most critical lints
+# (the recommended set includes the core lints).
+# The core lints are also what is used by pub.dev for scoring packages.
+
+include: package:lints/recommended.yaml
+
+# Uncomment the following section to specify additional rules.
+
+# linter:
+# rules:
+# - camel_case_types
+
+# analyzer:
+# exclude:
+# - path/to/excluded/files/**
+
+# For more information about the core and recommended set of lints, see
+# https://dart.dev/go/core-lints
+
+# For additional information about configuring this file, see
+# https://dart.dev/guides/language/analysis-options
diff --git a/packages/powersync_core/lib/powersync_core.dart b/packages/powersync_core/lib/powersync_core.dart
new file mode 100644
index 00000000..1084f7a2
--- /dev/null
+++ b/packages/powersync_core/lib/powersync_core.dart
@@ -0,0 +1,15 @@
+/// Support for doing something awesome.
+///
+/// More dartdocs go here.
+library;
+
+export 'src/connector.dart';
+export 'src/crud.dart';
+export 'src/database/powersync_database.dart';
+export 'src/exceptions.dart';
+export 'src/log.dart';
+export 'src/open_factory.dart';
+export 'src/powersync_database.dart';
+export 'src/schema.dart';
+export 'src/sync_status.dart';
+export 'src/uuid.dart';
diff --git a/packages/powersync_core/lib/sqlite3.dart b/packages/powersync_core/lib/sqlite3.dart
new file mode 100644
index 00000000..66f87ad4
--- /dev/null
+++ b/packages/powersync_core/lib/sqlite3.dart
@@ -0,0 +1,5 @@
+/// Re-exports [sqlite3](https://pub.dev/packages/sqlite3) to expose sqlite3 without
+/// adding it as a direct dependency.
+library;
+
+export 'package:sqlite_async/sqlite3.dart';
diff --git a/packages/powersync_core/lib/sqlite3_common.dart b/packages/powersync_core/lib/sqlite3_common.dart
new file mode 100644
index 00000000..df84a8e0
--- /dev/null
+++ b/packages/powersync_core/lib/sqlite3_common.dart
@@ -0,0 +1,5 @@
+/// Re-exports [sqlite3_common](https://pub.dev/packages/sqlite3) to expose sqlite3_common without
+/// adding it as a direct dependency.
+library;
+
+export 'package:sqlite_async/sqlite3_common.dart';
diff --git a/packages/powersync_core/lib/sqlite_async.dart b/packages/powersync_core/lib/sqlite_async.dart
new file mode 100644
index 00000000..1d09936d
--- /dev/null
+++ b/packages/powersync_core/lib/sqlite_async.dart
@@ -0,0 +1,5 @@
+/// Re-exports [sqlite_async](https://pub.dev/packages/sqlite_async) to expose sqlite_async without
+/// adding it as a direct dependency.
+library;
+
+export 'package:sqlite_async/sqlite_async.dart';
diff --git a/packages/powersync/lib/src/abort_controller.dart b/packages/powersync_core/lib/src/abort_controller.dart
similarity index 100%
rename from packages/powersync/lib/src/abort_controller.dart
rename to packages/powersync_core/lib/src/abort_controller.dart
diff --git a/packages/powersync/lib/src/bucket_storage.dart b/packages/powersync_core/lib/src/bucket_storage.dart
similarity index 99%
rename from packages/powersync/lib/src/bucket_storage.dart
rename to packages/powersync_core/lib/src/bucket_storage.dart
index e21ee5db..5f756885 100644
--- a/packages/powersync/lib/src/bucket_storage.dart
+++ b/packages/powersync_core/lib/src/bucket_storage.dart
@@ -2,8 +2,8 @@ import 'dart:async';
import 'dart:convert';
import 'package:collection/collection.dart';
-import 'package:powersync/sqlite_async.dart';
-import 'package:powersync/sqlite3_common.dart';
+import 'package:powersync_core/sqlite_async.dart';
+import 'package:powersync_core/sqlite3_common.dart';
import 'crud.dart';
import 'schema_logic.dart';
diff --git a/packages/powersync/lib/src/connector.dart b/packages/powersync_core/lib/src/connector.dart
similarity index 100%
rename from packages/powersync/lib/src/connector.dart
rename to packages/powersync_core/lib/src/connector.dart
diff --git a/packages/powersync/lib/src/crud.dart b/packages/powersync_core/lib/src/crud.dart
similarity index 98%
rename from packages/powersync/lib/src/crud.dart
rename to packages/powersync_core/lib/src/crud.dart
index 3ca4c288..5a11ae4d 100644
--- a/packages/powersync/lib/src/crud.dart
+++ b/packages/powersync_core/lib/src/crud.dart
@@ -1,7 +1,7 @@
import 'dart:convert';
import 'package:collection/collection.dart';
-import 'package:powersync/sqlite3_common.dart' as sqlite;
+import 'package:powersync_core/sqlite3_common.dart' as sqlite;
/// A batch of client-side changes.
class CrudBatch {
diff --git a/packages/powersync/lib/src/database/native/native_powersync_database.dart b/packages/powersync_core/lib/src/database/native/native_powersync_database.dart
similarity index 93%
rename from packages/powersync/lib/src/database/native/native_powersync_database.dart
rename to packages/powersync_core/lib/src/database/native/native_powersync_database.dart
index fdfe2979..74442c5e 100644
--- a/packages/powersync/lib/src/database/native/native_powersync_database.dart
+++ b/packages/powersync_core/lib/src/database/native/native_powersync_database.dart
@@ -4,20 +4,20 @@ import 'package:meta/meta.dart';
import 'package:http/http.dart' as http;
import 'package:logging/logging.dart';
-import 'package:powersync/src/abort_controller.dart';
-import 'package:powersync/src/bucket_storage.dart';
-import 'package:powersync/src/connector.dart';
-import 'package:powersync/src/database/powersync_database.dart';
-import 'package:powersync/src/database/powersync_db_mixin.dart';
-import 'package:powersync/src/isolate_completer.dart';
-import 'package:powersync/src/log.dart';
-import 'package:powersync/src/log_internal.dart';
-import 'package:powersync/src/open_factory/abstract_powersync_open_factory.dart';
-import 'package:powersync/src/open_factory/native/native_open_factory.dart';
-import 'package:powersync/src/schema.dart';
-import 'package:powersync/src/schema_logic.dart';
-import 'package:powersync/src/streaming_sync.dart';
-import 'package:powersync/src/sync_status.dart';
+import 'package:powersync_core/src/abort_controller.dart';
+import 'package:powersync_core/src/bucket_storage.dart';
+import 'package:powersync_core/src/connector.dart';
+import 'package:powersync_core/src/database/powersync_database.dart';
+import 'package:powersync_core/src/database/powersync_db_mixin.dart';
+import 'package:powersync_core/src/isolate_completer.dart';
+import 'package:powersync_core/src/log.dart';
+import 'package:powersync_core/src/log_internal.dart';
+import 'package:powersync_core/src/open_factory/abstract_powersync_open_factory.dart';
+import 'package:powersync_core/src/open_factory/native/native_open_factory.dart';
+import 'package:powersync_core/src/schema.dart';
+import 'package:powersync_core/src/schema_logic.dart';
+import 'package:powersync_core/src/streaming_sync.dart';
+import 'package:powersync_core/src/sync_status.dart';
import 'package:sqlite_async/sqlite3_common.dart';
import 'package:sqlite_async/sqlite_async.dart';
diff --git a/packages/powersync/lib/src/database/powersync_database.dart b/packages/powersync_core/lib/src/database/powersync_database.dart
similarity index 92%
rename from packages/powersync/lib/src/database/powersync_database.dart
rename to packages/powersync_core/lib/src/database/powersync_database.dart
index 96a48ef6..528b029f 100644
--- a/packages/powersync/lib/src/database/powersync_database.dart
+++ b/packages/powersync_core/lib/src/database/powersync_database.dart
@@ -1,7 +1,7 @@
import 'package:logging/logging.dart';
-import 'package:powersync/src/database/powersync_database_impl.dart';
-import 'package:powersync/src/database/powersync_db_mixin.dart';
-import 'package:powersync/src/open_factory/abstract_powersync_open_factory.dart';
+import 'package:powersync_core/src/database/powersync_database_impl.dart';
+import 'package:powersync_core/src/database/powersync_db_mixin.dart';
+import 'package:powersync_core/src/open_factory/abstract_powersync_open_factory.dart';
import 'package:sqlite_async/sqlite_async.dart';
import '../schema.dart';
diff --git a/packages/powersync/lib/src/database/powersync_database_impl.dart b/packages/powersync_core/lib/src/database/powersync_database_impl.dart
similarity index 100%
rename from packages/powersync/lib/src/database/powersync_database_impl.dart
rename to packages/powersync_core/lib/src/database/powersync_database_impl.dart
diff --git a/packages/powersync/lib/src/database/powersync_database_impl_stub.dart b/packages/powersync_core/lib/src/database/powersync_database_impl_stub.dart
similarity index 94%
rename from packages/powersync/lib/src/database/powersync_database_impl_stub.dart
rename to packages/powersync_core/lib/src/database/powersync_database_impl_stub.dart
index 68faf631..a4b0ce80 100644
--- a/packages/powersync/lib/src/database/powersync_database_impl_stub.dart
+++ b/packages/powersync_core/lib/src/database/powersync_database_impl_stub.dart
@@ -2,9 +2,9 @@ import 'dart:async';
import 'package:logging/logging.dart';
import 'package:meta/meta.dart';
-import 'package:powersync/sqlite_async.dart';
-import 'package:powersync/src/database/powersync_db_mixin.dart';
-import 'package:powersync/src/open_factory/abstract_powersync_open_factory.dart';
+import 'package:powersync_core/sqlite_async.dart';
+import 'package:powersync_core/src/database/powersync_db_mixin.dart';
+import 'package:powersync_core/src/open_factory/abstract_powersync_open_factory.dart';
import 'powersync_database.dart';
import '../connector.dart';
diff --git a/packages/powersync/lib/src/database/powersync_db_mixin.dart b/packages/powersync_core/lib/src/database/powersync_db_mixin.dart
similarity index 96%
rename from packages/powersync/lib/src/database/powersync_db_mixin.dart
rename to packages/powersync_core/lib/src/database/powersync_db_mixin.dart
index 05e5bae0..ac542143 100644
--- a/packages/powersync/lib/src/database/powersync_db_mixin.dart
+++ b/packages/powersync_core/lib/src/database/powersync_db_mixin.dart
@@ -2,15 +2,15 @@ import 'dart:async';
import 'package:logging/logging.dart';
import 'package:meta/meta.dart';
-import 'package:powersync/sqlite3_common.dart';
-import 'package:powersync/sqlite_async.dart';
-import 'package:powersync/src/abort_controller.dart';
-import 'package:powersync/src/connector.dart';
-import 'package:powersync/src/crud.dart';
-import 'package:powersync/src/powersync_update_notification.dart';
-import 'package:powersync/src/schema.dart';
-import 'package:powersync/src/schema_logic.dart';
-import 'package:powersync/src/sync_status.dart';
+import 'package:powersync_core/sqlite3_common.dart';
+import 'package:powersync_core/sqlite_async.dart';
+import 'package:powersync_core/src/abort_controller.dart';
+import 'package:powersync_core/src/connector.dart';
+import 'package:powersync_core/src/crud.dart';
+import 'package:powersync_core/src/powersync_update_notification.dart';
+import 'package:powersync_core/src/schema.dart';
+import 'package:powersync_core/src/schema_logic.dart';
+import 'package:powersync_core/src/sync_status.dart';
mixin PowerSyncDatabaseMixin implements SqliteConnection {
/// Schema used for the local database.
diff --git a/packages/powersync/lib/src/database/web/web_powersync_database.dart b/packages/powersync_core/lib/src/database/web/web_powersync_database.dart
similarity index 91%
rename from packages/powersync/lib/src/database/web/web_powersync_database.dart
rename to packages/powersync_core/lib/src/database/web/web_powersync_database.dart
index abf3305e..828b5fb5 100644
--- a/packages/powersync/lib/src/database/web/web_powersync_database.dart
+++ b/packages/powersync_core/lib/src/database/web/web_powersync_database.dart
@@ -2,18 +2,18 @@ import 'dart:async';
import 'package:meta/meta.dart';
import 'package:fetch_client/fetch_client.dart';
import 'package:logging/logging.dart';
-import 'package:powersync/src/abort_controller.dart';
-import 'package:powersync/src/bucket_storage.dart';
-import 'package:powersync/src/connector.dart';
-import 'package:powersync/src/database/powersync_database.dart';
-import 'package:powersync/src/database/powersync_db_mixin.dart';
-import 'package:powersync/src/log.dart';
-import 'package:powersync/src/open_factory/abstract_powersync_open_factory.dart';
-import 'package:powersync/src/open_factory/web/web_open_factory.dart';
-import 'package:powersync/src/schema.dart';
-import 'package:powersync/src/streaming_sync.dart';
+import 'package:powersync_core/src/abort_controller.dart';
+import 'package:powersync_core/src/bucket_storage.dart';
+import 'package:powersync_core/src/connector.dart';
+import 'package:powersync_core/src/database/powersync_database.dart';
+import 'package:powersync_core/src/database/powersync_db_mixin.dart';
+import 'package:powersync_core/src/log.dart';
+import 'package:powersync_core/src/open_factory/abstract_powersync_open_factory.dart';
+import 'package:powersync_core/src/open_factory/web/web_open_factory.dart';
+import 'package:powersync_core/src/schema.dart';
+import 'package:powersync_core/src/streaming_sync.dart';
import 'package:sqlite_async/sqlite_async.dart';
-import 'package:powersync/src/schema_logic.dart' as schema_logic;
+import 'package:powersync_core/src/schema_logic.dart' as schema_logic;
/// A PowerSync managed database.
///
diff --git a/packages/powersync/lib/src/exceptions.dart b/packages/powersync_core/lib/src/exceptions.dart
similarity index 100%
rename from packages/powersync/lib/src/exceptions.dart
rename to packages/powersync_core/lib/src/exceptions.dart
diff --git a/packages/powersync/lib/src/isolate_completer.dart b/packages/powersync_core/lib/src/isolate_completer.dart
similarity index 100%
rename from packages/powersync/lib/src/isolate_completer.dart
rename to packages/powersync_core/lib/src/isolate_completer.dart
diff --git a/packages/powersync/lib/src/log.dart b/packages/powersync_core/lib/src/log.dart
similarity index 95%
rename from packages/powersync/lib/src/log.dart
rename to packages/powersync_core/lib/src/log.dart
index c628295b..0d0ef1ce 100644
--- a/packages/powersync/lib/src/log.dart
+++ b/packages/powersync_core/lib/src/log.dart
@@ -1,5 +1,5 @@
import 'package:logging/logging.dart';
-import 'package:powersync/src/log_internal.dart';
+import 'package:powersync_core/src/log_internal.dart';
/// Logger that outputs to the console in debug mode, and nothing
/// in release and profile modes.
diff --git a/packages/powersync/lib/src/log_internal.dart b/packages/powersync_core/lib/src/log_internal.dart
similarity index 100%
rename from packages/powersync/lib/src/log_internal.dart
rename to packages/powersync_core/lib/src/log_internal.dart
diff --git a/packages/powersync/lib/src/open_factory.dart b/packages/powersync_core/lib/src/open_factory.dart
similarity index 100%
rename from packages/powersync/lib/src/open_factory.dart
rename to packages/powersync_core/lib/src/open_factory.dart
diff --git a/packages/powersync/lib/src/open_factory/abstract_powersync_open_factory.dart b/packages/powersync_core/lib/src/open_factory/abstract_powersync_open_factory.dart
similarity index 95%
rename from packages/powersync/lib/src/open_factory/abstract_powersync_open_factory.dart
rename to packages/powersync_core/lib/src/open_factory/abstract_powersync_open_factory.dart
index 06e8feda..d5666fad 100644
--- a/packages/powersync/lib/src/open_factory/abstract_powersync_open_factory.dart
+++ b/packages/powersync_core/lib/src/open_factory/abstract_powersync_open_factory.dart
@@ -2,8 +2,8 @@ import 'dart:async';
import 'package:universal_io/io.dart';
import 'dart:math';
-import 'package:powersync/sqlite_async.dart';
-import 'package:powersync/src/open_factory/common_db_functions.dart';
+import 'package:powersync_core/sqlite_async.dart';
+import 'package:powersync_core/src/open_factory/common_db_functions.dart';
import 'package:sqlite_async/sqlite3_common.dart';
const powerSyncDefaultSqliteOptions = SqliteOptions(
diff --git a/packages/powersync/lib/src/open_factory/common_db_functions.dart b/packages/powersync_core/lib/src/open_factory/common_db_functions.dart
similarity index 100%
rename from packages/powersync/lib/src/open_factory/common_db_functions.dart
rename to packages/powersync_core/lib/src/open_factory/common_db_functions.dart
diff --git a/packages/powersync/lib/src/open_factory/native/native_open_factory.dart b/packages/powersync_core/lib/src/open_factory/native/native_open_factory.dart
similarity index 94%
rename from packages/powersync/lib/src/open_factory/native/native_open_factory.dart
rename to packages/powersync_core/lib/src/open_factory/native/native_open_factory.dart
index e2cbd575..f564d349 100644
--- a/packages/powersync/lib/src/open_factory/native/native_open_factory.dart
+++ b/packages/powersync_core/lib/src/open_factory/native/native_open_factory.dart
@@ -1,9 +1,10 @@
import 'dart:ffi';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/src/exceptions.dart';
+import 'package:powersync_core/src/log.dart';
import 'package:universal_io/io.dart';
import 'dart:isolate';
-import 'package:powersync/src/open_factory/abstract_powersync_open_factory.dart';
+import 'package:powersync_core/src/open_factory/abstract_powersync_open_factory.dart';
import 'package:sqlite_async/sqlite3.dart' as sqlite;
import 'package:sqlite_async/sqlite3_common.dart';
import 'package:sqlite_async/sqlite_async.dart';
diff --git a/packages/powersync/lib/src/open_factory/open_factory_stub.dart b/packages/powersync_core/lib/src/open_factory/open_factory_stub.dart
similarity index 100%
rename from packages/powersync/lib/src/open_factory/open_factory_stub.dart
rename to packages/powersync_core/lib/src/open_factory/open_factory_stub.dart
diff --git a/packages/powersync/lib/src/open_factory/web/web_open_factory.dart b/packages/powersync_core/lib/src/open_factory/web/web_open_factory.dart
similarity index 91%
rename from packages/powersync/lib/src/open_factory/web/web_open_factory.dart
rename to packages/powersync_core/lib/src/open_factory/web/web_open_factory.dart
index 8c137393..bf4cf979 100644
--- a/packages/powersync/lib/src/open_factory/web/web_open_factory.dart
+++ b/packages/powersync_core/lib/src/open_factory/web/web_open_factory.dart
@@ -1,7 +1,7 @@
import 'dart:async';
-import 'package:powersync/src/open_factory/abstract_powersync_open_factory.dart';
-import 'package:powersync/src/uuid.dart';
+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/sqlite_async.dart';
diff --git a/packages/powersync_core/lib/src/powersync_database.dart b/packages/powersync_core/lib/src/powersync_database.dart
new file mode 100644
index 00000000..144a7df4
--- /dev/null
+++ b/packages/powersync_core/lib/src/powersync_database.dart
@@ -0,0 +1 @@
+export 'package:powersync_core/src/database/powersync_database.dart';
diff --git a/packages/powersync/lib/src/powersync_update_notification.dart b/packages/powersync_core/lib/src/powersync_update_notification.dart
similarity index 100%
rename from packages/powersync/lib/src/powersync_update_notification.dart
rename to packages/powersync_core/lib/src/powersync_update_notification.dart
diff --git a/packages/powersync/lib/src/schema.dart b/packages/powersync_core/lib/src/schema.dart
similarity index 100%
rename from packages/powersync/lib/src/schema.dart
rename to packages/powersync_core/lib/src/schema.dart
diff --git a/packages/powersync/lib/src/schema_logic.dart b/packages/powersync_core/lib/src/schema_logic.dart
similarity index 100%
rename from packages/powersync/lib/src/schema_logic.dart
rename to packages/powersync_core/lib/src/schema_logic.dart
diff --git a/packages/powersync/lib/src/stream_utils.dart b/packages/powersync_core/lib/src/stream_utils.dart
similarity index 100%
rename from packages/powersync/lib/src/stream_utils.dart
rename to packages/powersync_core/lib/src/stream_utils.dart
diff --git a/packages/powersync/lib/src/streaming_sync.dart b/packages/powersync_core/lib/src/streaming_sync.dart
similarity index 98%
rename from packages/powersync/lib/src/streaming_sync.dart
rename to packages/powersync_core/lib/src/streaming_sync.dart
index 70760878..972e3448 100644
--- a/packages/powersync/lib/src/streaming_sync.dart
+++ b/packages/powersync_core/lib/src/streaming_sync.dart
@@ -2,10 +2,10 @@ import 'dart:async';
import 'dart:convert' as convert;
import 'package:http/http.dart' as http;
-import 'package:powersync/src/abort_controller.dart';
-import 'package:powersync/src/exceptions.dart';
-import 'package:powersync/src/log_internal.dart';
-import 'package:powersync/src/user_agent/user_agent.dart';
+import 'package:powersync_core/src/abort_controller.dart';
+import 'package:powersync_core/src/exceptions.dart';
+import 'package:powersync_core/src/log_internal.dart';
+import 'package:powersync_core/src/user_agent/user_agent.dart';
import 'package:sqlite_async/mutex.dart';
import 'bucket_storage.dart';
diff --git a/packages/powersync/lib/src/sync_status.dart b/packages/powersync_core/lib/src/sync_status.dart
similarity index 100%
rename from packages/powersync/lib/src/sync_status.dart
rename to packages/powersync_core/lib/src/sync_status.dart
diff --git a/packages/powersync/lib/src/sync_types.dart b/packages/powersync_core/lib/src/sync_types.dart
similarity index 100%
rename from packages/powersync/lib/src/sync_types.dart
rename to packages/powersync_core/lib/src/sync_types.dart
diff --git a/packages/powersync/lib/src/user_agent/user_agent.dart b/packages/powersync_core/lib/src/user_agent/user_agent.dart
similarity index 100%
rename from packages/powersync/lib/src/user_agent/user_agent.dart
rename to packages/powersync_core/lib/src/user_agent/user_agent.dart
diff --git a/packages/powersync/lib/src/user_agent/user_agent_native.dart b/packages/powersync_core/lib/src/user_agent/user_agent_native.dart
similarity index 90%
rename from packages/powersync/lib/src/user_agent/user_agent_native.dart
rename to packages/powersync_core/lib/src/user_agent/user_agent_native.dart
index 018ddf87..8874cee0 100644
--- a/packages/powersync/lib/src/user_agent/user_agent_native.dart
+++ b/packages/powersync_core/lib/src/user_agent/user_agent_native.dart
@@ -1,6 +1,6 @@
import 'dart:io';
-import 'package:powersync/src/version.dart';
+import 'package:powersync_core/src/version.dart';
String powerSyncUserAgent() {
var dartVersion = RegExp(r'[\w.]+').stringMatch(Platform.version);
diff --git a/packages/powersync/lib/src/user_agent/user_agent_stub.dart b/packages/powersync_core/lib/src/user_agent/user_agent_stub.dart
similarity index 100%
rename from packages/powersync/lib/src/user_agent/user_agent_stub.dart
rename to packages/powersync_core/lib/src/user_agent/user_agent_stub.dart
diff --git a/packages/powersync/lib/src/user_agent/user_agent_web.dart b/packages/powersync_core/lib/src/user_agent/user_agent_web.dart
similarity index 86%
rename from packages/powersync/lib/src/user_agent/user_agent_web.dart
rename to packages/powersync_core/lib/src/user_agent/user_agent_web.dart
index fb9a9d6c..1d847319 100644
--- a/packages/powersync/lib/src/user_agent/user_agent_web.dart
+++ b/packages/powersync_core/lib/src/user_agent/user_agent_web.dart
@@ -1,4 +1,4 @@
-import 'package:powersync/src/version.dart';
+import 'package:powersync_core/src/version.dart';
String powerSyncUserAgent() {
return 'powersync-dart/$libraryVersion Dart (flutter-web)';
diff --git a/packages/powersync/lib/src/uuid.dart b/packages/powersync_core/lib/src/uuid.dart
similarity index 100%
rename from packages/powersync/lib/src/uuid.dart
rename to packages/powersync_core/lib/src/uuid.dart
diff --git a/packages/powersync/lib/src/version.dart b/packages/powersync_core/lib/src/version.dart
similarity index 100%
rename from packages/powersync/lib/src/version.dart
rename to packages/powersync_core/lib/src/version.dart
diff --git a/packages/powersync/lib/src/web/powersync_db.worker.dart b/packages/powersync_core/lib/src/web/powersync_db.worker.dart
similarity index 100%
rename from packages/powersync/lib/src/web/powersync_db.worker.dart
rename to packages/powersync_core/lib/src/web/powersync_db.worker.dart
diff --git a/packages/powersync/lib/src/web/worker_utils.dart b/packages/powersync_core/lib/src/web/worker_utils.dart
similarity index 88%
rename from packages/powersync/lib/src/web/worker_utils.dart
rename to packages/powersync_core/lib/src/web/worker_utils.dart
index 9f15547f..da14808d 100644
--- a/packages/powersync/lib/src/web/worker_utils.dart
+++ b/packages/powersync_core/lib/src/web/worker_utils.dart
@@ -1,5 +1,5 @@
-import 'package:powersync/sqlite3_common.dart';
-import 'package:powersync/src/open_factory/common_db_functions.dart';
+import 'package:powersync_core/sqlite3_common.dart';
+import 'package:powersync_core/src/open_factory/common_db_functions.dart';
import 'package:uuid/uuid.dart';
// Registers custom SQLite functions for the SQLite connection
diff --git a/packages/powersync_core/pubspec.yaml b/packages/powersync_core/pubspec.yaml
new file mode 100644
index 00000000..6be6c49f
--- /dev/null
+++ b/packages/powersync_core/pubspec.yaml
@@ -0,0 +1,49 @@
+name: powersync_core
+description: A starting point for Dart libraries or applications.
+version: 1.0.0
+# repository: https://github.com/my_org/my_repo
+
+environment:
+ sdk: ^3.4.3
+
+dependencies:
+ flutter:
+ sdk: flutter
+ # Add regular dependencies here.
+ sqlite_async: ^0.9.0
+ # We only use sqlite3 as a transitive dependency,
+ # but right now we need a minimum of v2.4.6.
+ sqlite3: ^2.4.6
+ sqlite3_flutter_libs: ^0.5.23
+ universal_io: ^2.0.0
+ powersync_flutter_libs: ^0.4.0
+ meta: ^1.0.0
+ http: ^1.1.0
+ uuid: ^4.2.0
+ async: ^2.10.0
+ logging: ^1.1.1
+ collection: ^1.17.0
+ fetch_client: ^1.1.2
+ pubspec_parse: ^1.3.0
+ args: ^2.5.0
+ pub_semver: ^2.1.4
+dev_dependencies:
+ dcli: ^4.0.0
+ lints: ^3.0.0
+ test: ^1.25.0
+ test_api: ^0.7.0
+ path_provider: ^2.0.13
+ shelf: ^1.4.1
+ shelf_router: ^1.1.4
+ shelf_static: ^1.1.2
+ stream_channel: ^2.1.2
+ path: ^1.8.3
+ js: ">=0.6.7 <0.8.0"
+
+platforms:
+ android:
+ ios:
+ linux:
+ macos:
+ windows:
+ web:
diff --git a/packages/powersync/test/bucket_storage_test.dart b/packages/powersync_core/test/bucket_storage_test.dart
similarity index 99%
rename from packages/powersync/test/bucket_storage_test.dart
rename to packages/powersync_core/test/bucket_storage_test.dart
index e6213513..53e8db5b 100644
--- a/packages/powersync/test/bucket_storage_test.dart
+++ b/packages/powersync_core/test/bucket_storage_test.dart
@@ -1,6 +1,6 @@
-import 'package:powersync/powersync.dart';
-import 'package:powersync/src/bucket_storage.dart';
-import 'package:powersync/src/sync_types.dart';
+import 'package:powersync_core/powersync_core.dart';
+import 'package:powersync_core/src/bucket_storage.dart';
+import 'package:powersync_core/src/sync_types.dart';
import 'package:sqlite_async/sqlite3_common.dart';
import 'package:test/test.dart';
diff --git a/packages/powersync/test/credentials_test.dart b/packages/powersync_core/test/credentials_test.dart
similarity index 90%
rename from packages/powersync/test/credentials_test.dart
rename to packages/powersync_core/test/credentials_test.dart
index fcdb2551..013b5efe 100644
--- a/packages/powersync/test/credentials_test.dart
+++ b/packages/powersync_core/test/credentials_test.dart
@@ -1,4 +1,4 @@
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:test/test.dart';
void main() {
diff --git a/packages/powersync/test/crud_test.dart b/packages/powersync_core/test/crud_test.dart
similarity index 99%
rename from packages/powersync/test/crud_test.dart
rename to packages/powersync_core/test/crud_test.dart
index b01e71dc..351e1eab 100644
--- a/packages/powersync/test/crud_test.dart
+++ b/packages/powersync_core/test/crud_test.dart
@@ -1,4 +1,4 @@
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:sqlite_async/sqlite3_common.dart';
import 'package:test/test.dart';
diff --git a/packages/powersync/test/disconnect_test.dart b/packages/powersync_core/test/disconnect_test.dart
similarity index 95%
rename from packages/powersync/test/disconnect_test.dart
rename to packages/powersync_core/test/disconnect_test.dart
index 80cb52ed..489928ef 100644
--- a/packages/powersync/test/disconnect_test.dart
+++ b/packages/powersync_core/test/disconnect_test.dart
@@ -1,5 +1,5 @@
-import 'package:powersync/powersync.dart';
-import 'package:powersync/sqlite_async.dart';
+import 'package:powersync_core/powersync_core.dart';
+import 'package:powersync_core/sqlite_async.dart';
import 'package:test/test.dart';
import 'streaming_sync_test.dart';
import 'utils/test_utils_impl.dart';
diff --git a/packages/powersync/test/offline_online_test.dart b/packages/powersync_core/test/offline_online_test.dart
similarity index 98%
rename from packages/powersync/test/offline_online_test.dart
rename to packages/powersync_core/test/offline_online_test.dart
index 8c831806..2fb1ed6d 100644
--- a/packages/powersync/test/offline_online_test.dart
+++ b/packages/powersync_core/test/offline_online_test.dart
@@ -1,6 +1,6 @@
import 'dart:convert';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:sqlite_async/src/utils/shared_utils.dart';
import 'package:test/test.dart';
diff --git a/packages/powersync/test/performance_native_test.dart b/packages/powersync_core/test/performance_native_test.dart
similarity index 98%
rename from packages/powersync/test/performance_native_test.dart
rename to packages/powersync_core/test/performance_native_test.dart
index 9def5945..b36236de 100644
--- a/packages/powersync/test/performance_native_test.dart
+++ b/packages/powersync_core/test/performance_native_test.dart
@@ -1,5 +1,5 @@
@TestOn('!browser')
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:test/test.dart';
import 'performance_shared_test.dart';
diff --git a/packages/powersync/test/performance_shared_test.dart b/packages/powersync_core/test/performance_shared_test.dart
similarity index 98%
rename from packages/powersync/test/performance_shared_test.dart
rename to packages/powersync_core/test/performance_shared_test.dart
index 5044c099..f4a20431 100644
--- a/packages/powersync/test/performance_shared_test.dart
+++ b/packages/powersync_core/test/performance_shared_test.dart
@@ -1,4 +1,4 @@
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:test/test.dart';
import 'utils/test_utils_impl.dart';
diff --git a/packages/powersync/test/powersync_native_test.dart b/packages/powersync_core/test/powersync_native_test.dart
similarity index 98%
rename from packages/powersync/test/powersync_native_test.dart
rename to packages/powersync_core/test/powersync_native_test.dart
index aeda23d8..1a338e3d 100644
--- a/packages/powersync/test/powersync_native_test.dart
+++ b/packages/powersync_core/test/powersync_native_test.dart
@@ -2,7 +2,7 @@
import 'dart:async';
import 'dart:math';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:sqlite_async/sqlite3_common.dart';
import 'package:test/test.dart';
import 'utils/abstract_test_utils.dart';
diff --git a/packages/powersync/test/powersync_shared_test.dart b/packages/powersync_core/test/powersync_shared_test.dart
similarity index 100%
rename from packages/powersync/test/powersync_shared_test.dart
rename to packages/powersync_core/test/powersync_shared_test.dart
diff --git a/packages/powersync/test/schema_test.dart b/packages/powersync_core/test/schema_test.dart
similarity index 99%
rename from packages/powersync/test/schema_test.dart
rename to packages/powersync_core/test/schema_test.dart
index cfa2396d..23310288 100644
--- a/packages/powersync/test/schema_test.dart
+++ b/packages/powersync_core/test/schema_test.dart
@@ -1,4 +1,4 @@
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:test/test.dart';
import 'utils/test_utils_impl.dart';
diff --git a/packages/powersync/test/server/asset_server.dart b/packages/powersync_core/test/server/asset_server.dart
similarity index 100%
rename from packages/powersync/test/server/asset_server.dart
rename to packages/powersync_core/test/server/asset_server.dart
diff --git a/packages/powersync/test/server/worker_server.dart b/packages/powersync_core/test/server/worker_server.dart
similarity index 100%
rename from packages/powersync/test/server/worker_server.dart
rename to packages/powersync_core/test/server/worker_server.dart
diff --git a/packages/powersync/test/stream_test.dart b/packages/powersync_core/test/stream_test.dart
similarity index 99%
rename from packages/powersync/test/stream_test.dart
rename to packages/powersync_core/test/stream_test.dart
index 412711f4..437fdc92 100644
--- a/packages/powersync/test/stream_test.dart
+++ b/packages/powersync_core/test/stream_test.dart
@@ -4,7 +4,7 @@ import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart';
-import 'package:powersync/src/stream_utils.dart';
+import 'package:powersync_core/src/stream_utils.dart';
import 'package:test/test.dart';
void main() {
diff --git a/packages/powersync/test/streaming_sync_test.dart b/packages/powersync_core/test/streaming_sync_test.dart
similarity index 98%
rename from packages/powersync/test/streaming_sync_test.dart
rename to packages/powersync_core/test/streaming_sync_test.dart
index 6d1e9e0d..c8af0615 100644
--- a/packages/powersync/test/streaming_sync_test.dart
+++ b/packages/powersync_core/test/streaming_sync_test.dart
@@ -3,7 +3,7 @@
import 'dart:async';
import 'dart:math';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:test/test.dart';
import 'test_server.dart';
diff --git a/packages/powersync/test/test_server.dart b/packages/powersync_core/test/test_server.dart
similarity index 100%
rename from packages/powersync/test/test_server.dart
rename to packages/powersync_core/test/test_server.dart
diff --git a/packages/powersync/test/upload_test.dart b/packages/powersync_core/test/upload_test.dart
similarity index 97%
rename from packages/powersync/test/upload_test.dart
rename to packages/powersync_core/test/upload_test.dart
index 20ad04f7..83279a4a 100644
--- a/packages/powersync/test/upload_test.dart
+++ b/packages/powersync_core/test/upload_test.dart
@@ -1,6 +1,6 @@
@TestOn('!browser')
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:test/test.dart';
import 'test_server.dart';
diff --git a/packages/powersync/test/utils/abstract_test_utils.dart b/packages/powersync_core/test/utils/abstract_test_utils.dart
similarity index 98%
rename from packages/powersync/test/utils/abstract_test_utils.dart
rename to packages/powersync_core/test/utils/abstract_test_utils.dart
index efae5964..e79674a7 100644
--- a/packages/powersync/test/utils/abstract_test_utils.dart
+++ b/packages/powersync_core/test/utils/abstract_test_utils.dart
@@ -1,5 +1,5 @@
import 'package:logging/logging.dart';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:sqlite_async/sqlite3_common.dart';
import 'package:sqlite_async/sqlite_async.dart';
import 'package:test_api/src/backend/invoker.dart';
diff --git a/packages/powersync/test/utils/native_test_utils.dart b/packages/powersync_core/test/utils/native_test_utils.dart
similarity index 97%
rename from packages/powersync/test/utils/native_test_utils.dart
rename to packages/powersync_core/test/utils/native_test_utils.dart
index 8be005e9..ab8cfd6a 100644
--- a/packages/powersync/test/utils/native_test_utils.dart
+++ b/packages/powersync_core/test/utils/native_test_utils.dart
@@ -1,7 +1,7 @@
import 'dart:async';
import 'dart:ffi';
import 'dart:io';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:sqlite_async/sqlite3_common.dart';
import 'package:sqlite_async/sqlite_async.dart';
import 'package:sqlite3/open.dart' as sqlite_open;
diff --git a/packages/powersync/test/utils/stub_test_utils.dart b/packages/powersync_core/test/utils/stub_test_utils.dart
similarity index 100%
rename from packages/powersync/test/utils/stub_test_utils.dart
rename to packages/powersync_core/test/utils/stub_test_utils.dart
diff --git a/packages/powersync/test/utils/test_utils_impl.dart b/packages/powersync_core/test/utils/test_utils_impl.dart
similarity index 100%
rename from packages/powersync/test/utils/test_utils_impl.dart
rename to packages/powersync_core/test/utils/test_utils_impl.dart
diff --git a/packages/powersync/test/utils/web_test_utils.dart b/packages/powersync_core/test/utils/web_test_utils.dart
similarity index 97%
rename from packages/powersync/test/utils/web_test_utils.dart
rename to packages/powersync_core/test/utils/web_test_utils.dart
index a358d0ff..cb00a9c9 100644
--- a/packages/powersync/test/utils/web_test_utils.dart
+++ b/packages/powersync_core/test/utils/web_test_utils.dart
@@ -3,7 +3,7 @@ import 'dart:html';
import 'package:js/js.dart';
import 'package:logging/logging.dart';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:sqlite_async/sqlite3_common.dart';
import 'package:sqlite_async/sqlite_async.dart';
import 'package:test/test.dart';
diff --git a/packages/powersync/test/watch_test.dart b/packages/powersync_core/test/watch_test.dart
similarity index 98%
rename from packages/powersync/test/watch_test.dart
rename to packages/powersync_core/test/watch_test.dart
index 493f1aa7..6408b4fc 100644
--- a/packages/powersync/test/watch_test.dart
+++ b/packages/powersync_core/test/watch_test.dart
@@ -3,7 +3,7 @@ library;
import 'dart:async';
import 'dart:math';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'package:sqlite_async/sqlite_async.dart';
import 'package:test/test.dart';
From 0266f7850433eaf16c6a937ecb6d57c4767a29d5 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Wed, 16 Oct 2024 14:01:28 +0200
Subject: [PATCH 02/33] Fix tests running in core
---
melos.yaml | 2 +-
packages/powersync_core/.gitignore | 2 ++
packages/{powersync => powersync_core}/assets/.gitkeep | 0
packages/powersync_core/pubspec.yaml | 9 +++------
scripts/compile_webworker.dart | 6 +++---
scripts/init_powersync_core_binary.dart | 2 +-
6 files changed, 10 insertions(+), 11 deletions(-)
rename packages/{powersync => powersync_core}/assets/.gitkeep (100%)
diff --git a/melos.yaml b/melos.yaml
index 1a04f0a1..8465fb11 100644
--- a/melos.yaml
+++ b/melos.yaml
@@ -46,7 +46,7 @@ scripts:
exec:
concurrency: 1
packageFilters:
- scope: powersync
+ scope: powersync_core
analyze:demos:
description: Analyze Dart code in demos.
diff --git a/packages/powersync_core/.gitignore b/packages/powersync_core/.gitignore
index 3cceda55..ddfb9c2a 100644
--- a/packages/powersync_core/.gitignore
+++ b/packages/powersync_core/.gitignore
@@ -5,3 +5,5 @@
# Avoid committing pubspec.lock for library packages; see
# https://dart.dev/guides/libraries/private-files#pubspeclock.
pubspec.lock
+
+/test-db
\ No newline at end of file
diff --git a/packages/powersync/assets/.gitkeep b/packages/powersync_core/assets/.gitkeep
similarity index 100%
rename from packages/powersync/assets/.gitkeep
rename to packages/powersync_core/assets/.gitkeep
diff --git a/packages/powersync_core/pubspec.yaml b/packages/powersync_core/pubspec.yaml
index 6be6c49f..f4bde744 100644
--- a/packages/powersync_core/pubspec.yaml
+++ b/packages/powersync_core/pubspec.yaml
@@ -1,20 +1,17 @@
name: powersync_core
-description: A starting point for Dart libraries or applications.
version: 1.0.0
-# repository: https://github.com/my_org/my_repo
+homepage: https://powersync.com
+repository: https://github.com/powersync-ja/powersync.dart
+description: PowerSync Dart SDK - sync engine for building local-first apps.
environment:
sdk: ^3.4.3
dependencies:
- flutter:
- sdk: flutter
- # Add regular dependencies here.
sqlite_async: ^0.9.0
# We only use sqlite3 as a transitive dependency,
# but right now we need a minimum of v2.4.6.
sqlite3: ^2.4.6
- sqlite3_flutter_libs: ^0.5.23
universal_io: ^2.0.0
powersync_flutter_libs: ^0.4.0
meta: ^1.0.0
diff --git a/scripts/compile_webworker.dart b/scripts/compile_webworker.dart
index 3233d2be..5125997d 100644
--- a/scripts/compile_webworker.dart
+++ b/scripts/compile_webworker.dart
@@ -10,10 +10,10 @@ Future main() async {
/// The monorepo root assets directory
final workerFilename = 'powersync_db.worker.js';
final outputPath =
- path.join(repoRoot, 'packages/powersync/assets/$workerFilename');
+ path.join(repoRoot, 'packages/powersync_core/assets/$workerFilename');
- final workerSourcePath = path.join(
- repoRoot, './packages/powersync/lib/src/web/powersync_db.worker.dart');
+ final workerSourcePath = path.join(repoRoot,
+ './packages/powersync_core/lib/src/web/powersync_db.worker.dart');
// And compile worker code
final process = await Process.run(
diff --git a/scripts/init_powersync_core_binary.dart b/scripts/init_powersync_core_binary.dart
index 42648d15..2c0b8d2f 100644
--- a/scripts/init_powersync_core_binary.dart
+++ b/scripts/init_powersync_core_binary.dart
@@ -10,7 +10,7 @@ final sqliteUrl =
void main() async {
final sqliteCoreFilename = getLibraryForPlatform();
- final powersyncPath = "packages/powersync";
+ final powersyncPath = "packages/powersync_core";
final sqliteCorePath = '$powersyncPath/$sqliteCoreFilename';
// Download dynamic library
From 65f4f355108005a019c56a55fea2f455d8288f8a Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Wed, 16 Oct 2024 14:10:35 +0200
Subject: [PATCH 03/33] Move setup web script to core
---
packages/{powersync => powersync_core}/bin/setup_web.dart | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename packages/{powersync => powersync_core}/bin/setup_web.dart (100%)
diff --git a/packages/powersync/bin/setup_web.dart b/packages/powersync_core/bin/setup_web.dart
similarity index 100%
rename from packages/powersync/bin/setup_web.dart
rename to packages/powersync_core/bin/setup_web.dart
From 78e7f03fcf9ee62bcb35d49ff730a8887c681fae Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Wed, 16 Oct 2024 14:30:29 +0200
Subject: [PATCH 04/33] Remove dependencies from powersync
---
demos/supabase-todolist/macos/Podfile.lock | 8 +++----
melos.yaml | 2 +-
packages/powersync/lib/sqlite3.dart | 2 +-
packages/powersync/lib/sqlite3_common.dart | 2 +-
packages/powersync/lib/sqlite_async.dart | 2 +-
packages/powersync/pubspec.yaml | 26 ----------------------
6 files changed, 8 insertions(+), 34 deletions(-)
diff --git a/demos/supabase-todolist/macos/Podfile.lock b/demos/supabase-todolist/macos/Podfile.lock
index 8b4f1b55..16dbcc8c 100644
--- a/demos/supabase-todolist/macos/Podfile.lock
+++ b/demos/supabase-todolist/macos/Podfile.lock
@@ -5,10 +5,10 @@ PODS:
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- - powersync-sqlite-core (0.2.1)
+ - powersync-sqlite-core (0.3.0)
- powersync_flutter_libs (0.0.1):
- FlutterMacOS
- - powersync-sqlite-core (~> 0.2.1)
+ - powersync-sqlite-core (~> 0.3.0)
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
@@ -67,8 +67,8 @@ SPEC CHECKSUMS:
app_links: 10e0a0ab602ffaf34d142cd4862f29d34b303b2a
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
- powersync-sqlite-core: 38ead13d8b21920cfbc79e9b3415b833574a506d
- powersync_flutter_libs: 3f05f43c382c77cb7bec64785c2b6b1e9bd33c22
+ powersync-sqlite-core: ad0e70e23bacd858fe2e79032dc4aabdf972d1bd
+ powersync_flutter_libs: af2c75e3176a179e90e5f5980f0b38356d56823b
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
sqlite3: 0bb0e6389d824e40296f531b858a2a0b71c0d2fb
sqlite3_flutter_libs: 5ca46c1a04eddfbeeb5b16566164aa7ad1616e7b
diff --git a/melos.yaml b/melos.yaml
index 8465fb11..491fea3f 100644
--- a/melos.yaml
+++ b/melos.yaml
@@ -33,7 +33,7 @@ scripts:
prepare:demos:
description: Download SQLite3 wasm for demos
- run: dart run powersync:setup_web --no-worker
+ run: dart run powersync_core:setup_web --no-worker
exec:
concurrency: 1
packageFilters:
diff --git a/packages/powersync/lib/sqlite3.dart b/packages/powersync/lib/sqlite3.dart
index 66f87ad4..2941247e 100644
--- a/packages/powersync/lib/sqlite3.dart
+++ b/packages/powersync/lib/sqlite3.dart
@@ -2,4 +2,4 @@
/// adding it as a direct dependency.
library;
-export 'package:sqlite_async/sqlite3.dart';
+export 'package:powersync_core/sqlite3.dart';
diff --git a/packages/powersync/lib/sqlite3_common.dart b/packages/powersync/lib/sqlite3_common.dart
index df84a8e0..52887937 100644
--- a/packages/powersync/lib/sqlite3_common.dart
+++ b/packages/powersync/lib/sqlite3_common.dart
@@ -2,4 +2,4 @@
/// adding it as a direct dependency.
library;
-export 'package:sqlite_async/sqlite3_common.dart';
+export 'package:powersync_core/sqlite3_common.dart';
diff --git a/packages/powersync/lib/sqlite_async.dart b/packages/powersync/lib/sqlite_async.dart
index 1d09936d..6deed835 100644
--- a/packages/powersync/lib/sqlite_async.dart
+++ b/packages/powersync/lib/sqlite_async.dart
@@ -2,4 +2,4 @@
/// adding it as a direct dependency.
library;
-export 'package:sqlite_async/sqlite_async.dart';
+export 'package:powersync_core/sqlite_async.dart';
diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml
index 3c8f8345..f3d092c5 100644
--- a/packages/powersync/pubspec.yaml
+++ b/packages/powersync/pubspec.yaml
@@ -10,36 +10,10 @@ dependencies:
flutter:
sdk: flutter
- sqlite_async: ^0.9.0
- # We only use sqlite3 as a transitive dependency,
- # but right now we need a minimum of v2.4.6.
- sqlite3: ^2.4.6
- universal_io: ^2.0.0
sqlite3_flutter_libs: ^0.5.23
- powersync_flutter_libs: ^0.4.0
powersync_core: ^1.0.0
- meta: ^1.0.0
- http: ^1.1.0
- uuid: ^4.2.0
- async: ^2.10.0
- logging: ^1.1.1
- collection: ^1.17.0
- fetch_client: ^1.1.2
- pubspec_parse: ^1.3.0
- args: ^2.5.0
- pub_semver: ^2.1.4
dev_dependencies:
- dcli: ^4.0.0
- lints: ^3.0.0
- test: ^1.25.0
- test_api: ^0.7.0
path_provider: ^2.0.13
- shelf: ^1.4.1
- shelf_router: ^1.1.4
- shelf_static: ^1.1.2
- stream_channel: ^2.1.2
- path: ^1.8.3
- js: ">=0.6.7 <0.8.0"
platforms:
android:
From 4b2a88df5bb15a9bbe45b27fc13a9895dcb25aea Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Wed, 16 Oct 2024 14:36:01 +0200
Subject: [PATCH 05/33] Add back lints dev dependency to powersync
---
packages/powersync/pubspec.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml
index f3d092c5..2ec408c5 100644
--- a/packages/powersync/pubspec.yaml
+++ b/packages/powersync/pubspec.yaml
@@ -13,6 +13,7 @@ dependencies:
sqlite3_flutter_libs: ^0.5.23
powersync_core: ^1.0.0
dev_dependencies:
+ lints: ^3.0.0
path_provider: ^2.0.13
platforms:
From b75cfb9793bcf702f7fbb168744a38a1701ba110 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Wed, 16 Oct 2024 21:43:37 +0200
Subject: [PATCH 06/33] - Working sqlcipher factory with tests - Package
refactoring and cleanup
---
packages/powersync/lib/powersync.dart | 2 +-
packages/powersync/lib/sqlite3_open.dart | 5 +
packages/powersync/pubspec.yaml | 1 +
.../powersync_attachments_helper/README.md | 4 +-
.../example/getting_started.dart | 2 +-
.../lib/src/attachments_queue.dart | 2 +-
.../lib/src/attachments_queue_table.dart | 4 +-
.../lib/src/attachments_service.dart | 4 +-
.../lib/src/syncing_service.dart | 2 +-
.../powersync_attachments_helper/pubspec.yaml | 2 +-
.../powersync_core/lib/powersync_core.dart | 5 +-
packages/powersync_core/lib/sqlite3_open.dart | 5 +
packages/powersync_sqlcipher/.gitignore | 30 +++++
packages/powersync_sqlcipher/.metadata | 10 ++
packages/powersync_sqlcipher/CHANGELOG.md | 3 +
packages/powersync_sqlcipher/LICENSE | 1 +
packages/powersync_sqlcipher/README.md | 76 +++++++++++++
.../powersync_sqlcipher/analysis_options.yaml | 4 +
.../powersync_sqlcipher/lib/powersync.dart | 7 ++
packages/powersync_sqlcipher/lib/sqlite3.dart | 5 +
.../lib/sqlite3_common.dart | 5 +
.../powersync_sqlcipher/lib/sqlite3_open.dart | 5 +
.../powersync_sqlcipher/lib/sqlite_async.dart | 5 +
.../lib/src/sqlcipher.dart | 104 ++++++++++++++++++
packages/powersync_sqlcipher/pubspec.yaml | 30 +++++
.../powersync_sqlcipher_factory_test.dart | 30 +++++
.../test/utils/test_utils.dart | 102 +++++++++++++++++
27 files changed, 442 insertions(+), 13 deletions(-)
create mode 100644 packages/powersync/lib/sqlite3_open.dart
create mode 100644 packages/powersync_core/lib/sqlite3_open.dart
create mode 100644 packages/powersync_sqlcipher/.gitignore
create mode 100644 packages/powersync_sqlcipher/.metadata
create mode 100644 packages/powersync_sqlcipher/CHANGELOG.md
create mode 100644 packages/powersync_sqlcipher/LICENSE
create mode 100644 packages/powersync_sqlcipher/README.md
create mode 100644 packages/powersync_sqlcipher/analysis_options.yaml
create mode 100644 packages/powersync_sqlcipher/lib/powersync.dart
create mode 100644 packages/powersync_sqlcipher/lib/sqlite3.dart
create mode 100644 packages/powersync_sqlcipher/lib/sqlite3_common.dart
create mode 100644 packages/powersync_sqlcipher/lib/sqlite3_open.dart
create mode 100644 packages/powersync_sqlcipher/lib/sqlite_async.dart
create mode 100644 packages/powersync_sqlcipher/lib/src/sqlcipher.dart
create mode 100644 packages/powersync_sqlcipher/pubspec.yaml
create mode 100644 packages/powersync_sqlcipher/test/powersync_sqlcipher_factory_test.dart
create mode 100644 packages/powersync_sqlcipher/test/utils/test_utils.dart
diff --git a/packages/powersync/lib/powersync.dart b/packages/powersync/lib/powersync.dart
index 25738e89..b1d7c837 100644
--- a/packages/powersync/lib/powersync.dart
+++ b/packages/powersync/lib/powersync.dart
@@ -1,4 +1,4 @@
-/// PowerSync Dart SDK.
+/// PowerSync Flutter SDK.
///
/// Use [PowerSyncDatabase] to open a database.
library;
diff --git a/packages/powersync/lib/sqlite3_open.dart b/packages/powersync/lib/sqlite3_open.dart
new file mode 100644
index 00000000..fd364dc4
--- /dev/null
+++ b/packages/powersync/lib/sqlite3_open.dart
@@ -0,0 +1,5 @@
+/// Re-exports [sqlite3_open](https://pub.dev/packages/sqlite3) to expose sqlite3_open without
+/// adding it as a direct dependency.
+library;
+
+export 'package:powersync_core/sqlite3_open.dart';
diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml
index 2ec408c5..9d912d51 100644
--- a/packages/powersync/pubspec.yaml
+++ b/packages/powersync/pubspec.yaml
@@ -14,6 +14,7 @@ dependencies:
powersync_core: ^1.0.0
dev_dependencies:
lints: ^3.0.0
+ path: ^1.8.3
path_provider: ^2.0.13
platforms:
diff --git a/packages/powersync_attachments_helper/README.md b/packages/powersync_attachments_helper/README.md
index a44f8c9d..dbd65bef 100644
--- a/packages/powersync_attachments_helper/README.md
+++ b/packages/powersync_attachments_helper/README.md
@@ -4,14 +4,14 @@
## Features
-* Handles syncing uploads, downloads and deletes between local and remote storage.
+- Handles syncing uploads, downloads and deletes between local and remote storage.
## Getting started
```dart
import 'dart:async';
import 'package:powersync_attachments_helper/powersync_attachments_helper.dart';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
// Set up schema with an id field that can be used in watchIds().
// In this case it is photo_id
diff --git a/packages/powersync_attachments_helper/example/getting_started.dart b/packages/powersync_attachments_helper/example/getting_started.dart
index f5302508..5ed2000b 100644
--- a/packages/powersync_attachments_helper/example/getting_started.dart
+++ b/packages/powersync_attachments_helper/example/getting_started.dart
@@ -1,7 +1,7 @@
import 'dart:async';
import 'package:powersync_attachments_helper/powersync_attachments_helper.dart';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
const schema = Schema([
Table('users', [Column.text('name'), Column.text('photo_id')])
diff --git a/packages/powersync_attachments_helper/lib/src/attachments_queue.dart b/packages/powersync_attachments_helper/lib/src/attachments_queue.dart
index 7ceb8208..1f2a1b35 100644
--- a/packages/powersync_attachments_helper/lib/src/attachments_queue.dart
+++ b/packages/powersync_attachments_helper/lib/src/attachments_queue.dart
@@ -6,7 +6,7 @@ import './local_storage_adapter.dart';
import './remote_storage_adapter.dart';
import './syncing_service.dart';
import 'package:logging/logging.dart';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
/// Logger for the attachment queue
final log = Logger('AttachmentQueue');
diff --git a/packages/powersync_attachments_helper/lib/src/attachments_queue_table.dart b/packages/powersync_attachments_helper/lib/src/attachments_queue_table.dart
index 91e940b5..ffa3fb20 100644
--- a/packages/powersync_attachments_helper/lib/src/attachments_queue_table.dart
+++ b/packages/powersync_attachments_helper/lib/src/attachments_queue_table.dart
@@ -1,5 +1,5 @@
-import 'package:powersync/powersync.dart';
-import 'package:powersync/sqlite3_common.dart' as sqlite;
+import 'package:powersync_core/powersync_core.dart';
+import 'package:powersync_core/sqlite3_common.dart' as sqlite;
const defaultAttachmentsQueueTableName = 'attachments_queue';
diff --git a/packages/powersync_attachments_helper/lib/src/attachments_service.dart b/packages/powersync_attachments_helper/lib/src/attachments_service.dart
index 0383a393..689fef22 100644
--- a/packages/powersync_attachments_helper/lib/src/attachments_service.dart
+++ b/packages/powersync_attachments_helper/lib/src/attachments_service.dart
@@ -1,8 +1,8 @@
import './attachments_queue.dart';
import './attachments_queue_table.dart';
import './local_storage_adapter.dart';
-import 'package:powersync/powersync.dart';
-import 'package:powersync/sqlite3_common.dart';
+import 'package:powersync_core/powersync_core.dart';
+import 'package:powersync_core/sqlite3_common.dart';
/// Service for interacting with the attachment queue.
class AttachmentsService {
diff --git a/packages/powersync_attachments_helper/lib/src/syncing_service.dart b/packages/powersync_attachments_helper/lib/src/syncing_service.dart
index 93c2300c..664f068b 100644
--- a/packages/powersync_attachments_helper/lib/src/syncing_service.dart
+++ b/packages/powersync_attachments_helper/lib/src/syncing_service.dart
@@ -4,7 +4,7 @@ import 'dart:typed_data';
import './attachments_queue.dart';
import './local_storage_adapter.dart';
import './remote_storage_adapter.dart';
-import 'package:powersync/powersync.dart';
+import 'package:powersync_core/powersync_core.dart';
import 'attachments_queue_table.dart';
import 'attachments_service.dart';
diff --git a/packages/powersync_attachments_helper/pubspec.yaml b/packages/powersync_attachments_helper/pubspec.yaml
index e5bafa43..87f4f6f6 100644
--- a/packages/powersync_attachments_helper/pubspec.yaml
+++ b/packages/powersync_attachments_helper/pubspec.yaml
@@ -10,7 +10,7 @@ dependencies:
flutter:
sdk: flutter
- powersync: ^1.8.6
+ powersync_core: ^1.0.0
logging: ^1.2.0
sqlite_async: ^0.9.0
path_provider: ^2.0.13
diff --git a/packages/powersync_core/lib/powersync_core.dart b/packages/powersync_core/lib/powersync_core.dart
index 1084f7a2..38606fef 100644
--- a/packages/powersync_core/lib/powersync_core.dart
+++ b/packages/powersync_core/lib/powersync_core.dart
@@ -1,6 +1,6 @@
-/// Support for doing something awesome.
+/// PowerSync Dart SDK.
///
-/// More dartdocs go here.
+/// Use [PowerSyncDatabase] to open a database.
library;
export 'src/connector.dart';
@@ -13,3 +13,4 @@ export 'src/powersync_database.dart';
export 'src/schema.dart';
export 'src/sync_status.dart';
export 'src/uuid.dart';
+export 'src/open_factory/abstract_powersync_open_factory.dart';
diff --git a/packages/powersync_core/lib/sqlite3_open.dart b/packages/powersync_core/lib/sqlite3_open.dart
new file mode 100644
index 00000000..b5659245
--- /dev/null
+++ b/packages/powersync_core/lib/sqlite3_open.dart
@@ -0,0 +1,5 @@
+/// Re-exports [sqlite3_open](https://pub.dev/packages/sqlite3) to expose sqlite3_open without
+/// adding it as a direct dependency.
+library;
+
+export 'package:sqlite_async/sqlite3_open.dart';
diff --git a/packages/powersync_sqlcipher/.gitignore b/packages/powersync_sqlcipher/.gitignore
new file mode 100644
index 00000000..28f173cc
--- /dev/null
+++ b/packages/powersync_sqlcipher/.gitignore
@@ -0,0 +1,30 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
+/pubspec.lock
+**/doc/api/
+.dart_tool/
+build/
+/test-db
\ No newline at end of file
diff --git a/packages/powersync_sqlcipher/.metadata b/packages/powersync_sqlcipher/.metadata
new file mode 100644
index 00000000..8f7b6ac1
--- /dev/null
+++ b/packages/powersync_sqlcipher/.metadata
@@ -0,0 +1,10 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+ revision: "761747bfc538b5af34aa0d3fac380f1bc331ec49"
+ channel: "stable"
+
+project_type: package
diff --git a/packages/powersync_sqlcipher/CHANGELOG.md b/packages/powersync_sqlcipher/CHANGELOG.md
new file mode 100644
index 00000000..41cc7d81
--- /dev/null
+++ b/packages/powersync_sqlcipher/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 0.0.1
+
+* TODO: Describe initial release.
diff --git a/packages/powersync_sqlcipher/LICENSE b/packages/powersync_sqlcipher/LICENSE
new file mode 100644
index 00000000..ba75c69f
--- /dev/null
+++ b/packages/powersync_sqlcipher/LICENSE
@@ -0,0 +1 @@
+TODO: Add your license here.
diff --git a/packages/powersync_sqlcipher/README.md b/packages/powersync_sqlcipher/README.md
new file mode 100644
index 00000000..2979dfa5
--- /dev/null
+++ b/packages/powersync_sqlcipher/README.md
@@ -0,0 +1,76 @@
+
+
+
+
+# PowerSync with SQLCipher SDK for Dart/Flutter
+
+_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres or MongoDB on the server-side (MySQL coming soon)._
+
+This package (`powersync_sqlcipher`) is the PowerSync client SDK for Dart/Flutter with encryption enabled using SQLCipher.
+
+# Installation
+
+```bash
+flutter pub add powersync_sqlcipher
+```
+
+# Getting Started
+
+Our [full SDK reference](https://docs.powersync.com/client-sdk-references/flutter) contains everything you need to know to get started implementing PowerSync in your project.
+
+### Demo app
+
+The easiest way to test out the alpha is to run the [Supabase Todo-List](./demos/supabase-todolist) demo app:
+
+1. Checkout [this repo's](https://github.com/powersync-ja/powersync.dart/tree/master) `master` branch.
+
+- Note: If you are an existing user updating to the latest code after a git pull, run `melos exec 'flutter pub upgrade'` in the repo's root and make sure it succeeds.
+
+2. Run `melos prepare` in the repo's root
+3. cd into the `demos/supabase-todolist` folder
+4. If you haven’t yet: `cp lib/app_config_template.dart lib/app_config.dart` (optionally update this config with your own Supabase and PowerSync project details).
+5. Run `flutter run -d chrome`
+
+### Installing PowerSync in your own project
+
+Install the latest version of the package, for example:
+
+```
+flutter pub add powersync_sqlcipher:'^0.1.0'
+```
+
+The latest version can be found [here](https://pub.dev/packages/powersync_sqlcipher/versions).
+
+### Usage
+
+```Dart
+import 'package/powersync_sqlcipher/powersync.dart';
+
+/// Global reference to the database
+late final PowerSyncDatabase db;
+
+final cipherFactory = PowerSyncSQLCipherOpenFactory(
+ path: await getDatabasePath(), key: "fkdjskjnfds");
+
+db = PowerSyncDatabase.withFactory(cipherFactory, schema: schema);
+```
+
+[comment]: # "The sections below need to be updated"
+
+# Changelog
+
+A changelog for this SDK is available [here](https://releases.powersync.com/announcements/flutter-client-sdk).
+
+# API Reference
+
+The full API reference for this SDK can be found [here](https://pub.dev/documentation/powersync/latest/powersync/powersync-library.html).
+
+# Examples
+
+For example projects built with PowerSync and Flutter, see our [Demo Apps / Example Projects](https://docs.powersync.com/resources/demo-apps-example-projects#flutter) gallery. Most of these projects can also be found in the [`demos/`](../demos/) directory.
+
+# Found a bug or need help?
+
+- Join our [Discord server](https://discord.gg/powersync) where you can browse topics from our community, ask questions, share feedback, or just say hello :)
+- Please open a [GitHub issue](https://github.com/powersync-ja/powersync.dart/issues) when you come across a bug.
+- Have feedback or an idea? [Submit an idea](https://roadmap.powersync.com/tabs/5-roadmap/submit-idea) via our public roadmap or [schedule a chat](https://calendly.com/powersync/powersync-chat) with someone from our product team.
diff --git a/packages/powersync_sqlcipher/analysis_options.yaml b/packages/powersync_sqlcipher/analysis_options.yaml
new file mode 100644
index 00000000..a5744c1c
--- /dev/null
+++ b/packages/powersync_sqlcipher/analysis_options.yaml
@@ -0,0 +1,4 @@
+include: package:flutter_lints/flutter.yaml
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/packages/powersync_sqlcipher/lib/powersync.dart b/packages/powersync_sqlcipher/lib/powersync.dart
new file mode 100644
index 00000000..edb605f2
--- /dev/null
+++ b/packages/powersync_sqlcipher/lib/powersync.dart
@@ -0,0 +1,7 @@
+/// PowerSync with Encryption for Flutter.
+///
+/// Use [PowerSyncSQLCipherOpenFactory] to open an encrypted database.
+library;
+
+export 'src/sqlcipher.dart';
+export 'package:powersync_core/powersync_core.dart';
diff --git a/packages/powersync_sqlcipher/lib/sqlite3.dart b/packages/powersync_sqlcipher/lib/sqlite3.dart
new file mode 100644
index 00000000..2941247e
--- /dev/null
+++ b/packages/powersync_sqlcipher/lib/sqlite3.dart
@@ -0,0 +1,5 @@
+/// Re-exports [sqlite3](https://pub.dev/packages/sqlite3) to expose sqlite3 without
+/// adding it as a direct dependency.
+library;
+
+export 'package:powersync_core/sqlite3.dart';
diff --git a/packages/powersync_sqlcipher/lib/sqlite3_common.dart b/packages/powersync_sqlcipher/lib/sqlite3_common.dart
new file mode 100644
index 00000000..52887937
--- /dev/null
+++ b/packages/powersync_sqlcipher/lib/sqlite3_common.dart
@@ -0,0 +1,5 @@
+/// Re-exports [sqlite3_common](https://pub.dev/packages/sqlite3) to expose sqlite3_common without
+/// adding it as a direct dependency.
+library;
+
+export 'package:powersync_core/sqlite3_common.dart';
diff --git a/packages/powersync_sqlcipher/lib/sqlite3_open.dart b/packages/powersync_sqlcipher/lib/sqlite3_open.dart
new file mode 100644
index 00000000..fd364dc4
--- /dev/null
+++ b/packages/powersync_sqlcipher/lib/sqlite3_open.dart
@@ -0,0 +1,5 @@
+/// Re-exports [sqlite3_open](https://pub.dev/packages/sqlite3) to expose sqlite3_open without
+/// adding it as a direct dependency.
+library;
+
+export 'package:powersync_core/sqlite3_open.dart';
diff --git a/packages/powersync_sqlcipher/lib/sqlite_async.dart b/packages/powersync_sqlcipher/lib/sqlite_async.dart
new file mode 100644
index 00000000..6deed835
--- /dev/null
+++ b/packages/powersync_sqlcipher/lib/sqlite_async.dart
@@ -0,0 +1,5 @@
+/// Re-exports [sqlite_async](https://pub.dev/packages/sqlite_async) to expose sqlite_async without
+/// adding it as a direct dependency.
+library;
+
+export 'package:powersync_core/sqlite_async.dart';
diff --git a/packages/powersync_sqlcipher/lib/src/sqlcipher.dart b/packages/powersync_sqlcipher/lib/src/sqlcipher.dart
new file mode 100644
index 00000000..4265b9ff
--- /dev/null
+++ b/packages/powersync_sqlcipher/lib/src/sqlcipher.dart
@@ -0,0 +1,104 @@
+import 'dart:ffi';
+
+import 'package:powersync_core/powersync_core.dart';
+import 'package:powersync_core/sqlite3_common.dart';
+import 'package:powersync_core/sqlite3_open.dart' as sqlite3_open;
+import 'package:powersync_core/sqlite_async.dart';
+import 'package:powersync_core/sqlite3.dart' as sqlite;
+import 'package:sqlcipher_flutter_libs/sqlcipher_flutter_libs.dart';
+import 'package:universal_io/io.dart';
+
+/// A factory for opening a database with SQLCipher encryption.
+/// An encryption [key] is required
+class PowerSyncSQLCipherOpenFactory extends AbstractPowerSyncOpenFactory {
+ PowerSyncSQLCipherOpenFactory({
+ required super.path,
+ required this.key,
+ super.sqliteOptions = powerSyncDefaultSqliteOptions,
+ });
+
+ final String key;
+
+ @override
+ void enableExtension() {
+ var powersyncLib = _getDynamicLibraryForPlatform();
+ sqlite.sqlite3.ensureExtensionLoaded(sqlite.SqliteExtension.inLibrary(
+ powersyncLib, 'sqlite3_powersync_init'));
+ }
+
+ /// Returns the dynamic library for the current platform.
+ DynamicLibrary _getDynamicLibraryForPlatform() {
+ /// When running tests, we need to load the library for all platforms.
+ if (Platform.environment.containsKey('FLUTTER_TEST')) {
+ return DynamicLibrary.open(getLibraryForPlatform());
+ }
+ return (Platform.isIOS || Platform.isMacOS)
+ ? DynamicLibrary.process()
+ : DynamicLibrary.open(getLibraryForPlatform());
+ }
+
+ @override
+ List pragmaStatements(SqliteOpenOptions options) {
+ final basePragmaStatements = super.pragmaStatements(options);
+ return [
+ // Set the encryption key as the first statement
+ "PRAGMA KEY = '$key'",
+ // Include the default statements afterwards
+ for (var statement in basePragmaStatements) statement
+ ];
+ }
+
+ @override
+ CommonDatabase open(SqliteOpenOptions options) {
+ sqlite3_open.open
+ .overrideFor(sqlite3_open.OperatingSystem.android, openCipherOnAndroid);
+
+ try {
+ enableExtension();
+ } on PowersyncNotReadyException catch (e) {
+ autoLogger.severe(e.message);
+ rethrow;
+ }
+
+ var db = super.open(options);
+ final versionRows = db.select('PRAGMA cipher_version');
+ if (versionRows.isEmpty) {
+ throw AssertionError(
+ "SQLCipher was not initialized correctly. 'PRAGMA cipher_version' returned no rows.");
+ } else {
+ //TODO: Remove before publishing
+ print("RUNNING with cipher ${versionRows.rows.first}");
+ }
+ return db;
+ }
+
+ @override
+ String getLibraryForPlatform({String? path}) {
+ switch (Abi.current()) {
+ case Abi.androidArm:
+ case Abi.androidArm64:
+ case Abi.androidX64:
+ return 'libpowersync.so';
+ case Abi.macosArm64:
+ case Abi.macosX64:
+ return 'libpowersync.dylib';
+ case Abi.linuxX64:
+ return 'libpowersync_x64.so';
+ case Abi.linuxArm64:
+ return 'libpowersync_aarch64.so';
+ case Abi.windowsX64:
+ return 'powersync_x64.dll';
+ case Abi.androidIA32:
+ throw PowersyncNotReadyException(
+ 'Unsupported processor architecture. X86 Android emulators are not '
+ 'supported. Please use an x86_64 emulator instead. All physical '
+ 'Android devices are supported including 32bit ARM.',
+ );
+ default:
+ throw PowersyncNotReadyException(
+ 'Unsupported processor architecture "${Abi.current()}". '
+ 'Please open an issue on GitHub to request it.',
+ );
+ }
+ }
+}
diff --git a/packages/powersync_sqlcipher/pubspec.yaml b/packages/powersync_sqlcipher/pubspec.yaml
new file mode 100644
index 00000000..e4e94704
--- /dev/null
+++ b/packages/powersync_sqlcipher/pubspec.yaml
@@ -0,0 +1,30 @@
+name: powersync_sqlcipher
+version: 0.0.1
+homepage: https://powersync.com
+repository: https://github.com/powersync-ja/powersync.dart
+description: PowerSync Flutter SDK - sync engine for building local-first apps.
+
+environment:
+ sdk: ">=3.4.3 <4.0.0"
+ flutter: ">=1.17.0"
+
+dependencies:
+ flutter:
+ sdk: flutter
+
+ powersync_core: ^1.0.0
+ sqlcipher_flutter_libs: ^0.6.4
+ universal_io: ^2.0.0
+
+dev_dependencies:
+ flutter_test:
+ sdk: flutter
+ flutter_lints: ^3.0.0
+ test_api: ^0.7.0
+
+platforms:
+ android:
+ ios:
+ linux:
+ macos:
+ windows:
diff --git a/packages/powersync_sqlcipher/test/powersync_sqlcipher_factory_test.dart b/packages/powersync_sqlcipher/test/powersync_sqlcipher_factory_test.dart
new file mode 100644
index 00000000..49dcea68
--- /dev/null
+++ b/packages/powersync_sqlcipher/test/powersync_sqlcipher_factory_test.dart
@@ -0,0 +1,30 @@
+import 'package:powersync_core/powersync_core.dart';
+import 'package:flutter_test/flutter_test.dart';
+
+import 'utils/test_utils.dart';
+
+final testUtils = TestUtils();
+
+void main() {
+ group('SQLCipher Tests', () {
+ late String path;
+
+ setUp(() async {
+ path = testUtils.dbPath();
+ await testUtils.cleanDb(path: path);
+ });
+
+ test('PRAGMA cipher_version returns version', () async {
+ final cipherFactory =
+ await testUtils.testFactory(path: path, key: "test-key");
+
+ final db = PowerSyncDatabase.withFactory(cipherFactory, schema: schema);
+
+ await db.initialize();
+
+ final row = await db.get('PRAGMA cipher_version');
+ expect(row, isNotNull);
+ expect(row['cipher_version'], equals('4.6.1 community'));
+ });
+ });
+}
diff --git a/packages/powersync_sqlcipher/test/utils/test_utils.dart b/packages/powersync_sqlcipher/test/utils/test_utils.dart
new file mode 100644
index 00000000..f56571ba
--- /dev/null
+++ b/packages/powersync_sqlcipher/test/utils/test_utils.dart
@@ -0,0 +1,102 @@
+import 'dart:async';
+import 'dart:ffi';
+import 'dart:io';
+
+import 'package:powersync_core/sqlite3_common.dart';
+import 'package:powersync_core/sqlite_async.dart';
+import 'package:powersync_sqlcipher/powersync.dart';
+import 'package:test_api/src/backend/invoker.dart';
+import 'package:powersync_core/sqlite3_open.dart' as sqlite_open;
+
+const schema = Schema([
+ Table('users', [
+ Column.text('first_name'),
+ Column.text('last_name'),
+ Column.integer('age'),
+ Column.integer('networth'),
+ ], indexes: [
+ Index('agenetworth', [IndexedColumn('age'), IndexedColumn('networth')])
+ ]),
+]);
+
+class TestOpenFactory extends PowerSyncSQLCipherOpenFactory {
+ TestOpenFactory({required super.path, required super.key});
+
+ @override
+ CommonDatabase open(SqliteOpenOptions options) {
+ sqlite_open.open.overrideFor(sqlite_open.OperatingSystem.linux, () {
+ return DynamicLibrary.open('libsqlcipher.so.0');
+ });
+ sqlite_open.open.overrideFor(sqlite_open.OperatingSystem.macOS, () {
+ return DynamicLibrary.open('libsqlcipher.0.dylib');
+ });
+ return super.open(options);
+ }
+
+ @override
+ String getLibraryForPlatform({String? path = "."}) {
+ switch (Abi.current()) {
+ case Abi.androidArm:
+ case Abi.androidArm64:
+ case Abi.androidX64:
+ return '$path/libpowersync.so';
+ case Abi.macosArm64:
+ case Abi.macosX64:
+ return '$path/libpowersync.dylib';
+ case Abi.linuxX64:
+ case Abi.linuxArm64:
+ return '$path/libpowersync.so';
+ case Abi.windowsX64:
+ return '$path/powersync.dll';
+ case Abi.androidIA32:
+ throw PowersyncNotReadyException(
+ 'Unsupported processor architecture. X86 Android emulators are not '
+ 'supported. Please use an x86_64 emulator instead. All physical '
+ 'Android devices are supported including 32bit ARM.',
+ );
+ default:
+ throw PowersyncNotReadyException(
+ 'Unsupported processor architecture "${Abi.current()}". '
+ 'Please open an issue on GitHub to request it.',
+ );
+ }
+ }
+}
+
+class TestUtils {
+ String dbPath() {
+ Directory("test-db").createSync(recursive: false);
+ final test = Invoker.current!.liveTest;
+ var testName = test.test.name;
+ var testShortName =
+ testName.replaceAll(RegExp(r'[\s\./]'), '_').toLowerCase();
+ var dbName = "test-db/$testShortName.db";
+ return dbName;
+ }
+
+ Future cleanDb({required String path}) async {
+ try {
+ await File(path).delete();
+ } on PathNotFoundException {
+ // Not an issue
+ }
+ try {
+ await File("$path-shm").delete();
+ } on PathNotFoundException {
+ // Not an issue
+ }
+ try {
+ await File("$path-wal").delete();
+ } on PathNotFoundException {
+ // Not an issue
+ }
+ }
+
+ Future testFactory({
+ required String path,
+ required String key,
+ SqliteOptions options = const SqliteOptions.defaults(),
+ }) async {
+ return TestOpenFactory(path: path, key: key);
+ }
+}
From 7a870d5f4517ee9656bc71031f9a822b5e38b80d Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Wed, 16 Oct 2024 22:33:00 +0200
Subject: [PATCH 07/33] Download dynamic library for sqlciper tests
---
scripts/init_powersync_core_binary.dart | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/scripts/init_powersync_core_binary.dart b/scripts/init_powersync_core_binary.dart
index 2c0b8d2f..714ce082 100644
--- a/scripts/init_powersync_core_binary.dart
+++ b/scripts/init_powersync_core_binary.dart
@@ -11,6 +11,7 @@ final sqliteUrl =
void main() async {
final sqliteCoreFilename = getLibraryForPlatform();
final powersyncPath = "packages/powersync_core";
+ final powersyncCipherPath = "packages/powersync_sqlcipher";
final sqliteCorePath = '$powersyncPath/$sqliteCoreFilename';
// Download dynamic library
@@ -23,9 +24,12 @@ void main() async {
if (await originalFile.exists()) {
try {
// Rename the original file to the new file name
- await originalFile.rename("$powersyncPath/$newFileName");
+ final renamedFile =
+ await originalFile.rename("$powersyncPath/$newFileName");
print(
'File renamed successfully from $sqliteCoreFilename to $newFileName');
+ await renamedFile.copy("$powersyncCipherPath/$newFileName");
+ print('$newFileName copied to $powersyncCipherPath');
} catch (e) {
throw IOException('Error renaming file: $e');
}
From 52cafa6c125ca8c6a546f6cb9bbe998a4d5c5f49 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Thu, 17 Oct 2024 09:41:07 +0200
Subject: [PATCH 08/33] Remove sqlcipher tests
---
.../powersync_sqlcipher_factory_test.dart | 30 ------
.../test/utils/test_utils.dart | 102 ------------------
2 files changed, 132 deletions(-)
delete mode 100644 packages/powersync_sqlcipher/test/powersync_sqlcipher_factory_test.dart
delete mode 100644 packages/powersync_sqlcipher/test/utils/test_utils.dart
diff --git a/packages/powersync_sqlcipher/test/powersync_sqlcipher_factory_test.dart b/packages/powersync_sqlcipher/test/powersync_sqlcipher_factory_test.dart
deleted file mode 100644
index 49dcea68..00000000
--- a/packages/powersync_sqlcipher/test/powersync_sqlcipher_factory_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-import 'package:powersync_core/powersync_core.dart';
-import 'package:flutter_test/flutter_test.dart';
-
-import 'utils/test_utils.dart';
-
-final testUtils = TestUtils();
-
-void main() {
- group('SQLCipher Tests', () {
- late String path;
-
- setUp(() async {
- path = testUtils.dbPath();
- await testUtils.cleanDb(path: path);
- });
-
- test('PRAGMA cipher_version returns version', () async {
- final cipherFactory =
- await testUtils.testFactory(path: path, key: "test-key");
-
- final db = PowerSyncDatabase.withFactory(cipherFactory, schema: schema);
-
- await db.initialize();
-
- final row = await db.get('PRAGMA cipher_version');
- expect(row, isNotNull);
- expect(row['cipher_version'], equals('4.6.1 community'));
- });
- });
-}
diff --git a/packages/powersync_sqlcipher/test/utils/test_utils.dart b/packages/powersync_sqlcipher/test/utils/test_utils.dart
deleted file mode 100644
index f56571ba..00000000
--- a/packages/powersync_sqlcipher/test/utils/test_utils.dart
+++ /dev/null
@@ -1,102 +0,0 @@
-import 'dart:async';
-import 'dart:ffi';
-import 'dart:io';
-
-import 'package:powersync_core/sqlite3_common.dart';
-import 'package:powersync_core/sqlite_async.dart';
-import 'package:powersync_sqlcipher/powersync.dart';
-import 'package:test_api/src/backend/invoker.dart';
-import 'package:powersync_core/sqlite3_open.dart' as sqlite_open;
-
-const schema = Schema([
- Table('users', [
- Column.text('first_name'),
- Column.text('last_name'),
- Column.integer('age'),
- Column.integer('networth'),
- ], indexes: [
- Index('agenetworth', [IndexedColumn('age'), IndexedColumn('networth')])
- ]),
-]);
-
-class TestOpenFactory extends PowerSyncSQLCipherOpenFactory {
- TestOpenFactory({required super.path, required super.key});
-
- @override
- CommonDatabase open(SqliteOpenOptions options) {
- sqlite_open.open.overrideFor(sqlite_open.OperatingSystem.linux, () {
- return DynamicLibrary.open('libsqlcipher.so.0');
- });
- sqlite_open.open.overrideFor(sqlite_open.OperatingSystem.macOS, () {
- return DynamicLibrary.open('libsqlcipher.0.dylib');
- });
- return super.open(options);
- }
-
- @override
- String getLibraryForPlatform({String? path = "."}) {
- switch (Abi.current()) {
- case Abi.androidArm:
- case Abi.androidArm64:
- case Abi.androidX64:
- return '$path/libpowersync.so';
- case Abi.macosArm64:
- case Abi.macosX64:
- return '$path/libpowersync.dylib';
- case Abi.linuxX64:
- case Abi.linuxArm64:
- return '$path/libpowersync.so';
- case Abi.windowsX64:
- return '$path/powersync.dll';
- case Abi.androidIA32:
- throw PowersyncNotReadyException(
- 'Unsupported processor architecture. X86 Android emulators are not '
- 'supported. Please use an x86_64 emulator instead. All physical '
- 'Android devices are supported including 32bit ARM.',
- );
- default:
- throw PowersyncNotReadyException(
- 'Unsupported processor architecture "${Abi.current()}". '
- 'Please open an issue on GitHub to request it.',
- );
- }
- }
-}
-
-class TestUtils {
- String dbPath() {
- Directory("test-db").createSync(recursive: false);
- final test = Invoker.current!.liveTest;
- var testName = test.test.name;
- var testShortName =
- testName.replaceAll(RegExp(r'[\s\./]'), '_').toLowerCase();
- var dbName = "test-db/$testShortName.db";
- return dbName;
- }
-
- Future cleanDb({required String path}) async {
- try {
- await File(path).delete();
- } on PathNotFoundException {
- // Not an issue
- }
- try {
- await File("$path-shm").delete();
- } on PathNotFoundException {
- // Not an issue
- }
- try {
- await File("$path-wal").delete();
- } on PathNotFoundException {
- // Not an issue
- }
- }
-
- Future testFactory({
- required String path,
- required String key,
- SqliteOptions options = const SqliteOptions.defaults(),
- }) async {
- return TestOpenFactory(path: path, key: key);
- }
-}
From ee88681db1b305463b7b8d50223975c06778bc84 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Thu, 17 Oct 2024 09:58:18 +0200
Subject: [PATCH 09/33] Clean up versions
---
packages/powersync_core/CHANGELOG.md | 4 +-
.../powersync_core/lib/powersync_core.dart | 1 -
packages/powersync_core/pubspec.yaml | 2 +-
packages/powersync_sqlcipher/CHANGELOG.md | 4 +-
.../lib/src/sqlcipher.dart | 70 ++-----------------
packages/powersync_sqlcipher/pubspec.yaml | 2 +-
6 files changed, 10 insertions(+), 73 deletions(-)
diff --git a/packages/powersync_core/CHANGELOG.md b/packages/powersync_core/CHANGELOG.md
index effe43c8..951a5a3f 100644
--- a/packages/powersync_core/CHANGELOG.md
+++ b/packages/powersync_core/CHANGELOG.md
@@ -1,3 +1,3 @@
-## 1.0.0
+## 0.1.0
-- Initial version.
+- Initial release.
diff --git a/packages/powersync_core/lib/powersync_core.dart b/packages/powersync_core/lib/powersync_core.dart
index 38606fef..d931d4f4 100644
--- a/packages/powersync_core/lib/powersync_core.dart
+++ b/packages/powersync_core/lib/powersync_core.dart
@@ -13,4 +13,3 @@ export 'src/powersync_database.dart';
export 'src/schema.dart';
export 'src/sync_status.dart';
export 'src/uuid.dart';
-export 'src/open_factory/abstract_powersync_open_factory.dart';
diff --git a/packages/powersync_core/pubspec.yaml b/packages/powersync_core/pubspec.yaml
index f4bde744..bd61526e 100644
--- a/packages/powersync_core/pubspec.yaml
+++ b/packages/powersync_core/pubspec.yaml
@@ -1,5 +1,5 @@
name: powersync_core
-version: 1.0.0
+version: 0.1.0
homepage: https://powersync.com
repository: https://github.com/powersync-ja/powersync.dart
description: PowerSync Dart SDK - sync engine for building local-first apps.
diff --git a/packages/powersync_sqlcipher/CHANGELOG.md b/packages/powersync_sqlcipher/CHANGELOG.md
index 41cc7d81..951a5a3f 100644
--- a/packages/powersync_sqlcipher/CHANGELOG.md
+++ b/packages/powersync_sqlcipher/CHANGELOG.md
@@ -1,3 +1,3 @@
-## 0.0.1
+## 0.1.0
-* TODO: Describe initial release.
+- Initial release.
diff --git a/packages/powersync_sqlcipher/lib/src/sqlcipher.dart b/packages/powersync_sqlcipher/lib/src/sqlcipher.dart
index 4265b9ff..b87f4a3a 100644
--- a/packages/powersync_sqlcipher/lib/src/sqlcipher.dart
+++ b/packages/powersync_sqlcipher/lib/src/sqlcipher.dart
@@ -1,42 +1,17 @@
-import 'dart:ffi';
-
import 'package:powersync_core/powersync_core.dart';
import 'package:powersync_core/sqlite3_common.dart';
import 'package:powersync_core/sqlite3_open.dart' as sqlite3_open;
import 'package:powersync_core/sqlite_async.dart';
-import 'package:powersync_core/sqlite3.dart' as sqlite;
import 'package:sqlcipher_flutter_libs/sqlcipher_flutter_libs.dart';
-import 'package:universal_io/io.dart';
/// A factory for opening a database with SQLCipher encryption.
-/// An encryption [key] is required
-class PowerSyncSQLCipherOpenFactory extends AbstractPowerSyncOpenFactory {
- PowerSyncSQLCipherOpenFactory({
- required super.path,
- required this.key,
- super.sqliteOptions = powerSyncDefaultSqliteOptions,
- });
+/// An encryption [key] is required to open the database.
+class PowerSyncSQLCipherOpenFactory extends PowerSyncOpenFactory {
+ PowerSyncSQLCipherOpenFactory(
+ {required super.path, required this.key, super.sqliteOptions});
final String key;
- @override
- void enableExtension() {
- var powersyncLib = _getDynamicLibraryForPlatform();
- sqlite.sqlite3.ensureExtensionLoaded(sqlite.SqliteExtension.inLibrary(
- powersyncLib, 'sqlite3_powersync_init'));
- }
-
- /// Returns the dynamic library for the current platform.
- DynamicLibrary _getDynamicLibraryForPlatform() {
- /// When running tests, we need to load the library for all platforms.
- if (Platform.environment.containsKey('FLUTTER_TEST')) {
- return DynamicLibrary.open(getLibraryForPlatform());
- }
- return (Platform.isIOS || Platform.isMacOS)
- ? DynamicLibrary.process()
- : DynamicLibrary.open(getLibraryForPlatform());
- }
-
@override
List pragmaStatements(SqliteOpenOptions options) {
final basePragmaStatements = super.pragmaStatements(options);
@@ -53,13 +28,6 @@ class PowerSyncSQLCipherOpenFactory extends AbstractPowerSyncOpenFactory {
sqlite3_open.open
.overrideFor(sqlite3_open.OperatingSystem.android, openCipherOnAndroid);
- try {
- enableExtension();
- } on PowersyncNotReadyException catch (e) {
- autoLogger.severe(e.message);
- rethrow;
- }
-
var db = super.open(options);
final versionRows = db.select('PRAGMA cipher_version');
if (versionRows.isEmpty) {
@@ -71,34 +39,4 @@ class PowerSyncSQLCipherOpenFactory extends AbstractPowerSyncOpenFactory {
}
return db;
}
-
- @override
- String getLibraryForPlatform({String? path}) {
- switch (Abi.current()) {
- case Abi.androidArm:
- case Abi.androidArm64:
- case Abi.androidX64:
- return 'libpowersync.so';
- case Abi.macosArm64:
- case Abi.macosX64:
- return 'libpowersync.dylib';
- case Abi.linuxX64:
- return 'libpowersync_x64.so';
- case Abi.linuxArm64:
- return 'libpowersync_aarch64.so';
- case Abi.windowsX64:
- return 'powersync_x64.dll';
- case Abi.androidIA32:
- throw PowersyncNotReadyException(
- 'Unsupported processor architecture. X86 Android emulators are not '
- 'supported. Please use an x86_64 emulator instead. All physical '
- 'Android devices are supported including 32bit ARM.',
- );
- default:
- throw PowersyncNotReadyException(
- 'Unsupported processor architecture "${Abi.current()}". '
- 'Please open an issue on GitHub to request it.',
- );
- }
- }
}
diff --git a/packages/powersync_sqlcipher/pubspec.yaml b/packages/powersync_sqlcipher/pubspec.yaml
index e4e94704..8d664135 100644
--- a/packages/powersync_sqlcipher/pubspec.yaml
+++ b/packages/powersync_sqlcipher/pubspec.yaml
@@ -1,5 +1,5 @@
name: powersync_sqlcipher
-version: 0.0.1
+version: 0.1.0
homepage: https://powersync.com
repository: https://github.com/powersync-ja/powersync.dart
description: PowerSync Flutter SDK - sync engine for building local-first apps.
From 12baad3cc260d7966615a0fcb32424644412d14a Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Thu, 17 Oct 2024 10:05:21 +0200
Subject: [PATCH 10/33] Cleanup print statement
---
packages/powersync_sqlcipher/lib/src/sqlcipher.dart | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/packages/powersync_sqlcipher/lib/src/sqlcipher.dart b/packages/powersync_sqlcipher/lib/src/sqlcipher.dart
index b87f4a3a..d94411cb 100644
--- a/packages/powersync_sqlcipher/lib/src/sqlcipher.dart
+++ b/packages/powersync_sqlcipher/lib/src/sqlcipher.dart
@@ -31,11 +31,8 @@ class PowerSyncSQLCipherOpenFactory extends PowerSyncOpenFactory {
var db = super.open(options);
final versionRows = db.select('PRAGMA cipher_version');
if (versionRows.isEmpty) {
- throw AssertionError(
+ throw StateError(
"SQLCipher was not initialized correctly. 'PRAGMA cipher_version' returned no rows.");
- } else {
- //TODO: Remove before publishing
- print("RUNNING with cipher ${versionRows.rows.first}");
}
return db;
}
From 7a88bfd49adf054ed1e56b78179ec5a187d015ac Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Thu, 17 Oct 2024 10:09:13 +0200
Subject: [PATCH 11/33] Cleanup powersync export
---
packages/powersync/lib/powersync.dart | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/packages/powersync/lib/powersync.dart b/packages/powersync/lib/powersync.dart
index b1d7c837..c5e05872 100644
--- a/packages/powersync/lib/powersync.dart
+++ b/packages/powersync/lib/powersync.dart
@@ -3,13 +3,4 @@
/// Use [PowerSyncDatabase] to open a database.
library;
-export 'package:powersync_core/src/connector.dart';
-export 'package:powersync_core/src/crud.dart';
-export 'package:powersync_core/src/database/powersync_database.dart';
-export 'package:powersync_core/src/exceptions.dart';
-export 'package:powersync_core/src/log.dart';
-export 'package:powersync_core/src/open_factory.dart';
-export 'package:powersync_core/src/powersync_database.dart';
-export 'package:powersync_core/src/schema.dart';
-export 'package:powersync_core/src/sync_status.dart';
-export 'package:powersync_core/src/uuid.dart';
+export 'package:powersync_core/powersync_core.dart';
From 3b70e710e4e55edc0f3904de395ca12b8b7e9d94 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Thu, 17 Oct 2024 10:17:24 +0200
Subject: [PATCH 12/33] Update locked versions
---
demos/django-todolist/pubspec.lock | 2 +-
demos/supabase-anonymous-auth/pubspec.lock | 2 +-
.../supabase-edge-function-auth/pubspec.lock | 2 +-
demos/supabase-simple-chat/pubspec.lock | 2 +-
demos/supabase-todolist-drift/pubspec.lock | 2 +-
.../pubspec.lock | 2 +-
.../ios/Runner.xcodeproj/project.pbxproj | 70 +++++-----
.../macos/Runner.xcodeproj/project.pbxproj | 120 +++++++++---------
demos/supabase-todolist/pubspec.lock | 2 +-
packages/powersync/pubspec.yaml | 2 +-
.../powersync_attachments_helper/pubspec.yaml | 2 +-
packages/powersync_sqlcipher/pubspec.yaml | 2 +-
12 files changed, 105 insertions(+), 105 deletions(-)
diff --git a/demos/django-todolist/pubspec.lock b/demos/django-todolist/pubspec.lock
index 370bf044..52aa1237 100644
--- a/demos/django-todolist/pubspec.lock
+++ b/demos/django-todolist/pubspec.lock
@@ -317,7 +317,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "1.0.0"
+ version: "0.1.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-anonymous-auth/pubspec.lock b/demos/supabase-anonymous-auth/pubspec.lock
index 9200998f..f6188c35 100644
--- a/demos/supabase-anonymous-auth/pubspec.lock
+++ b/demos/supabase-anonymous-auth/pubspec.lock
@@ -373,7 +373,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "1.0.0"
+ version: "0.1.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-edge-function-auth/pubspec.lock b/demos/supabase-edge-function-auth/pubspec.lock
index 674616c0..bf8adb32 100644
--- a/demos/supabase-edge-function-auth/pubspec.lock
+++ b/demos/supabase-edge-function-auth/pubspec.lock
@@ -397,7 +397,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "1.0.0"
+ version: "0.1.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-simple-chat/pubspec.lock b/demos/supabase-simple-chat/pubspec.lock
index 86c7307c..1af57c22 100644
--- a/demos/supabase-simple-chat/pubspec.lock
+++ b/demos/supabase-simple-chat/pubspec.lock
@@ -413,7 +413,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "1.0.0"
+ version: "0.1.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist-drift/pubspec.lock b/demos/supabase-todolist-drift/pubspec.lock
index f54653f3..c801290d 100644
--- a/demos/supabase-todolist-drift/pubspec.lock
+++ b/demos/supabase-todolist-drift/pubspec.lock
@@ -700,7 +700,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "1.0.0"
+ version: "0.1.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist-optional-sync/pubspec.lock b/demos/supabase-todolist-optional-sync/pubspec.lock
index 42340c10..6711cba7 100644
--- a/demos/supabase-todolist-optional-sync/pubspec.lock
+++ b/demos/supabase-todolist-optional-sync/pubspec.lock
@@ -477,7 +477,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "1.0.0"
+ version: "0.1.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist/ios/Runner.xcodeproj/project.pbxproj b/demos/supabase-todolist/ios/Runner.xcodeproj/project.pbxproj
index 16636b7a..e32e9fa6 100644
--- a/demos/supabase-todolist/ios/Runner.xcodeproj/project.pbxproj
+++ b/demos/supabase-todolist/ios/Runner.xcodeproj/project.pbxproj
@@ -13,7 +13,7 @@
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
- B2C70762C97CE3E3CEB912CB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B9CC0EA1BA15CD3CCAD0356 /* Pods_Runner.framework */; };
+ FE22D026B50D91C63EC1E548 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3246A2C54ACF47297A0D9A97 /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -32,13 +32,13 @@
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
- 15764CEB058B2B69D5E35280 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
- 3153F415177CAE497AE7D235 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ 1AC6D6834A180EC866A1A907 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ 3246A2C54ACF47297A0D9A97 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
- 7B9CC0EA1BA15CD3CCAD0356 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 7F544BD3701C5CF77F2FF87F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -46,7 +46,7 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- CDF8C9971FE1B0CF3262ED53 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ F866E203CA1A8E0C6D9ABA5C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -54,13 +54,21 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- B2C70762C97CE3E3CEB912CB /* Pods_Runner.framework in Frameworks */,
+ FE22D026B50D91C63EC1E548 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 114FDDDC75E03531AE956759 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 3246A2C54ACF47297A0D9A97 /* Pods_Runner.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@@ -79,7 +87,7 @@
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
A151B04DC3D1415EEF784588 /* Pods */,
- C1E97B63847FB6B811E12FEA /* Frameworks */,
+ 114FDDDC75E03531AE956759 /* Frameworks */,
);
sourceTree = "";
};
@@ -109,21 +117,13 @@
A151B04DC3D1415EEF784588 /* Pods */ = {
isa = PBXGroup;
children = (
- 3153F415177CAE497AE7D235 /* Pods-Runner.debug.xcconfig */,
- CDF8C9971FE1B0CF3262ED53 /* Pods-Runner.release.xcconfig */,
- 15764CEB058B2B69D5E35280 /* Pods-Runner.profile.xcconfig */,
+ F866E203CA1A8E0C6D9ABA5C /* Pods-Runner.debug.xcconfig */,
+ 1AC6D6834A180EC866A1A907 /* Pods-Runner.release.xcconfig */,
+ 7F544BD3701C5CF77F2FF87F /* Pods-Runner.profile.xcconfig */,
);
path = Pods;
sourceTree = "";
};
- C1E97B63847FB6B811E12FEA /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 7B9CC0EA1BA15CD3CCAD0356 /* Pods_Runner.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -131,14 +131,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
- E916CBFE94483EF7C2F17F6C /* [CP] Check Pods Manifest.lock */,
+ 39B3199DCFC6D38A9384399C /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- 0A5FBCADCBC1AF2E0353A84D /* [CP] Embed Pods Frameworks */,
+ FE8EB41334261949D37FC328 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -197,21 +197,26 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 0A5FBCADCBC1AF2E0353A84D /* [CP] Embed Pods Frameworks */ = {
+ 39B3199DCFC6D38A9384399C /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
- name = "[CP] Embed Pods Frameworks";
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
@@ -245,26 +250,21 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
- E916CBFE94483EF7C2F17F6C /* [CP] Check Pods Manifest.lock */ = {
+ FE8EB41334261949D37FC328 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
+ name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
diff --git a/demos/supabase-todolist/macos/Runner.xcodeproj/project.pbxproj b/demos/supabase-todolist/macos/Runner.xcodeproj/project.pbxproj
index fe47ba76..5581abf6 100644
--- a/demos/supabase-todolist/macos/Runner.xcodeproj/project.pbxproj
+++ b/demos/supabase-todolist/macos/Runner.xcodeproj/project.pbxproj
@@ -21,14 +21,14 @@
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
- 04EE2EEA1AF4432FCFE4D947 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 386AF35B349F70B5D676F5EC /* Pods_Runner.framework */; };
- 2F56F886B3B1884D3E437FD0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C2FC729F34600C40853A030B /* Pods_RunnerTests.framework */; };
335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
+ 75E48BA0AEB945CF7281B8D7 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 610323F3498FEA93EE8D7ECD /* Pods_Runner.framework */; };
8B5261612A7C463D00E9899E /* powersync_flutter_demoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B5261602A7C463D00E9899E /* powersync_flutter_demoTests.swift */; };
+ 9381A48772266D9C49309994 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 991B2149AEB0B3DAB09CB3BE /* Pods_RunnerTests.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -62,7 +62,7 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
- 1FB90A99EA939D06EE287C09 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ 10C22D07423926C20887DE48 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; };
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; };
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; };
33CC10ED2044A3C60003C045 /* powersync_flutter_demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = powersync_flutter_demo.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -77,17 +77,17 @@
33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; };
33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; };
33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; };
- 386AF35B349F70B5D676F5EC /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 4D425E3DE8C8153AB8C55A47 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ 610323F3498FEA93EE8D7ECD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; };
- 859D7659433CF3D1320F86CC /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; };
8B52615E2A7C463D00E9899E /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
8B5261602A7C463D00E9899E /* powersync_flutter_demoTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = powersync_flutter_demoTests.swift; sourceTree = ""; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; };
- 9DCB9EDE28DF57E29440CF22 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; };
- AF676D80A0CF80705DF388CF /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
- C1A05183B57D5869377A17B4 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
- C2FC729F34600C40853A030B /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- D0A6A6185A7A65698B8F4B1D /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; };
+ 991B2149AEB0B3DAB09CB3BE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ AE0A38BE3137E8F7E92FEF51 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; };
+ D7EC9DA661EA44265DC94A0B /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ DD914308A8C7B352FD10170F /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; };
+ EE686A5A317D10AC330E1BF9 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -95,7 +95,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 04EE2EEA1AF4432FCFE4D947 /* Pods_Runner.framework in Frameworks */,
+ 75E48BA0AEB945CF7281B8D7 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -103,7 +103,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 2F56F886B3B1884D3E437FD0 /* Pods_RunnerTests.framework in Frameworks */,
+ 9381A48772266D9C49309994 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -128,8 +128,8 @@
33CEB47122A05771004F2AC0 /* Flutter */,
8B52615F2A7C463D00E9899E /* powersync_flutter_demoTests */,
33CC10EE2044A3C60003C045 /* Products */,
- D73912EC22F37F3D000D13A0 /* Frameworks */,
- B6C445B3E9905835336FDF92 /* Pods */,
+ 85152821BF893F70AB178223 /* Pods */,
+ B7D43289954627B8B1B9B1F8 /* Frameworks */,
);
sourceTree = "";
};
@@ -177,33 +177,33 @@
path = Runner;
sourceTree = "";
};
- 8B52615F2A7C463D00E9899E /* powersync_flutter_demoTests */ = {
+ 85152821BF893F70AB178223 /* Pods */ = {
isa = PBXGroup;
children = (
- 8B5261602A7C463D00E9899E /* powersync_flutter_demoTests.swift */,
+ 4D425E3DE8C8153AB8C55A47 /* Pods-Runner.debug.xcconfig */,
+ D7EC9DA661EA44265DC94A0B /* Pods-Runner.release.xcconfig */,
+ EE686A5A317D10AC330E1BF9 /* Pods-Runner.profile.xcconfig */,
+ AE0A38BE3137E8F7E92FEF51 /* Pods-RunnerTests.debug.xcconfig */,
+ 10C22D07423926C20887DE48 /* Pods-RunnerTests.release.xcconfig */,
+ DD914308A8C7B352FD10170F /* Pods-RunnerTests.profile.xcconfig */,
);
- path = powersync_flutter_demoTests;
+ name = Pods;
+ path = Pods;
sourceTree = "";
};
- B6C445B3E9905835336FDF92 /* Pods */ = {
+ 8B52615F2A7C463D00E9899E /* powersync_flutter_demoTests */ = {
isa = PBXGroup;
children = (
- 1FB90A99EA939D06EE287C09 /* Pods-Runner.debug.xcconfig */,
- AF676D80A0CF80705DF388CF /* Pods-Runner.release.xcconfig */,
- C1A05183B57D5869377A17B4 /* Pods-Runner.profile.xcconfig */,
- 9DCB9EDE28DF57E29440CF22 /* Pods-RunnerTests.debug.xcconfig */,
- D0A6A6185A7A65698B8F4B1D /* Pods-RunnerTests.release.xcconfig */,
- 859D7659433CF3D1320F86CC /* Pods-RunnerTests.profile.xcconfig */,
+ 8B5261602A7C463D00E9899E /* powersync_flutter_demoTests.swift */,
);
- name = Pods;
- path = Pods;
+ path = powersync_flutter_demoTests;
sourceTree = "";
};
- D73912EC22F37F3D000D13A0 /* Frameworks */ = {
+ B7D43289954627B8B1B9B1F8 /* Frameworks */ = {
isa = PBXGroup;
children = (
- 386AF35B349F70B5D676F5EC /* Pods_Runner.framework */,
- C2FC729F34600C40853A030B /* Pods_RunnerTests.framework */,
+ 610323F3498FEA93EE8D7ECD /* Pods_Runner.framework */,
+ 991B2149AEB0B3DAB09CB3BE /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "";
@@ -215,13 +215,13 @@
isa = PBXNativeTarget;
buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
- 9E5C59BA43BACEF39908FBDE /* [CP] Check Pods Manifest.lock */,
+ 179983970B20315AFC123D9D /* [CP] Check Pods Manifest.lock */,
33CC10E92044A3C60003C045 /* Sources */,
33CC10EA2044A3C60003C045 /* Frameworks */,
33CC10EB2044A3C60003C045 /* Resources */,
33CC110E2044A8840003C045 /* Bundle Framework */,
3399D490228B24CF009A79C7 /* ShellScript */,
- 44F34942EBFBB7F6E89ED4BA /* [CP] Embed Pods Frameworks */,
+ F30CD4FEA1BDB49C8B84FB01 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -237,7 +237,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 8B5261672A7C463D00E9899E /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
- 9BD4CD7B4DFE9A6CC5BE206C /* [CP] Check Pods Manifest.lock */,
+ 6C234BEFE02FE63D2DBBAA50 /* [CP] Check Pods Manifest.lock */,
8B52615A2A7C463D00E9899E /* Sources */,
8B52615B2A7C463D00E9899E /* Frameworks */,
8B52615C2A7C463D00E9899E /* Resources */,
@@ -322,62 +322,67 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 3399D490228B24CF009A79C7 /* ShellScript */ = {
+ 179983970B20315AFC123D9D /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
- alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
);
+ name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
};
- 33CC111E2044C6BF0003C045 /* ShellScript */ = {
+ 3399D490228B24CF009A79C7 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
- Flutter/ephemeral/FlutterInputs.xcfilelist,
);
inputPaths = (
- Flutter/ephemeral/tripwire,
);
outputFileListPaths = (
- Flutter/ephemeral/FlutterOutputs.xcfilelist,
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
+ shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
};
- 44F34942EBFBB7F6E89ED4BA /* [CP] Embed Pods Frameworks */ = {
+ 33CC111E2044C6BF0003C045 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ Flutter/ephemeral/FlutterInputs.xcfilelist,
+ );
+ inputPaths = (
+ Flutter/ephemeral/tripwire,
);
- name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ Flutter/ephemeral/FlutterOutputs.xcfilelist,
+ );
+ outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
- showEnvVarsInLog = 0;
+ shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
};
- 9BD4CD7B4DFE9A6CC5BE206C /* [CP] Check Pods Manifest.lock */ = {
+ 6C234BEFE02FE63D2DBBAA50 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -399,26 +404,21 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
- 9E5C59BA43BACEF39908FBDE /* [CP] Check Pods Manifest.lock */ = {
+ F30CD4FEA1BDB49C8B84FB01 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
+ name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
@@ -699,7 +699,7 @@
};
8B5261642A7C463D00E9899E /* Debug */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 9DCB9EDE28DF57E29440CF22 /* Pods-RunnerTests.debug.xcconfig */;
+ baseConfigurationReference = AE0A38BE3137E8F7E92FEF51 /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@@ -729,7 +729,7 @@
};
8B5261652A7C463D00E9899E /* Release */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = D0A6A6185A7A65698B8F4B1D /* Pods-RunnerTests.release.xcconfig */;
+ baseConfigurationReference = 10C22D07423926C20887DE48 /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@@ -758,7 +758,7 @@
};
8B5261662A7C463D00E9899E /* Profile */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 859D7659433CF3D1320F86CC /* Pods-RunnerTests.profile.xcconfig */;
+ baseConfigurationReference = DD914308A8C7B352FD10170F /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
diff --git a/demos/supabase-todolist/pubspec.lock b/demos/supabase-todolist/pubspec.lock
index 84d7d5a7..02190798 100644
--- a/demos/supabase-todolist/pubspec.lock
+++ b/demos/supabase-todolist/pubspec.lock
@@ -484,7 +484,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "1.0.0"
+ version: "0.1.0"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml
index 9d912d51..34333d4e 100644
--- a/packages/powersync/pubspec.yaml
+++ b/packages/powersync/pubspec.yaml
@@ -11,7 +11,7 @@ dependencies:
sdk: flutter
sqlite3_flutter_libs: ^0.5.23
- powersync_core: ^1.0.0
+ powersync_core: ^0.1.0
dev_dependencies:
lints: ^3.0.0
path: ^1.8.3
diff --git a/packages/powersync_attachments_helper/pubspec.yaml b/packages/powersync_attachments_helper/pubspec.yaml
index 87f4f6f6..01238153 100644
--- a/packages/powersync_attachments_helper/pubspec.yaml
+++ b/packages/powersync_attachments_helper/pubspec.yaml
@@ -10,7 +10,7 @@ dependencies:
flutter:
sdk: flutter
- powersync_core: ^1.0.0
+ powersync_core: ^0.1.0
logging: ^1.2.0
sqlite_async: ^0.9.0
path_provider: ^2.0.13
diff --git a/packages/powersync_sqlcipher/pubspec.yaml b/packages/powersync_sqlcipher/pubspec.yaml
index 8d664135..f8ff63a6 100644
--- a/packages/powersync_sqlcipher/pubspec.yaml
+++ b/packages/powersync_sqlcipher/pubspec.yaml
@@ -12,7 +12,7 @@ dependencies:
flutter:
sdk: flutter
- powersync_core: ^1.0.0
+ powersync_core: ^0.1.0
sqlcipher_flutter_libs: ^0.6.4
universal_io: ^2.0.0
From ef78f4ca3de03aad83865d4ef13ff330a3a2352d Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Thu, 17 Oct 2024 10:27:29 +0200
Subject: [PATCH 13/33] Add license and notice
---
packages/powersync_core/LICENSE | 177 ++++++++++++++++++++++++++
packages/powersync_core/NOTICE | 1 +
packages/powersync_sqlcipher/LICENSE | 178 ++++++++++++++++++++++++++-
packages/powersync_sqlcipher/NOTICE | 1 +
4 files changed, 356 insertions(+), 1 deletion(-)
create mode 100644 packages/powersync_core/LICENSE
create mode 100644 packages/powersync_core/NOTICE
create mode 100644 packages/powersync_sqlcipher/NOTICE
diff --git a/packages/powersync_core/LICENSE b/packages/powersync_core/LICENSE
new file mode 100644
index 00000000..f433b1a5
--- /dev/null
+++ b/packages/powersync_core/LICENSE
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/packages/powersync_core/NOTICE b/packages/powersync_core/NOTICE
new file mode 100644
index 00000000..04b7c9ff
--- /dev/null
+++ b/packages/powersync_core/NOTICE
@@ -0,0 +1 @@
+Copyright 2023 Journey Mobile, Inc.
diff --git a/packages/powersync_sqlcipher/LICENSE b/packages/powersync_sqlcipher/LICENSE
index ba75c69f..f433b1a5 100644
--- a/packages/powersync_sqlcipher/LICENSE
+++ b/packages/powersync_sqlcipher/LICENSE
@@ -1 +1,177 @@
-TODO: Add your license here.
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/packages/powersync_sqlcipher/NOTICE b/packages/powersync_sqlcipher/NOTICE
new file mode 100644
index 00000000..04b7c9ff
--- /dev/null
+++ b/packages/powersync_sqlcipher/NOTICE
@@ -0,0 +1 @@
+Copyright 2023 Journey Mobile, Inc.
From a6cc4b859e5e8b7c79b3fe3711485f80dbfb215d Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Fri, 18 Oct 2024 10:32:38 +0200
Subject: [PATCH 14/33] Update pubspec.lock
---
demos/django-todolist/pubspec.lock | 2 +-
demos/supabase-anonymous-auth/pubspec.lock | 2 +-
demos/supabase-edge-function-auth/pubspec.lock | 2 +-
demos/supabase-simple-chat/pubspec.lock | 2 +-
demos/supabase-todolist-drift/pubspec.lock | 4 ++--
demos/supabase-todolist-optional-sync/pubspec.lock | 2 +-
demos/supabase-todolist/pubspec.lock | 4 ++--
7 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/demos/django-todolist/pubspec.lock b/demos/django-todolist/pubspec.lock
index 52aa1237..d84b4080 100644
--- a/demos/django-todolist/pubspec.lock
+++ b/demos/django-todolist/pubspec.lock
@@ -310,7 +310,7 @@ packages:
path: "../../packages/powersync"
relative: true
source: path
- version: "1.8.6"
+ version: "1.8.7"
powersync_core:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-anonymous-auth/pubspec.lock b/demos/supabase-anonymous-auth/pubspec.lock
index f6188c35..77046b13 100644
--- a/demos/supabase-anonymous-auth/pubspec.lock
+++ b/demos/supabase-anonymous-auth/pubspec.lock
@@ -366,7 +366,7 @@ packages:
path: "../../packages/powersync"
relative: true
source: path
- version: "1.8.6"
+ version: "1.8.7"
powersync_core:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-edge-function-auth/pubspec.lock b/demos/supabase-edge-function-auth/pubspec.lock
index bf8adb32..0bdf8d11 100644
--- a/demos/supabase-edge-function-auth/pubspec.lock
+++ b/demos/supabase-edge-function-auth/pubspec.lock
@@ -390,7 +390,7 @@ packages:
path: "../../packages/powersync"
relative: true
source: path
- version: "1.8.6"
+ version: "1.8.7"
powersync_core:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-simple-chat/pubspec.lock b/demos/supabase-simple-chat/pubspec.lock
index 1af57c22..4952e5f4 100644
--- a/demos/supabase-simple-chat/pubspec.lock
+++ b/demos/supabase-simple-chat/pubspec.lock
@@ -406,7 +406,7 @@ packages:
path: "../../packages/powersync"
relative: true
source: path
- version: "1.8.6"
+ version: "1.8.7"
powersync_core:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist-drift/pubspec.lock b/demos/supabase-todolist-drift/pubspec.lock
index c801290d..39cc51ee 100644
--- a/demos/supabase-todolist-drift/pubspec.lock
+++ b/demos/supabase-todolist-drift/pubspec.lock
@@ -686,14 +686,14 @@ packages:
path: "../../packages/powersync"
relative: true
source: path
- version: "1.8.6"
+ version: "1.8.7"
powersync_attachments_helper:
dependency: "direct main"
description:
path: "../../packages/powersync_attachments_helper"
relative: true
source: path
- version: "0.6.10"
+ version: "0.6.11"
powersync_core:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist-optional-sync/pubspec.lock b/demos/supabase-todolist-optional-sync/pubspec.lock
index 6711cba7..bf013471 100644
--- a/demos/supabase-todolist-optional-sync/pubspec.lock
+++ b/demos/supabase-todolist-optional-sync/pubspec.lock
@@ -470,7 +470,7 @@ packages:
path: "../../packages/powersync"
relative: true
source: path
- version: "1.8.6"
+ version: "1.8.7"
powersync_core:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist/pubspec.lock b/demos/supabase-todolist/pubspec.lock
index 02190798..f3646e26 100644
--- a/demos/supabase-todolist/pubspec.lock
+++ b/demos/supabase-todolist/pubspec.lock
@@ -470,14 +470,14 @@ packages:
path: "../../packages/powersync"
relative: true
source: path
- version: "1.8.6"
+ version: "1.8.7"
powersync_attachments_helper:
dependency: "direct main"
description:
path: "../../packages/powersync_attachments_helper"
relative: true
source: path
- version: "0.6.10"
+ version: "0.6.11"
powersync_core:
dependency: "direct overridden"
description:
From 5871e7e96b0271a9995f21fd9dd5b3794e948066 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Fri, 18 Oct 2024 10:53:38 +0200
Subject: [PATCH 15/33] Move setup_web script back to powersync
---
melos.yaml | 4 ++--
packages/{powersync_core => powersync}/assets/.gitkeep | 0
.../{powersync_core => powersync}/bin/setup_web.dart | 0
scripts/compile_webworker.dart | 2 +-
scripts/init_powersync_core_binary.dart | 9 +++------
5 files changed, 6 insertions(+), 9 deletions(-)
rename packages/{powersync_core => powersync}/assets/.gitkeep (100%)
rename packages/{powersync_core => powersync}/bin/setup_web.dart (100%)
diff --git a/melos.yaml b/melos.yaml
index 491fea3f..1a04f0a1 100644
--- a/melos.yaml
+++ b/melos.yaml
@@ -33,7 +33,7 @@ scripts:
prepare:demos:
description: Download SQLite3 wasm for demos
- run: dart run powersync_core:setup_web --no-worker
+ run: dart run powersync:setup_web --no-worker
exec:
concurrency: 1
packageFilters:
@@ -46,7 +46,7 @@ scripts:
exec:
concurrency: 1
packageFilters:
- scope: powersync_core
+ scope: powersync
analyze:demos:
description: Analyze Dart code in demos.
diff --git a/packages/powersync_core/assets/.gitkeep b/packages/powersync/assets/.gitkeep
similarity index 100%
rename from packages/powersync_core/assets/.gitkeep
rename to packages/powersync/assets/.gitkeep
diff --git a/packages/powersync_core/bin/setup_web.dart b/packages/powersync/bin/setup_web.dart
similarity index 100%
rename from packages/powersync_core/bin/setup_web.dart
rename to packages/powersync/bin/setup_web.dart
diff --git a/scripts/compile_webworker.dart b/scripts/compile_webworker.dart
index 5125997d..7b01f643 100644
--- a/scripts/compile_webworker.dart
+++ b/scripts/compile_webworker.dart
@@ -10,7 +10,7 @@ Future main() async {
/// The monorepo root assets directory
final workerFilename = 'powersync_db.worker.js';
final outputPath =
- path.join(repoRoot, 'packages/powersync_core/assets/$workerFilename');
+ path.join(repoRoot, 'packages/powersync/assets/$workerFilename');
final workerSourcePath = path.join(repoRoot,
'./packages/powersync_core/lib/src/web/powersync_db.worker.dart');
diff --git a/scripts/init_powersync_core_binary.dart b/scripts/init_powersync_core_binary.dart
index 714ce082..6bc28d5c 100644
--- a/scripts/init_powersync_core_binary.dart
+++ b/scripts/init_powersync_core_binary.dart
@@ -1,5 +1,5 @@
-/// Downloads the powersync dynamic library and copies it to the powersync package directory
-/// This is only necessary for running unit tests in the powersync package
+/// Downloads the powersync dynamic library and copies it to the powersync_core package directory
+/// This is only necessary for running unit tests in the powersync_core package
import 'dart:ffi';
import 'dart:io';
@@ -24,12 +24,9 @@ void main() async {
if (await originalFile.exists()) {
try {
// Rename the original file to the new file name
- final renamedFile =
- await originalFile.rename("$powersyncPath/$newFileName");
+ await originalFile.rename("$powersyncPath/$newFileName");
print(
'File renamed successfully from $sqliteCoreFilename to $newFileName');
- await renamedFile.copy("$powersyncCipherPath/$newFileName");
- print('$newFileName copied to $powersyncCipherPath');
} catch (e) {
throw IOException('Error renaming file: $e');
}
From 63e6c42753c316540950fd8c07935d4ebee44e18 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Fri, 18 Oct 2024 11:21:59 +0200
Subject: [PATCH 16/33] Fix tests quoteString for encryption key
---
melos.yaml | 2 +-
packages/powersync_core/assets/.gitkeep | 0
packages/powersync_core/test/server/worker_server.dart | 2 +-
packages/powersync_sqlcipher/lib/src/sqlcipher.dart | 2 +-
4 files changed, 3 insertions(+), 3 deletions(-)
create mode 100644 packages/powersync_core/assets/.gitkeep
diff --git a/melos.yaml b/melos.yaml
index 1a04f0a1..078f6716 100644
--- a/melos.yaml
+++ b/melos.yaml
@@ -42,7 +42,7 @@ scripts:
prepare:assets:
description: Download Sqlite3 WASM for tests
- run: dart ./bin/setup_web.dart --no-worker --output-dir assets
+ run: dart ./bin/setup_web.dart --no-worker --output-dir ../powersync_core/assets
exec:
concurrency: 1
packageFilters:
diff --git a/packages/powersync_core/assets/.gitkeep b/packages/powersync_core/assets/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/packages/powersync_core/test/server/worker_server.dart b/packages/powersync_core/test/server/worker_server.dart
index 2889b1d5..914315d2 100644
--- a/packages/powersync_core/test/server/worker_server.dart
+++ b/packages/powersync_core/test/server/worker_server.dart
@@ -17,7 +17,7 @@ Future hybridMain(StreamChannel
-# PowerSync SDK for Dart/Flutter
+# PowerSync SDK for Flutter
_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres or MongoDB on the server-side (MySQL coming soon)._
diff --git a/packages/powersync/example/README.md b/packages/powersync/example/README.md
index 26741f48..9db577ab 100644
--- a/packages/powersync/example/README.md
+++ b/packages/powersync/example/README.md
@@ -1,5 +1,5 @@
# Examples
- * [Getting started](./getting_started.dart)
- * [Watching queries](./watching_changes.dart)
- * [Batch writes](./batch_writes.dart)
+- [Getting started](./getting_started.dart)
+- [Watching queries](./watching_changes.dart)
+- [Batch writes](./batch_writes.dart)
diff --git a/packages/powersync_core/README.md b/packages/powersync_core/README.md
index 2e4846c6..09c92178 100644
--- a/packages/powersync_core/README.md
+++ b/packages/powersync_core/README.md
@@ -2,12 +2,18 @@
-# PowerSync SDK for Dart/Flutter
+# PowerSync SDK for Dart
_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres or MongoDB on the server-side (MySQL coming soon)._
This package (`powersync_core`) is the PowerSync client SDK for Dart.
+> **Note**
+>
+> This is a Dart library for Powersync for use cases such as server-side Dart or non-Flutter Dart environments.
+>
+> If you are developing a Flutter application, use [powersync](https://pub.dev/packages/powersync) or [powersync_sqlcipher](https://pub.dev/packages/powersync_sqlcipher) instead. The `powersync_core` package is for non-Flutter Dart environments.
+
# Installation
```bash
diff --git a/packages/powersync_core/example/README.md b/packages/powersync_core/example/README.md
new file mode 100644
index 00000000..8dbcfb60
--- /dev/null
+++ b/packages/powersync_core/example/README.md
@@ -0,0 +1,3 @@
+# Examples
+
+- [Getting started](./getting_started.dart)
diff --git a/packages/powersync_core/example/getting_started.dart b/packages/powersync_core/example/getting_started.dart
new file mode 100644
index 00000000..05064a35
--- /dev/null
+++ b/packages/powersync_core/example/getting_started.dart
@@ -0,0 +1,44 @@
+import 'dart:io';
+
+import 'package:powersync_core/powersync_core.dart';
+import 'package:path/path.dart';
+
+const schema = Schema([
+ Table('customers', [Column.text('name'), Column.text('email')])
+]);
+
+late PowerSyncDatabase db;
+
+// Setup connector to backend if you would like to sync data.
+class BackendConnector extends PowerSyncBackendConnector {
+ PowerSyncDatabase db;
+
+ BackendConnector(this.db);
+ @override
+ // ignore: body_might_complete_normally_nullable
+ Future fetchCredentials() async {
+ // implement fetchCredentials
+ }
+ @override
+ Future uploadData(PowerSyncDatabase database) async {
+ // implement uploadData
+ }
+}
+
+openDatabase() async {
+ const dbFilename = 'powersync-demo.db';
+ final dir = (Directory.current.uri).toFilePath();
+ var path = join(dir, dbFilename);
+
+ // Setup the database.
+ db = PowerSyncDatabase(schema: schema, path: path);
+ await db.initialize();
+
+ // Run local statements.
+ await db.execute(
+ 'INSERT INTO customers(id, name, email) VALUES(uuid(), ?, ?)',
+ ['Fred', 'fred@example.org']);
+
+ // Connect to backend
+ db.connect(connector: BackendConnector(db));
+}
diff --git a/packages/powersync_sqlcipher/README.md b/packages/powersync_sqlcipher/README.md
index 2979dfa5..7f95b599 100644
--- a/packages/powersync_sqlcipher/README.md
+++ b/packages/powersync_sqlcipher/README.md
@@ -2,7 +2,7 @@
-# PowerSync with SQLCipher SDK for Dart/Flutter
+# PowerSync with SQLCipher SDK for Flutter
_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres or MongoDB on the server-side (MySQL coming soon)._
@@ -18,42 +18,44 @@ flutter pub add powersync_sqlcipher
Our [full SDK reference](https://docs.powersync.com/client-sdk-references/flutter) contains everything you need to know to get started implementing PowerSync in your project.
-### Demo app
+This SDK requires a slightly different setup in order to encrypt the local database.
-The easiest way to test out the alpha is to run the [Supabase Todo-List](./demos/supabase-todolist) demo app:
+### Usage
-1. Checkout [this repo's](https://github.com/powersync-ja/powersync.dart/tree/master) `master` branch.
+```Dart
+import 'package/powersync_sqlcipher/powersync.dart';
-- Note: If you are an existing user updating to the latest code after a git pull, run `melos exec 'flutter pub upgrade'` in the repo's root and make sure it succeeds.
+/// Global reference to the database
+late final PowerSyncDatabase db;
-2. Run `melos prepare` in the repo's root
-3. cd into the `demos/supabase-todolist` folder
-4. If you haven’t yet: `cp lib/app_config_template.dart lib/app_config.dart` (optionally update this config with your own Supabase and PowerSync project details).
-5. Run `flutter run -d chrome`
+final cipherFactory = PowerSyncSQLCipherOpenFactory(
+ path: path, key: "sqlcipher-encryption-key");
+
+db = PowerSyncDatabase.withFactory(cipherFactory, schema: schema);
+```
### Installing PowerSync in your own project
Install the latest version of the package, for example:
```
-flutter pub add powersync_sqlcipher:'^0.1.0'
+flutter pub add powersync_sqlcipher: ^0.1.0
```
The latest version can be found [here](https://pub.dev/packages/powersync_sqlcipher/versions).
-### Usage
+### Demo app
-```Dart
-import 'package/powersync_sqlcipher/powersync.dart';
+The easiest way to test out the powersync is to run the [Supabase Todo-List](./demos/supabase-todolist) demo app:
-/// Global reference to the database
-late final PowerSyncDatabase db;
+1. Checkout [this repo's](https://github.com/powersync-ja/powersync.dart/tree/master) `master` branch.
-final cipherFactory = PowerSyncSQLCipherOpenFactory(
- path: await getDatabasePath(), key: "fkdjskjnfds");
+- Note: If you are an existing user updating to the latest code after a git pull, run `melos exec 'flutter pub upgrade'` in the repo's root and make sure it succeeds.
-db = PowerSyncDatabase.withFactory(cipherFactory, schema: schema);
-```
+2. Run `melos prepare` in the repo's root
+3. cd into the `demos/supabase-todolist` folder
+4. If you haven’t yet: `cp lib/app_config_template.dart lib/app_config.dart` (optionally update this config with your own Supabase and PowerSync project details).
+5. Run `flutter run -d chrome`
[comment]: # "The sections below need to be updated"
diff --git a/packages/powersync_sqlcipher/example/main.dart b/packages/powersync_sqlcipher/example/main.dart
new file mode 100644
index 00000000..f6ba21d2
--- /dev/null
+++ b/packages/powersync_sqlcipher/example/main.dart
@@ -0,0 +1,51 @@
+import 'package:flutter/foundation.dart';
+import 'package:powersync_sqlcipher/powersync.dart';
+import 'package:path_provider/path_provider.dart';
+import 'package:path/path.dart';
+
+const schema = Schema([
+ Table('customers', [Column.text('name'), Column.text('email')])
+]);
+
+late PowerSyncDatabase db;
+
+// Setup connector to backend if you would like to sync data.
+class BackendConnector extends PowerSyncBackendConnector {
+ PowerSyncDatabase db;
+
+ BackendConnector(this.db);
+ @override
+ // ignore: body_might_complete_normally_nullable
+ Future fetchCredentials() async {
+ // implement fetchCredentials
+ }
+ @override
+ Future uploadData(PowerSyncDatabase database) async {
+ // implement uploadData
+ }
+}
+
+openDatabase() async {
+ var path = 'powersync-demo.db';
+ // getApplicationSupportDirectory is not supported on Web
+ if (!kIsWeb) {
+ final dir = await getApplicationSupportDirectory();
+ path = join(dir.path, 'powersync-dart.db');
+ }
+
+ // Setup the database.
+ final cipherFactory = PowerSyncSQLCipherOpenFactory(
+ path: path, key: "sqlcipher-encryption-key");
+
+ db = PowerSyncDatabase.withFactory(cipherFactory, schema: schema);
+
+ await db.initialize();
+
+ // Run local statements.
+ await db.execute(
+ 'INSERT INTO customers(id, name, email) VALUES(uuid(), ?, ?)',
+ ['Fred', 'fred@example.org']);
+
+ // Connect to backend
+ db.connect(connector: BackendConnector(db));
+}
diff --git a/packages/powersync_sqlcipher/pubspec.yaml b/packages/powersync_sqlcipher/pubspec.yaml
index b84e9303..009f6b89 100644
--- a/packages/powersync_sqlcipher/pubspec.yaml
+++ b/packages/powersync_sqlcipher/pubspec.yaml
@@ -20,6 +20,8 @@ dev_dependencies:
sdk: flutter
flutter_lints: ^3.0.0
test_api: ^0.7.0
+ path: ^1.8.3
+ path_provider: ^2.0.13
platforms:
android:
From 82777ae0339028363cafb57edee9b89b06dacd00 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Fri, 18 Oct 2024 15:25:57 +0200
Subject: [PATCH 20/33] Update readme
---
packages/powersync_sqlcipher/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/powersync_sqlcipher/README.md b/packages/powersync_sqlcipher/README.md
index 7f95b599..c0713b7b 100644
--- a/packages/powersync_sqlcipher/README.md
+++ b/packages/powersync_sqlcipher/README.md
@@ -39,7 +39,7 @@ db = PowerSyncDatabase.withFactory(cipherFactory, schema: schema);
Install the latest version of the package, for example:
```
-flutter pub add powersync_sqlcipher: ^0.1.0
+flutter pub add powersync_sqlcipher
```
The latest version can be found [here](https://pub.dev/packages/powersync_sqlcipher/versions).
From 177437835073ca62ed111f77ca00e0de914a8459 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Wed, 23 Oct 2024 17:10:50 +0200
Subject: [PATCH 21/33] Update readme
---
packages/powersync/README.md | 4 +--
packages/powersync_core/README.md | 15 ++++++++++
packages/powersync_sqlcipher/README.md | 39 ++++++++------------------
3 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/packages/powersync/README.md b/packages/powersync/README.md
index fd21f98f..a9eb7178 100644
--- a/packages/powersync/README.md
+++ b/packages/powersync/README.md
@@ -22,7 +22,7 @@ Our [full SDK reference](https://docs.powersync.com/client-sdk-references/flutte
## **Web support - Open alpha**
-Web support in version 1.6.0 is currently in its alpha stage. This README has been updated to reflect changes relevant to this alpha release.
+Web support in version ^1.6.0 is currently in its alpha stage. This README has been updated to reflect changes relevant to this alpha release.
### Demo app
@@ -42,7 +42,7 @@ The easiest way to test out the alpha is to run the [Supabase Todo-List](./demos
Install the latest version of the package, for example:
```
-flutter pub add powersync:'^1.6.0'
+flutter pub add powersync:'^1.8.7'
```
The latest version can be found [here](https://pub.dev/packages/powersync/versions).
diff --git a/packages/powersync_core/README.md b/packages/powersync_core/README.md
index 09c92178..83895cfe 100644
--- a/packages/powersync_core/README.md
+++ b/packages/powersync_core/README.md
@@ -11,6 +11,7 @@ This package (`powersync_core`) is the PowerSync client SDK for Dart.
> **Note**
>
> This is a Dart library for Powersync for use cases such as server-side Dart or non-Flutter Dart environments.
+> This library requires sqlite3 with extension loading enabled to be installed on your system.
>
> If you are developing a Flutter application, use [powersync](https://pub.dev/packages/powersync) or [powersync_sqlcipher](https://pub.dev/packages/powersync_sqlcipher) instead. The `powersync_core` package is for non-Flutter Dart environments.
@@ -19,3 +20,17 @@ This package (`powersync_core`) is the PowerSync client SDK for Dart.
```bash
dart pub add powersync_core
```
+
+# Changelog
+
+A changelog for this SDK is available [here](https://pub.dev/packages/powersync_core/changelog).
+
+# API Reference
+
+The full API reference for this SDK can be found [here](https://pub.dev/documentation/powersync_core/latest/powersync_core/powersync_core-library.html).
+
+# Found a bug or need help?
+
+- Join our [Discord server](https://discord.gg/powersync) where you can browse topics from our community, ask questions, share feedback, or just say hello :)
+- Please open a [GitHub issue](https://github.com/powersync-ja/powersync.dart/issues) when you come across a bug.
+- Have feedback or an idea? [Submit an idea](https://roadmap.powersync.com/tabs/5-roadmap/submit-idea) via our public roadmap or [schedule a chat](https://calendly.com/powersync/powersync-chat) with someone from our product team.
diff --git a/packages/powersync_sqlcipher/README.md b/packages/powersync_sqlcipher/README.md
index c0713b7b..31cdb4e6 100644
--- a/packages/powersync_sqlcipher/README.md
+++ b/packages/powersync_sqlcipher/README.md
@@ -6,7 +6,7 @@
_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres or MongoDB on the server-side (MySQL coming soon)._
-This package (`powersync_sqlcipher`) is the PowerSync client SDK for Dart/Flutter with encryption enabled using SQLCipher.
+This package (`powersync_sqlcipher`) is the PowerSync client SDK for Flutter with encryption enabled using SQLCipher.
# Installation
@@ -18,7 +18,15 @@ flutter pub add powersync_sqlcipher
Our [full SDK reference](https://docs.powersync.com/client-sdk-references/flutter) contains everything you need to know to get started implementing PowerSync in your project.
-This SDK requires a slightly different setup in order to encrypt the local database.
+### Installing PowerSync with SQLCipher encryption in your own project
+
+Install the latest version of the package, for example:
+
+```
+flutter pub add powersync_sqlcipher
+```
+
+This SDK requires a slightly different setup to powersync in order to encrypt the local database.
### Usage
@@ -34,38 +42,15 @@ final cipherFactory = PowerSyncSQLCipherOpenFactory(
db = PowerSyncDatabase.withFactory(cipherFactory, schema: schema);
```
-### Installing PowerSync in your own project
-
-Install the latest version of the package, for example:
-
-```
-flutter pub add powersync_sqlcipher
-```
-
The latest version can be found [here](https://pub.dev/packages/powersync_sqlcipher/versions).
-### Demo app
-
-The easiest way to test out the powersync is to run the [Supabase Todo-List](./demos/supabase-todolist) demo app:
-
-1. Checkout [this repo's](https://github.com/powersync-ja/powersync.dart/tree/master) `master` branch.
-
-- Note: If you are an existing user updating to the latest code after a git pull, run `melos exec 'flutter pub upgrade'` in the repo's root and make sure it succeeds.
-
-2. Run `melos prepare` in the repo's root
-3. cd into the `demos/supabase-todolist` folder
-4. If you haven’t yet: `cp lib/app_config_template.dart lib/app_config.dart` (optionally update this config with your own Supabase and PowerSync project details).
-5. Run `flutter run -d chrome`
-
-[comment]: # "The sections below need to be updated"
-
# Changelog
-A changelog for this SDK is available [here](https://releases.powersync.com/announcements/flutter-client-sdk).
+A changelog for this SDK is available [here](https://pub.dev/packages/powersync_sqlcipher/changelog).
# API Reference
-The full API reference for this SDK can be found [here](https://pub.dev/documentation/powersync/latest/powersync/powersync-library.html).
+The full API reference for this SDK can be found [here](https://pub.dev/documentation/powersync_sqlcipher/latest/powersync_sqlcipher/powersync_sqlcipher-library.html).
# Examples
From d4f159f7b8ddee854ec8a0708225bc53ae42c631 Mon Sep 17 00:00:00 2001
From: benitav
Date: Tue, 29 Oct 2024 10:14:37 +0000
Subject: [PATCH 22/33] Readme polish
---
packages/powersync_flutter_libs/README.md | 2 +-
packages/powersync_sqlcipher/README.md | 22 ++++++++++------------
2 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/packages/powersync_flutter_libs/README.md b/packages/powersync_flutter_libs/README.md
index 19eba4ac..f009332c 100644
--- a/packages/powersync_flutter_libs/README.md
+++ b/packages/powersync_flutter_libs/README.md
@@ -1,5 +1,5 @@
# powersync_flutter_libs
-### Flutter binaries for [PowerSync](https://pub.dev/packages/powersync) please go there for documentation.
+### Flutter binaries for [PowerSync](https://pub.dev/packages/powersync). Please go there for documentation.
#### The core PowerSync binaries are built and released in [powersync-sqlite-core](https://github.com/powersync-ja/powersync-sqlite-core).
diff --git a/packages/powersync_sqlcipher/README.md b/packages/powersync_sqlcipher/README.md
index 31cdb4e6..9fcd8559 100644
--- a/packages/powersync_sqlcipher/README.md
+++ b/packages/powersync_sqlcipher/README.md
@@ -6,30 +6,26 @@
_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres or MongoDB on the server-side (MySQL coming soon)._
-This package (`powersync_sqlcipher`) is the PowerSync client SDK for Flutter with encryption enabled using SQLCipher.
+This package (`powersync_sqlcipher`) is the PowerSync client SDK for Flutter with encryption enabled using SQLCipher.
-# Installation
+If you do not require encryption, we recommend using the [`powersync`](/packages/powersync/README.md) SDK.
-```bash
-flutter pub add powersync_sqlcipher
-```
-
-# Getting Started
-
-Our [full SDK reference](https://docs.powersync.com/client-sdk-references/flutter) contains everything you need to know to get started implementing PowerSync in your project.
### Installing PowerSync with SQLCipher encryption in your own project
Install the latest version of the package, for example:
-```
+```bash
flutter pub add powersync_sqlcipher
```
-This SDK requires a slightly different setup to powersync in order to encrypt the local database.
+Version history can be found [here](https://pub.dev/packages/powersync_sqlcipher/versions).
+)
### Usage
+This SDK requires a slightly different setup to the `powersync` package in order to encrypt the local database:
+
```Dart
import 'package/powersync_sqlcipher/powersync.dart';
@@ -42,7 +38,9 @@ final cipherFactory = PowerSyncSQLCipherOpenFactory(
db = PowerSyncDatabase.withFactory(cipherFactory, schema: schema);
```
-The latest version can be found [here](https://pub.dev/packages/powersync_sqlcipher/versions).
+# Getting Started
+
+Our [full SDK reference](https://docs.powersync.com/client-sdk-references/flutter) contains everything you need to know to get started implementing PowerSync in your project.
# Changelog
From 0e0b17038903c3353f6decae8614416ab5f71b78 Mon Sep 17 00:00:00 2001
From: benitav
Date: Tue, 29 Oct 2024 10:27:25 +0000
Subject: [PATCH 23/33] More polish
---
packages/powersync_sqlcipher/README.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/packages/powersync_sqlcipher/README.md b/packages/powersync_sqlcipher/README.md
index 9fcd8559..7924f2ab 100644
--- a/packages/powersync_sqlcipher/README.md
+++ b/packages/powersync_sqlcipher/README.md
@@ -10,7 +10,6 @@ This package (`powersync_sqlcipher`) is the PowerSync client SDK for Flutter wit
If you do not require encryption, we recommend using the [`powersync`](/packages/powersync/README.md) SDK.
-
### Installing PowerSync with SQLCipher encryption in your own project
Install the latest version of the package, for example:
@@ -21,7 +20,6 @@ flutter pub add powersync_sqlcipher
Version history can be found [here](https://pub.dev/packages/powersync_sqlcipher/versions).
-)
### Usage
This SDK requires a slightly different setup to the `powersync` package in order to encrypt the local database:
@@ -33,7 +31,7 @@ import 'package/powersync_sqlcipher/powersync.dart';
late final PowerSyncDatabase db;
final cipherFactory = PowerSyncSQLCipherOpenFactory(
- path: path, key: "sqlcipher-encryption-key");
+ path: path, key: "sqlcipher-encryption-key"); // https://www.zetetic.net/sqlcipher/sqlcipher-api/#key
db = PowerSyncDatabase.withFactory(cipherFactory, schema: schema);
```
From 4b4f4e91f0578a99e4594e6b3ca6ae7c59ec35f5 Mon Sep 17 00:00:00 2001
From: benitav
Date: Tue, 29 Oct 2024 10:35:41 +0000
Subject: [PATCH 24/33] Explainer of the 3 SDKs, MySQL updates
---
README.md | 2 +-
packages/powersync/README.md | 8 +++++++-
packages/powersync_core/README.md | 2 +-
packages/powersync_sqlcipher/README.md | 4 ++--
4 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 21ea54ec..8f898815 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
-*[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres or MongoDB on the server-side (MySQL coming soon).*
+_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres, MongoDB or MySQL on the server-side._
PowerSync SDK for Dart and Flutter
===========
diff --git a/packages/powersync/README.md b/packages/powersync/README.md
index a9eb7178..a43792bb 100644
--- a/packages/powersync/README.md
+++ b/packages/powersync/README.md
@@ -4,12 +4,18 @@
# PowerSync SDK for Flutter
-_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres or MongoDB on the server-side (MySQL coming soon)._
+_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres, MongoDB or MySQL on the server-side._
This package (`powersync`) is the PowerSync client SDK for Flutter.
See a summary of features [here](https://docs.powersync.com/client-sdk-references/flutter).
+> **Note**
+> This SDK is recommended for Flutter applications that do not require on-device encryption.
+
+> - For Flutter applications that require encryption, use the [`powersync_sqlcipher`](https://pub.dev/packages/powersync_sqlcipher) SDK.
+> - For use cases such as server-side Dart or non-Flutter Dart environments, use the [`powersync_core`](https://pub.dev/packages/powersync_core) SDK.
+
# Installation
```bash
diff --git a/packages/powersync_core/README.md b/packages/powersync_core/README.md
index 83895cfe..591d2cb3 100644
--- a/packages/powersync_core/README.md
+++ b/packages/powersync_core/README.md
@@ -4,7 +4,7 @@
# PowerSync SDK for Dart
-_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres or MongoDB on the server-side (MySQL coming soon)._
+_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres, MongoDB or MySQL on the server-side._
This package (`powersync_core`) is the PowerSync client SDK for Dart.
diff --git a/packages/powersync_sqlcipher/README.md b/packages/powersync_sqlcipher/README.md
index 7924f2ab..b1938d6f 100644
--- a/packages/powersync_sqlcipher/README.md
+++ b/packages/powersync_sqlcipher/README.md
@@ -4,11 +4,11 @@
# PowerSync with SQLCipher SDK for Flutter
-_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres or MongoDB on the server-side (MySQL coming soon)._
+_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres, MongoDB or MySQL on the server-side._
This package (`powersync_sqlcipher`) is the PowerSync client SDK for Flutter with encryption enabled using SQLCipher.
-If you do not require encryption, we recommend using the [`powersync`](/packages/powersync/README.md) SDK.
+If you do not require encryption in your Flutter application, we recommend using the [`powersync`](https://pub.dev/packages/powersync) SDK.
### Installing PowerSync with SQLCipher encryption in your own project
From dbc312aa1191752c22af2fbeba64d2bce35cdae4 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Tue, 5 Nov 2024 15:57:39 +0200
Subject: [PATCH 25/33] Update readme and lower initial release versions
---
demos/django-todolist/pubspec.lock | 2 +-
demos/supabase-anonymous-auth/pubspec.lock | 2 +-
demos/supabase-edge-function-auth/pubspec.lock | 2 +-
demos/supabase-simple-chat/pubspec.lock | 2 +-
demos/supabase-todolist-drift/pubspec.lock | 2 +-
demos/supabase-todolist-optional-sync/pubspec.lock | 2 +-
demos/supabase-todolist/pubspec.lock | 2 +-
packages/powersync/pubspec.yaml | 2 +-
packages/powersync_attachments_helper/pubspec.yaml | 2 +-
packages/powersync_core/pubspec.yaml | 2 +-
packages/powersync_sqlcipher/README.md | 4 ++--
packages/powersync_sqlcipher/pubspec.yaml | 2 +-
12 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/demos/django-todolist/pubspec.lock b/demos/django-todolist/pubspec.lock
index dba99bf7..e50c33a7 100644
--- a/demos/django-todolist/pubspec.lock
+++ b/demos/django-todolist/pubspec.lock
@@ -325,7 +325,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "0.1.0"
+ version: "0.0.1"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-anonymous-auth/pubspec.lock b/demos/supabase-anonymous-auth/pubspec.lock
index 386ebb8d..e79bff5f 100644
--- a/demos/supabase-anonymous-auth/pubspec.lock
+++ b/demos/supabase-anonymous-auth/pubspec.lock
@@ -381,7 +381,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "0.1.0"
+ version: "0.0.1"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-edge-function-auth/pubspec.lock b/demos/supabase-edge-function-auth/pubspec.lock
index e746dbcf..789758ec 100644
--- a/demos/supabase-edge-function-auth/pubspec.lock
+++ b/demos/supabase-edge-function-auth/pubspec.lock
@@ -405,7 +405,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "0.1.0"
+ version: "0.0.1"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-simple-chat/pubspec.lock b/demos/supabase-simple-chat/pubspec.lock
index fe446d7b..532128b0 100644
--- a/demos/supabase-simple-chat/pubspec.lock
+++ b/demos/supabase-simple-chat/pubspec.lock
@@ -421,7 +421,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "0.1.0"
+ version: "0.0.1"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist-drift/pubspec.lock b/demos/supabase-todolist-drift/pubspec.lock
index af01b981..d256b303 100644
--- a/demos/supabase-todolist-drift/pubspec.lock
+++ b/demos/supabase-todolist-drift/pubspec.lock
@@ -700,7 +700,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "0.1.0"
+ version: "0.0.1"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist-optional-sync/pubspec.lock b/demos/supabase-todolist-optional-sync/pubspec.lock
index 86345a45..c780c0c8 100644
--- a/demos/supabase-todolist-optional-sync/pubspec.lock
+++ b/demos/supabase-todolist-optional-sync/pubspec.lock
@@ -485,7 +485,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "0.1.0"
+ version: "0.0.1"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/demos/supabase-todolist/pubspec.lock b/demos/supabase-todolist/pubspec.lock
index 8aff2c94..4b7e3be9 100644
--- a/demos/supabase-todolist/pubspec.lock
+++ b/demos/supabase-todolist/pubspec.lock
@@ -492,7 +492,7 @@ packages:
path: "../../packages/powersync_core"
relative: true
source: path
- version: "0.1.0"
+ version: "0.0.1"
powersync_flutter_libs:
dependency: "direct overridden"
description:
diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml
index 6c35ccb0..8c59151a 100644
--- a/packages/powersync/pubspec.yaml
+++ b/packages/powersync/pubspec.yaml
@@ -11,7 +11,7 @@ dependencies:
sdk: flutter
sqlite3_flutter_libs: ^0.5.23
- powersync_core: ^0.1.0
+ powersync_core: ^0.0.1
powersync_flutter_libs: ^0.4.1
collection: ^1.17.0
pubspec_parse: ^1.3.0
diff --git a/packages/powersync_attachments_helper/pubspec.yaml b/packages/powersync_attachments_helper/pubspec.yaml
index c1074c02..61cb259a 100644
--- a/packages/powersync_attachments_helper/pubspec.yaml
+++ b/packages/powersync_attachments_helper/pubspec.yaml
@@ -10,7 +10,7 @@ dependencies:
flutter:
sdk: flutter
- powersync_core: ^0.1.0
+ powersync_core: ^0.0.1
logging: ^1.2.0
sqlite_async: ^0.10.1
path_provider: ^2.0.13
diff --git a/packages/powersync_core/pubspec.yaml b/packages/powersync_core/pubspec.yaml
index 94fbc7ba..97feff67 100644
--- a/packages/powersync_core/pubspec.yaml
+++ b/packages/powersync_core/pubspec.yaml
@@ -1,5 +1,5 @@
name: powersync_core
-version: 0.1.0
+version: 0.0.1
homepage: https://powersync.com
repository: https://github.com/powersync-ja/powersync.dart
description: PowerSync Dart SDK - sync engine for building local-first apps.
diff --git a/packages/powersync_sqlcipher/README.md b/packages/powersync_sqlcipher/README.md
index 90c3d6ce..c9020679 100644
--- a/packages/powersync_sqlcipher/README.md
+++ b/packages/powersync_sqlcipher/README.md
@@ -4,9 +4,9 @@
# PowerSync with SQLCipher SDK for Flutter
-*[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres, MongoDB or MySQL on the server-side.*
+_[PowerSync](https://www.powersync.com) is a sync engine for building local-first apps with instantly-responsive UI/UX and simplified state transfer. Syncs between SQLite on the client-side and Postgres, MongoDB or MySQL on the server-side._
-This package (`powersync_sqlcipher`) is the PowerSync client SDK for Flutter with encryption enabled using SQLCipher.
+This package (`powersync_sqlcipher`) is the PowerSync client SDK for Flutter with encryption enabled using SQLCipher. It is currently in a **beta** release. This means it is safe to use in production, provided that you've tested your use cases.
If you do not require encryption in your Flutter application, we recommend using the [`powersync`](https://pub.dev/packages/powersync) SDK.
diff --git a/packages/powersync_sqlcipher/pubspec.yaml b/packages/powersync_sqlcipher/pubspec.yaml
index 009f6b89..48f0155e 100644
--- a/packages/powersync_sqlcipher/pubspec.yaml
+++ b/packages/powersync_sqlcipher/pubspec.yaml
@@ -1,5 +1,5 @@
name: powersync_sqlcipher
-version: 0.1.0
+version: 0.0.1
homepage: https://powersync.com
repository: https://github.com/powersync-ja/powersync.dart
description: PowerSync Flutter SDK - sync engine for building local-first apps.
From 588844443e5ca68764ac7b1c7cbe7b13686dda0b Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Mon, 11 Nov 2024 11:26:12 +0200
Subject: [PATCH 26/33] Improve dart demo
---
.../example/getting_started.dart | 71 ++++++++++++++++++-
1 file changed, 68 insertions(+), 3 deletions(-)
diff --git a/packages/powersync_core/example/getting_started.dart b/packages/powersync_core/example/getting_started.dart
index 05064a35..eb291b3b 100644
--- a/packages/powersync_core/example/getting_started.dart
+++ b/packages/powersync_core/example/getting_started.dart
@@ -1,7 +1,12 @@
+import 'dart:ffi';
import 'dart:io';
import 'package:powersync_core/powersync_core.dart';
import 'package:path/path.dart';
+import 'package:powersync_core/sqlite3.dart' as sqlite;
+import 'package:powersync_core/sqlite3_common.dart';
+import 'package:powersync_core/sqlite_async.dart';
+import 'package:powersync_core/sqlite3_open.dart' as sqlite_open;
const schema = Schema([
Table('customers', [Column.text('name'), Column.text('email')])
@@ -25,13 +30,73 @@ class BackendConnector extends PowerSyncBackendConnector {
}
}
-openDatabase() async {
+/// Custom factory to load the PowerSync extension.
+/// This is required to load the extension from a custom location.
+/// The extension is required to sync data with the backend.
+/// On macOS and Linux, the default sqlite3 library is overridden to load the extension.
+class PowerSyncDartOpenFactory extends PowerSyncOpenFactory {
+ PowerSyncDartOpenFactory({required super.path, super.sqliteOptions});
+
+ @override
+ CommonDatabase open(SqliteOpenOptions options) {
+ sqlite_open.open.overrideFor(sqlite_open.OperatingSystem.linux, () {
+ return DynamicLibrary.open('libsqlite3.so.0');
+ });
+ sqlite_open.open.overrideFor(sqlite_open.OperatingSystem.macOS, () {
+ return DynamicLibrary.open('libsqlite3.dylib');
+ });
+ return super.open(options);
+ }
+
+ @override
+ void enableExtension() {
+ var powersyncLib = DynamicLibrary.open(getLibraryForPlatform());
+ sqlite.sqlite3.ensureExtensionLoaded(sqlite.SqliteExtension.inLibrary(
+ powersyncLib, 'sqlite3_powersync_init'));
+ }
+
+ @override
+ String getLibraryForPlatform({String? path = "."}) {
+ switch (Abi.current()) {
+ case Abi.androidArm:
+ case Abi.androidArm64:
+ case Abi.androidX64:
+ return '$path/libpowersync.so';
+ case Abi.macosArm64:
+ case Abi.macosX64:
+ return '$path/libpowersync.dylib';
+ case Abi.linuxX64:
+ case Abi.linuxArm64:
+ return '$path/libpowersync.so';
+ case Abi.windowsX64:
+ return '$path/powersync.dll';
+ case Abi.androidIA32:
+ throw PowersyncNotReadyException(
+ 'Unsupported processor architecture. X86 Android emulators are not '
+ 'supported. Please use an x86_64 emulator instead. All physical '
+ 'Android devices are supported including 32bit ARM.',
+ );
+ default:
+ throw PowersyncNotReadyException(
+ 'Unsupported processor architecture "${Abi.current()}". '
+ 'Please open an issue on GitHub to request it.',
+ );
+ }
+ }
+}
+
+Future getDatabasePath() async {
const dbFilename = 'powersync-demo.db';
final dir = (Directory.current.uri).toFilePath();
- var path = join(dir, dbFilename);
+ return join(dir, dbFilename);
+}
+openDatabase() async {
// Setup the database.
- db = PowerSyncDatabase(schema: schema, path: path);
+ final psFactory = PowerSyncDartOpenFactory(path: await getDatabasePath());
+ db = PowerSyncDatabase.withFactory(psFactory, schema: schema);
+
+ // Initialise the database.
await db.initialize();
// Run local statements.
From 8e6ad278084cdb752c9d724ac86e27106307039f Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Mon, 11 Nov 2024 11:35:40 +0200
Subject: [PATCH 27/33] Fix changelog versions
---
packages/powersync_core/CHANGELOG.md | 2 +-
packages/powersync_sqlcipher/CHANGELOG.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/packages/powersync_core/CHANGELOG.md b/packages/powersync_core/CHANGELOG.md
index 951a5a3f..1eafba68 100644
--- a/packages/powersync_core/CHANGELOG.md
+++ b/packages/powersync_core/CHANGELOG.md
@@ -1,3 +1,3 @@
-## 0.1.0
+## 0.0.1
- Initial release.
diff --git a/packages/powersync_sqlcipher/CHANGELOG.md b/packages/powersync_sqlcipher/CHANGELOG.md
index 951a5a3f..1eafba68 100644
--- a/packages/powersync_sqlcipher/CHANGELOG.md
+++ b/packages/powersync_sqlcipher/CHANGELOG.md
@@ -1,3 +1,3 @@
-## 0.1.0
+## 0.0.1
- Initial release.
From 18cad569c346551c9c5fd92f568e731684ec40d3 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Mon, 11 Nov 2024 14:27:34 +0200
Subject: [PATCH 28/33] Fix sed command for build numbers
---
.github/workflows/publish.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index fb3a0ec4..61c059be 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -35,7 +35,7 @@ jobs:
env:
GITHUBREF: ${{ github.ref }}
run: |
- PACKAGE_NAME=$(sed -E 's/refs\/tags\/([a-z0-9_]+)-v([0-9]+\.[0-9]+\.[0-9]+)/\1/' <<< $GITHUBREF) && \
+ PACKAGE_NAME=$(sed -E 's/refs\/tags\/([a-z0-9_]+)-v([0-9]+\.[0-9]+\.[0-9]+(\+[0-9]+)?)/\1/' <<< $GITHUBREF) && \
echo "PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_ENV
echo "Package name: $PACKAGE_NAME"
From 19457da2204c5f59254ed6216e4c94c13ab3166c Mon Sep 17 00:00:00 2001
From: Mughees Khan
Date: Tue, 12 Nov 2024 14:48:16 +0200
Subject: [PATCH 29/33] Update packages/powersync/README.md
Co-authored-by: Ralf Kistner
---
packages/powersync/README.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/packages/powersync/README.md b/packages/powersync/README.md
index 496619e8..472f153f 100644
--- a/packages/powersync/README.md
+++ b/packages/powersync/README.md
@@ -11,10 +11,10 @@ This package (`powersync`) is the PowerSync client SDK for Flutter.
See a summary of features [here](https://docs.powersync.com/client-sdk-references/flutter).
> **Note**
-> This SDK is recommended for Flutter applications that do not require on-device encryption.
+> This package is recommended for Flutter applications that do not require on-device encryption.
-> - For Flutter applications that require encryption, use the [`powersync_sqlcipher`](https://pub.dev/packages/powersync_sqlcipher) SDK.
-> - For use cases such as server-side Dart or non-Flutter Dart environments, use the [`powersync_core`](https://pub.dev/packages/powersync_core) SDK.
+> - For Flutter applications that require encryption, use the [`powersync_sqlcipher`](https://pub.dev/packages/powersync_sqlcipher) package.
+> - For use cases such as server-side Dart or non-Flutter Dart environments, use the [`powersync_core`](https://pub.dev/packages/powersync_core) package.
# Installation
From e1ba4a484786ed27c02c0a050ff728db00c1b8ce Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Tue, 12 Nov 2024 14:56:04 +0200
Subject: [PATCH 30/33] Fix preCommit version script
---
melos.yaml | 2 +-
tool/update_version.dart | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/melos.yaml b/melos.yaml
index 078f6716..b06f3f1c 100644
--- a/melos.yaml
+++ b/melos.yaml
@@ -18,7 +18,7 @@ command:
# Automatically update libraryVersion:
preCommit: |
dart run tool/update_version.dart
- git add packages/powersync/lib/src/version.dart
+ git add packages/powersync_core/lib/src/version.dart
publish:
hooks:
pre: dart ./scripts/download_core_binary_demos.dart # Download latest core binaries when publishing
diff --git a/tool/update_version.dart b/tool/update_version.dart
index 7d7e8ee7..26bd2ca7 100644
--- a/tool/update_version.dart
+++ b/tool/update_version.dart
@@ -7,6 +7,6 @@ void main() {
final yaml = loadYaml(pubspecContent);
final version = yaml['version'];
- final versionFile = File('packages/powersync/lib/src/version.dart');
+ final versionFile = File('packages/powersync_core/lib/src/version.dart');
versionFile.writeAsStringSync("const String libraryVersion = '$version';\n");
}
From 8dafdaefee360cc714d3faf59f04080298362da2 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Tue, 12 Nov 2024 15:06:07 +0200
Subject: [PATCH 31/33] New user agent based on core package
---
.../powersync_core/lib/src/user_agent/user_agent_native.dart | 2 +-
packages/powersync_core/lib/src/user_agent/user_agent_web.dart | 2 +-
packages/powersync_core/lib/src/version.dart | 2 +-
tool/update_version.dart | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/packages/powersync_core/lib/src/user_agent/user_agent_native.dart b/packages/powersync_core/lib/src/user_agent/user_agent_native.dart
index 8874cee0..ab1638c5 100644
--- a/packages/powersync_core/lib/src/user_agent/user_agent_native.dart
+++ b/packages/powersync_core/lib/src/user_agent/user_agent_native.dart
@@ -10,7 +10,7 @@ String powerSyncUserAgent() {
}
// Ideally we'd get an OS version as well, but that's a little complex.
// Platform.operatingSystemVersion is very verbose.
- return 'powersync-dart/$libraryVersion $dart ${Platform.operatingSystem}';
+ return 'powersync-dart-core/$libraryVersion $dart ${Platform.operatingSystem}';
}
Map userAgentHeaders() {
diff --git a/packages/powersync_core/lib/src/user_agent/user_agent_web.dart b/packages/powersync_core/lib/src/user_agent/user_agent_web.dart
index 1d847319..8475d63c 100644
--- a/packages/powersync_core/lib/src/user_agent/user_agent_web.dart
+++ b/packages/powersync_core/lib/src/user_agent/user_agent_web.dart
@@ -1,7 +1,7 @@
import 'package:powersync_core/src/version.dart';
String powerSyncUserAgent() {
- return 'powersync-dart/$libraryVersion Dart (flutter-web)';
+ return 'powersync-dart-core/$libraryVersion Dart (flutter-web)';
}
Map userAgentHeaders() {
diff --git a/packages/powersync_core/lib/src/version.dart b/packages/powersync_core/lib/src/version.dart
index f3ee1336..09bbeea9 100644
--- a/packages/powersync_core/lib/src/version.dart
+++ b/packages/powersync_core/lib/src/version.dart
@@ -1 +1 @@
-const String libraryVersion = '1.9.3';
+const String libraryVersion = '0.0.1';
diff --git a/tool/update_version.dart b/tool/update_version.dart
index 26bd2ca7..a6db98b0 100644
--- a/tool/update_version.dart
+++ b/tool/update_version.dart
@@ -2,7 +2,7 @@ import 'dart:io';
import 'package:yaml/yaml.dart';
void main() {
- final pubspecFile = File('packages/powersync/pubspec.yaml');
+ final pubspecFile = File('packages/powersync_core/pubspec.yaml');
final pubspecContent = pubspecFile.readAsStringSync();
final yaml = loadYaml(pubspecContent);
final version = yaml['version'];
From b05b7055bf8e42a7b388a7d3ae04d62af0da2178 Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Tue, 12 Nov 2024 15:22:16 +0200
Subject: [PATCH 32/33] chore(release): publish packages - powersync@1.10.0 -
powersync_core@1.0.0 - powersync_sqlcipher@0.1.0 -
powersync_attachments_helper@0.6.16
---
CHANGELOG.md | 28 +++++++++++++++++++
demos/benchmarks/pubspec.yaml | 2 +-
demos/django-todolist/pubspec.yaml | 2 +-
demos/supabase-anonymous-auth/pubspec.yaml | 2 +-
.../supabase-edge-function-auth/pubspec.yaml | 2 +-
demos/supabase-simple-chat/pubspec.yaml | 2 +-
demos/supabase-todolist-drift/pubspec.yaml | 4 +--
.../pubspec.yaml | 2 +-
demos/supabase-todolist/pubspec.yaml | 4 +--
packages/powersync/CHANGELOG.md | 8 ++++--
packages/powersync/pubspec.yaml | 4 +--
.../powersync_attachments_helper/CHANGELOG.md | 4 +++
.../powersync_attachments_helper/pubspec.yaml | 4 +--
packages/powersync_core/CHANGELOG.md | 4 +--
packages/powersync_core/lib/src/version.dart | 2 +-
packages/powersync_core/pubspec.yaml | 2 +-
packages/powersync_sqlcipher/CHANGELOG.md | 4 +--
packages/powersync_sqlcipher/pubspec.yaml | 4 +--
18 files changed, 60 insertions(+), 24 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c49add44..979d45ae 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,34 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+## 2024-11-12
+
+### Changes
+
+---
+
+Packages with breaking changes:
+
+ - There are no breaking changes in this release.
+
+Packages with other changes:
+
+ - [`powersync` - `v1.10.0`](#powersync---v1100)
+ - [`powersync_attachments_helper` - `v0.6.16`](#powersync_attachments_helper---v0616)
+ - [`powersync_core` - `v1.0.0`](#powersync_core---v100)
+ - [`powersync_sqlcipher` - `v0.1.0`](#powersync_sqlcipher---v010)
+
+---
+
+#### `powersync` - `v1.10.0`
+
+#### `powersync_attachments_helper` - `v0.6.16`
+
+#### `powersync_core` - `v1.0.0`
+
+#### `powersync_sqlcipher` - `v0.1.0`
+
+
## 2024-11-11
### Changes
diff --git a/demos/benchmarks/pubspec.yaml b/demos/benchmarks/pubspec.yaml
index 8e360c04..4f4b1cd4 100644
--- a/demos/benchmarks/pubspec.yaml
+++ b/demos/benchmarks/pubspec.yaml
@@ -10,7 +10,7 @@ environment:
dependencies:
flutter:
sdk: flutter
- powersync: ^1.9.3
+ powersync: ^1.10.0
path_provider: ^2.1.1
path: ^1.8.3
logging: ^1.2.0
diff --git a/demos/django-todolist/pubspec.yaml b/demos/django-todolist/pubspec.yaml
index 096120d1..13415b5d 100644
--- a/demos/django-todolist/pubspec.yaml
+++ b/demos/django-todolist/pubspec.yaml
@@ -10,7 +10,7 @@ environment:
dependencies:
flutter:
sdk: flutter
- powersync: ^1.9.3
+ powersync: ^1.10.0
path_provider: ^2.1.1
path: ^1.8.3
logging: ^1.2.0
diff --git a/demos/supabase-anonymous-auth/pubspec.yaml b/demos/supabase-anonymous-auth/pubspec.yaml
index 2e7b1a14..3118a1e3 100644
--- a/demos/supabase-anonymous-auth/pubspec.yaml
+++ b/demos/supabase-anonymous-auth/pubspec.yaml
@@ -11,7 +11,7 @@ dependencies:
flutter:
sdk: flutter
- powersync: ^1.9.3
+ powersync: ^1.10.0
path_provider: ^2.1.1
supabase_flutter: ^2.0.2
path: ^1.8.3
diff --git a/demos/supabase-edge-function-auth/pubspec.yaml b/demos/supabase-edge-function-auth/pubspec.yaml
index 9a576368..60dc9b40 100644
--- a/demos/supabase-edge-function-auth/pubspec.yaml
+++ b/demos/supabase-edge-function-auth/pubspec.yaml
@@ -11,7 +11,7 @@ dependencies:
flutter:
sdk: flutter
- powersync: ^1.9.3
+ powersync: ^1.10.0
path_provider: ^2.1.1
supabase_flutter: ^2.0.2
path: ^1.8.3
diff --git a/demos/supabase-simple-chat/pubspec.yaml b/demos/supabase-simple-chat/pubspec.yaml
index 3e563cf8..8449ddda 100644
--- a/demos/supabase-simple-chat/pubspec.yaml
+++ b/demos/supabase-simple-chat/pubspec.yaml
@@ -37,7 +37,7 @@ dependencies:
supabase_flutter: ^2.0.2
timeago: ^3.6.0
- powersync: ^1.9.3
+ powersync: ^1.10.0
path_provider: ^2.1.1
path: ^1.8.3
logging: ^1.2.0
diff --git a/demos/supabase-todolist-drift/pubspec.yaml b/demos/supabase-todolist-drift/pubspec.yaml
index 22418c30..e13a1c73 100644
--- a/demos/supabase-todolist-drift/pubspec.yaml
+++ b/demos/supabase-todolist-drift/pubspec.yaml
@@ -9,8 +9,8 @@ environment:
dependencies:
flutter:
sdk: flutter
- powersync_attachments_helper: ^0.6.15+2
- powersync: ^1.9.3
+ powersync_attachments_helper: ^0.6.16
+ powersync: ^1.10.0
path_provider: ^2.1.1
supabase_flutter: ^2.0.1
path: ^1.8.3
diff --git a/demos/supabase-todolist-optional-sync/pubspec.yaml b/demos/supabase-todolist-optional-sync/pubspec.yaml
index 27c10b42..cce01eca 100644
--- a/demos/supabase-todolist-optional-sync/pubspec.yaml
+++ b/demos/supabase-todolist-optional-sync/pubspec.yaml
@@ -10,7 +10,7 @@ environment:
dependencies:
flutter:
sdk: flutter
- powersync: ^1.9.3
+ powersync: ^1.10.0
path_provider: ^2.1.1
supabase_flutter: ^2.0.1
path: ^1.8.3
diff --git a/demos/supabase-todolist/pubspec.yaml b/demos/supabase-todolist/pubspec.yaml
index c13903d8..f3a3a78c 100644
--- a/demos/supabase-todolist/pubspec.yaml
+++ b/demos/supabase-todolist/pubspec.yaml
@@ -10,8 +10,8 @@ environment:
dependencies:
flutter:
sdk: flutter
- powersync_attachments_helper: ^0.6.15+2
- powersync: ^1.9.3
+ powersync_attachments_helper: ^0.6.16
+ powersync: ^1.10.0
path_provider: ^2.1.1
supabase_flutter: ^2.0.1
path: ^1.8.3
diff --git a/packages/powersync/CHANGELOG.md b/packages/powersync/CHANGELOG.md
index 43b2adf0..13037b47 100644
--- a/packages/powersync/CHANGELOG.md
+++ b/packages/powersync/CHANGELOG.md
@@ -1,10 +1,14 @@
+## 1.10.0
+
+- This package now uses the `powersync_core` package to provide its base functionality.
+
## 1.9.3
- - Update a dependency to the latest release.
+- Update a dependency to the latest release.
## 1.9.2
- - [Web] Automatically flush IndexedDB storage to fix durability issues
+- [Web] Automatically flush IndexedDB storage to fix durability issues
## 1.9.1
diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml
index 2d13cb4e..2faa17f4 100644
--- a/packages/powersync/pubspec.yaml
+++ b/packages/powersync/pubspec.yaml
@@ -1,5 +1,5 @@
name: powersync
-version: 1.9.3
+version: 1.10.0
homepage: https://powersync.com
repository: https://github.com/powersync-ja/powersync.dart
description: PowerSync Flutter SDK - sync engine for building local-first apps.
@@ -11,7 +11,7 @@ dependencies:
sdk: flutter
sqlite3_flutter_libs: ^0.5.23
- powersync_core: ^0.0.1
+ powersync_core: ^1.0.0
powersync_flutter_libs: ^0.4.3
collection: ^1.17.0
pubspec_parse: ^1.3.0
diff --git a/packages/powersync_attachments_helper/CHANGELOG.md b/packages/powersync_attachments_helper/CHANGELOG.md
index 74acae9b..564b41c7 100644
--- a/packages/powersync_attachments_helper/CHANGELOG.md
+++ b/packages/powersync_attachments_helper/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.6.16
+
+ - Update a dependency to the latest release.
+
## 0.6.15+2
- Update a dependency to the latest release.
diff --git a/packages/powersync_attachments_helper/pubspec.yaml b/packages/powersync_attachments_helper/pubspec.yaml
index 28ff8fc8..35be20be 100644
--- a/packages/powersync_attachments_helper/pubspec.yaml
+++ b/packages/powersync_attachments_helper/pubspec.yaml
@@ -1,6 +1,6 @@
name: powersync_attachments_helper
description: A helper library for handling attachments when using PowerSync.
-version: 0.6.15+2
+version: 0.6.16
repository: https://github.com/powersync-ja/powersync.dart
homepage: https://www.powersync.com/
environment:
@@ -10,7 +10,7 @@ dependencies:
flutter:
sdk: flutter
- powersync_core: ^0.0.1
+ powersync_core: ^1.0.0
logging: ^1.2.0
sqlite_async: ^0.11.0
path_provider: ^2.0.13
diff --git a/packages/powersync_core/CHANGELOG.md b/packages/powersync_core/CHANGELOG.md
index 1eafba68..9b19f65d 100644
--- a/packages/powersync_core/CHANGELOG.md
+++ b/packages/powersync_core/CHANGELOG.md
@@ -1,3 +1,3 @@
-## 0.0.1
+## 1.0.0
-- Initial release.
+ - Dart library for Powersync for use cases such as server-side Dart or non-Flutter Dart environments initial release.
diff --git a/packages/powersync_core/lib/src/version.dart b/packages/powersync_core/lib/src/version.dart
index 09bbeea9..bd2b438f 100644
--- a/packages/powersync_core/lib/src/version.dart
+++ b/packages/powersync_core/lib/src/version.dart
@@ -1 +1 @@
-const String libraryVersion = '0.0.1';
+const String libraryVersion = '1.0.0';
diff --git a/packages/powersync_core/pubspec.yaml b/packages/powersync_core/pubspec.yaml
index e5402228..eb7a02fa 100644
--- a/packages/powersync_core/pubspec.yaml
+++ b/packages/powersync_core/pubspec.yaml
@@ -1,5 +1,5 @@
name: powersync_core
-version: 0.0.1
+version: 1.0.0
homepage: https://powersync.com
repository: https://github.com/powersync-ja/powersync.dart
description: PowerSync Dart SDK - sync engine for building local-first apps.
diff --git a/packages/powersync_sqlcipher/CHANGELOG.md b/packages/powersync_sqlcipher/CHANGELOG.md
index 1eafba68..5235ea73 100644
--- a/packages/powersync_sqlcipher/CHANGELOG.md
+++ b/packages/powersync_sqlcipher/CHANGELOG.md
@@ -1,3 +1,3 @@
-## 0.0.1
+## 0.1.0
-- Initial release.
+ - PowerSync client SDK for Flutter with encryption enabled using SQLCipher initial release
diff --git a/packages/powersync_sqlcipher/pubspec.yaml b/packages/powersync_sqlcipher/pubspec.yaml
index 48f0155e..bc1e7445 100644
--- a/packages/powersync_sqlcipher/pubspec.yaml
+++ b/packages/powersync_sqlcipher/pubspec.yaml
@@ -1,5 +1,5 @@
name: powersync_sqlcipher
-version: 0.0.1
+version: 0.1.0
homepage: https://powersync.com
repository: https://github.com/powersync-ja/powersync.dart
description: PowerSync Flutter SDK - sync engine for building local-first apps.
@@ -12,7 +12,7 @@ dependencies:
flutter:
sdk: flutter
- powersync_core: ^0.1.0
+ powersync_core: ^1.0.0
powersync_flutter_libs: ^0.4.0
sqlcipher_flutter_libs: ^0.6.4
dev_dependencies:
From d2684cd96c4b2846b19f5a8bc9f838ead883c97b Mon Sep 17 00:00:00 2001
From: Mugi Khan
Date: Tue, 12 Nov 2024 16:08:33 +0200
Subject: [PATCH 33/33] Trigger publish on new packages
---
.github/workflows/publish.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 61c059be..6a63085c 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -5,6 +5,8 @@ on:
- "powersync-v[0-9]+.[0-9]+.[0-9]+"
- "powersync_attachments_helper-v[0-9]+.[0-9]+.[0-9]+*"
- "powersync_flutter_libs-v[0-9]+.[0-9]+.[0-9]+*"
+ - "powersync_core-v[0-9]+.[0-9]+.[0-9]+*"
+ - "powersync_sqlcipher-v[0-9]+.[0-9]+.[0-9]+*"
workflow_dispatch:
jobs: