From a2a5a02157bc36d7059561d5d4ce19587e78fa1f Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 28 May 2026 17:19:02 -0500 Subject: [PATCH 01/15] Modernize package. --- Package.swift | 27 ++++++++++--------- .../CloudKit/CloudKit+StructuredQueries.swift | 2 +- .../SQLiteData/CloudKit/CloudKitSharing.swift | 4 +-- .../IdentifierStringConvertible.swift | 2 +- .../CloudKit/Internal/CloudContainer.swift | 2 +- .../CloudKit/Internal/CloudDatabase.swift | 2 +- .../CloudKit/Internal/DataManager.swift | 4 +-- .../Internal/MockCloudContainer.swift | 2 +- .../CloudKit/Internal/MockCloudDatabase.swift | 2 +- .../CloudKit/Internal/MockSyncEngine.swift | 4 +-- .../Internal/PendingRecordZoneChange.swift | 2 +- .../Internal/StateSerialization.swift | 2 +- .../CloudKit/Internal/SyncEngine.Event.swift | 2 +- .../Internal/SyncEngineProtocol+Live.swift | 2 +- .../Internal/SyncEngineProtocol.swift | 2 +- .../CloudKit/Internal/UnsyncedRecordID.swift | 2 +- .../CloudKit/PrimaryKeyMigration.swift | 2 +- Sources/SQLiteData/CloudKit/SyncEngine.swift | 4 +-- .../CloudKit/SyncEngineDelegate.swift | 2 +- .../SQLiteData/CloudKit/SyncMetadata.swift | 2 +- Sources/SQLiteData/Fetch.swift | 6 ++--- Sources/SQLiteData/FetchAll.swift | 6 ++--- Sources/SQLiteData/FetchOne.swift | 6 ++--- .../Internal/FetchKey+SwiftUI.swift | 2 +- Sources/SQLiteData/Internal/ISO8601.swift | 2 +- .../StructuredQueries+GRDB/QueryCursor.swift | 2 +- .../SQLiteFunctionDecoder.swift | 4 +-- .../SQLiteQueryDecoder.swift | 4 +-- .../SQLiteDataTestSupport/AssertQuery.swift | 2 +- Sources/TestLocals/TestLocals.swift | 4 +-- .../Internal/BaseCloudKitTests.swift | 4 +-- .../Internal/CloudKit+CustomDump.swift | 4 +-- .../Internal/CloudKitTestHelpers.swift | 6 ++--- 33 files changed, 64 insertions(+), 61 deletions(-) diff --git a/Package.swift b/Package.swift index 4ab214a5..9ac96213 100644 --- a/Package.swift +++ b/Package.swift @@ -96,18 +96,21 @@ let package = Package( swiftLanguageModes: [.v6] ) -let swiftSettings: [SwiftSetting] = [ - .enableUpcomingFeature("MemberImportVisibility") - // .unsafeFlags([ - // "-Xfrontend", - // "-warn-long-function-bodies=50", - // "-Xfrontend", - // "-warn-long-expression-type-checking=50", - // ]) -] - -for index in package.targets.indices { - package.targets[index].swiftSettings = swiftSettings +for target in package.targets { + target.swiftSettings = target.swiftSettings ?? [] + target.swiftSettings?.append(contentsOf: [ + .enableUpcomingFeature("ExistentialAny"), + .enableUpcomingFeature("ImmutableWeakCaptures"), + .enableUpcomingFeature("InferIsolatedConformances"), + .enableUpcomingFeature("InternalImportsByDefault"), + .enableUpcomingFeature("MemberImportVisibility"), + .enableUpcomingFeature("NonisolatedNonsendingByDefault"), + ]) + #if compiler(>=6.4) + target.swiftSettings?.append(contentsOf: [ + .treatAllWarnings(as: .error) + ]) + #endif } #if !os(Windows) diff --git a/Sources/SQLiteData/CloudKit/CloudKit+StructuredQueries.swift b/Sources/SQLiteData/CloudKit/CloudKit+StructuredQueries.swift index 861e40b3..a46e79cc 100644 --- a/Sources/SQLiteData/CloudKit/CloudKit+StructuredQueries.swift +++ b/Sources/SQLiteData/CloudKit/CloudKit+StructuredQueries.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + public import CloudKit import CryptoKit import StructuredQueriesCore diff --git a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift index a47d37a4..a998c2c4 100644 --- a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift +++ b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + public import CloudKit import Dependencies import SwiftUI @@ -69,7 +69,7 @@ /// [Apple's documentation](https://developer.apple.com/documentation/cloudkit/ckshare/systemfieldkey) /// for more info on what can be configured. public func share( - record: T, + record: sending T, configure: @Sendable (CKShare) -> Void ) async throws -> SharedRecord where T.TableColumns.PrimaryKey.QueryOutput: IdentifierStringConvertible { diff --git a/Sources/SQLiteData/CloudKit/IdentifierStringConvertible.swift b/Sources/SQLiteData/CloudKit/IdentifierStringConvertible.swift index b7767bad..ae564f2f 100644 --- a/Sources/SQLiteData/CloudKit/IdentifierStringConvertible.swift +++ b/Sources/SQLiteData/CloudKit/IdentifierStringConvertible.swift @@ -1,4 +1,4 @@ -import Foundation +public import Foundation /// A type that can be represented by a string identifier. /// diff --git a/Sources/SQLiteData/CloudKit/Internal/CloudContainer.swift b/Sources/SQLiteData/CloudKit/Internal/CloudContainer.swift index 4829102f..a8319c8a 100644 --- a/Sources/SQLiteData/CloudKit/Internal/CloudContainer.swift +++ b/Sources/SQLiteData/CloudKit/Internal/CloudContainer.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + public import CloudKit @available(iOS 15, tvOS 15, macOS 12, watchOS 8, *) package protocol CloudContainer: AnyObject, Equatable, Hashable, Sendable { diff --git a/Sources/SQLiteData/CloudKit/Internal/CloudDatabase.swift b/Sources/SQLiteData/CloudKit/Internal/CloudDatabase.swift index 94a0dc61..c1c8df0b 100644 --- a/Sources/SQLiteData/CloudKit/Internal/CloudDatabase.swift +++ b/Sources/SQLiteData/CloudKit/Internal/CloudDatabase.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + public import CloudKit package protocol CloudDatabase: AnyObject, Hashable, Sendable { var databaseScope: CKDatabase.Scope { get } diff --git a/Sources/SQLiteData/CloudKit/Internal/DataManager.swift b/Sources/SQLiteData/CloudKit/Internal/DataManager.swift index 1b6a5442..deb475e9 100644 --- a/Sources/SQLiteData/CloudKit/Internal/DataManager.swift +++ b/Sources/SQLiteData/CloudKit/Internal/DataManager.swift @@ -1,7 +1,7 @@ #if canImport(CloudKit) && canImport(CryptoKit) import CryptoKit import Dependencies - import Foundation + package import Foundation @available(macOS 13, iOS 16, tvOS 16, watchOS 9, *) package protocol DataManager: Sendable { @@ -96,7 +96,7 @@ @available(macOS 13, iOS 16, tvOS 16, watchOS 9, *) extension DependencyValues { - package var dataManager: DataManager { + package var dataManager: any DataManager { get { self[DataManagerKey.self] } set { self[DataManagerKey.self] = newValue } } diff --git a/Sources/SQLiteData/CloudKit/Internal/MockCloudContainer.swift b/Sources/SQLiteData/CloudKit/Internal/MockCloudContainer.swift index aaf8568b..0d1be63c 100644 --- a/Sources/SQLiteData/CloudKit/Internal/MockCloudContainer.swift +++ b/Sources/SQLiteData/CloudKit/Internal/MockCloudContainer.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + package import CloudKit @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) package final class MockCloudContainer: CloudContainer { diff --git a/Sources/SQLiteData/CloudKit/Internal/MockCloudDatabase.swift b/Sources/SQLiteData/CloudKit/Internal/MockCloudDatabase.swift index 50f20237..fbbd23ea 100644 --- a/Sources/SQLiteData/CloudKit/Internal/MockCloudDatabase.swift +++ b/Sources/SQLiteData/CloudKit/Internal/MockCloudDatabase.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + package import CloudKit import IssueReporting @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Sources/SQLiteData/CloudKit/Internal/MockSyncEngine.swift b/Sources/SQLiteData/CloudKit/Internal/MockSyncEngine.swift index e8719d26..33be6fde 100644 --- a/Sources/SQLiteData/CloudKit/Internal/MockSyncEngine.swift +++ b/Sources/SQLiteData/CloudKit/Internal/MockSyncEngine.swift @@ -1,7 +1,7 @@ #if canImport(CloudKit) - import CloudKit + package import CloudKit import IssueReporting - import OrderedCollections + package import OrderedCollections @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) package final class MockSyncEngine: SyncEngineProtocol { diff --git a/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift b/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift index fad64e0d..aef8991f 100644 --- a/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift +++ b/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + package import CloudKit @Table("sqlitedata_icloud_pendingRecordZoneChanges") @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift b/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift index 2b76b33b..1283ffec 100644 --- a/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift +++ b/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + package import CloudKit import StructuredQueriesCore @Table("sqlitedata_icloud_stateSerialization") diff --git a/Sources/SQLiteData/CloudKit/Internal/SyncEngine.Event.swift b/Sources/SQLiteData/CloudKit/Internal/SyncEngine.Event.swift index 230aac02..8622b829 100644 --- a/Sources/SQLiteData/CloudKit/Internal/SyncEngine.Event.swift +++ b/Sources/SQLiteData/CloudKit/Internal/SyncEngine.Event.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + package import CloudKit @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) extension SyncEngine { diff --git a/Sources/SQLiteData/CloudKit/Internal/SyncEngineProtocol+Live.swift b/Sources/SQLiteData/CloudKit/Internal/SyncEngineProtocol+Live.swift index d462e198..99c79613 100644 --- a/Sources/SQLiteData/CloudKit/Internal/SyncEngineProtocol+Live.swift +++ b/Sources/SQLiteData/CloudKit/Internal/SyncEngineProtocol+Live.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + public import CloudKit @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) extension CKSyncEngine: SyncEngineProtocol { diff --git a/Sources/SQLiteData/CloudKit/Internal/SyncEngineProtocol.swift b/Sources/SQLiteData/CloudKit/Internal/SyncEngineProtocol.swift index 58cff003..c62ebf37 100644 --- a/Sources/SQLiteData/CloudKit/Internal/SyncEngineProtocol.swift +++ b/Sources/SQLiteData/CloudKit/Internal/SyncEngineProtocol.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + package import CloudKit @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) package protocol SyncEngineProtocol: AnyObject, Sendable { diff --git a/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift b/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift index f24a3e04..606ff12c 100644 --- a/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift +++ b/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + package import CloudKit import StructuredQueriesCore @Table("sqlitedata_icloud_unsyncedRecordIDs") diff --git a/Sources/SQLiteData/CloudKit/PrimaryKeyMigration.swift b/Sources/SQLiteData/CloudKit/PrimaryKeyMigration.swift index 9a97fb0b..02297018 100644 --- a/Sources/SQLiteData/CloudKit/PrimaryKeyMigration.swift +++ b/Sources/SQLiteData/CloudKit/PrimaryKeyMigration.swift @@ -1,6 +1,6 @@ #if canImport(CloudKit) && canImport(CryptoKit) import CryptoKit - import Foundation + public import Foundation @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) extension SyncEngine { diff --git a/Sources/SQLiteData/CloudKit/SyncEngine.swift b/Sources/SQLiteData/CloudKit/SyncEngine.swift index 1099cad1..34dffb79 100644 --- a/Sources/SQLiteData/CloudKit/SyncEngine.swift +++ b/Sources/SQLiteData/CloudKit/SyncEngine.swift @@ -1,9 +1,9 @@ #if canImport(CloudKit) - import CloudKit + public import CloudKit import ConcurrencyExtras import Dependencies import OrderedCollections - import OSLog + public import OSLog import Observation import StructuredQueriesCore import SwiftData diff --git a/Sources/SQLiteData/CloudKit/SyncEngineDelegate.swift b/Sources/SQLiteData/CloudKit/SyncEngineDelegate.swift index b373dfc4..764dbbbb 100644 --- a/Sources/SQLiteData/CloudKit/SyncEngineDelegate.swift +++ b/Sources/SQLiteData/CloudKit/SyncEngineDelegate.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + public import CloudKit import CustomDump /// An interface for observing ``SyncEngine`` events and customizing ``SyncEngine`` behavior. diff --git a/Sources/SQLiteData/CloudKit/SyncMetadata.swift b/Sources/SQLiteData/CloudKit/SyncMetadata.swift index 22990098..b5795234 100644 --- a/Sources/SQLiteData/CloudKit/SyncMetadata.swift +++ b/Sources/SQLiteData/CloudKit/SyncMetadata.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import CloudKit + public import CloudKit /// A table that tracks metadata related to synchronized data. /// diff --git a/Sources/SQLiteData/Fetch.swift b/Sources/SQLiteData/Fetch.swift index 8327ab1b..b8f50027 100644 --- a/Sources/SQLiteData/Fetch.swift +++ b/Sources/SQLiteData/Fetch.swift @@ -1,10 +1,10 @@ -import Sharing +public import Sharing #if canImport(Combine) - import Combine + public import Combine #endif #if canImport(SwiftUI) - import SwiftUI + public import SwiftUI #endif /// A property that can query for data in a SQLite database. diff --git a/Sources/SQLiteData/FetchAll.swift b/Sources/SQLiteData/FetchAll.swift index ce06ea56..468dd76e 100644 --- a/Sources/SQLiteData/FetchAll.swift +++ b/Sources/SQLiteData/FetchAll.swift @@ -1,10 +1,10 @@ -import Sharing +public import Sharing #if canImport(Combine) - import Combine + public import Combine #endif #if canImport(SwiftUI) - import SwiftUI + public import SwiftUI #endif /// A property that can query for a collection of data in a SQLite database. diff --git a/Sources/SQLiteData/FetchOne.swift b/Sources/SQLiteData/FetchOne.swift index 7d6b7077..0dfbca03 100644 --- a/Sources/SQLiteData/FetchOne.swift +++ b/Sources/SQLiteData/FetchOne.swift @@ -1,10 +1,10 @@ -import Sharing +public import Sharing #if canImport(Combine) - import Combine + public import Combine #endif #if canImport(SwiftUI) - import SwiftUI + public import SwiftUI #endif /// A property that can query for a value in a SQLite database. diff --git a/Sources/SQLiteData/Internal/FetchKey+SwiftUI.swift b/Sources/SQLiteData/Internal/FetchKey+SwiftUI.swift index 3e8c4a59..238f2456 100644 --- a/Sources/SQLiteData/Internal/FetchKey+SwiftUI.swift +++ b/Sources/SQLiteData/Internal/FetchKey+SwiftUI.swift @@ -1,6 +1,6 @@ #if canImport(SwiftUI) import Sharing - import SwiftUI + package import SwiftUI @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) extension SharedReaderKey { diff --git a/Sources/SQLiteData/Internal/ISO8601.swift b/Sources/SQLiteData/Internal/ISO8601.swift index 1e9ce773..ea81c225 100644 --- a/Sources/SQLiteData/Internal/ISO8601.swift +++ b/Sources/SQLiteData/Internal/ISO8601.swift @@ -1,4 +1,4 @@ -import Foundation +public import Foundation extension Date { @usableFromInline diff --git a/Sources/SQLiteData/StructuredQueries+GRDB/QueryCursor.swift b/Sources/SQLiteData/StructuredQueries+GRDB/QueryCursor.swift index 286135e8..735ab8c3 100644 --- a/Sources/SQLiteData/StructuredQueries+GRDB/QueryCursor.swift +++ b/Sources/SQLiteData/StructuredQueries+GRDB/QueryCursor.swift @@ -1,4 +1,4 @@ -import Foundation +public import Foundation import GRDB import GRDBSQLite import StructuredQueriesCore diff --git a/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteFunctionDecoder.swift b/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteFunctionDecoder.swift index fc96760e..ffc6133b 100644 --- a/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteFunctionDecoder.swift +++ b/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteFunctionDecoder.swift @@ -1,5 +1,5 @@ -import Foundation -import GRDBSQLite +public import Foundation +public import GRDBSQLite import StructuredQueriesCore @usableFromInline diff --git a/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteQueryDecoder.swift b/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteQueryDecoder.swift index 4aed866e..da3419df 100644 --- a/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteQueryDecoder.swift +++ b/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteQueryDecoder.swift @@ -1,5 +1,5 @@ -import Foundation -import GRDBSQLite +public import Foundation +public import GRDBSQLite import StructuredQueriesCore @usableFromInline diff --git a/Sources/SQLiteDataTestSupport/AssertQuery.swift b/Sources/SQLiteDataTestSupport/AssertQuery.swift index 06684db1..ee6ed3ca 100644 --- a/Sources/SQLiteDataTestSupport/AssertQuery.swift +++ b/Sources/SQLiteDataTestSupport/AssertQuery.swift @@ -2,7 +2,7 @@ import CustomDump import Dependencies import Foundation import InlineSnapshotTesting -import SQLiteData +public import SQLiteData import StructuredQueriesCore import StructuredQueriesTestSupport diff --git a/Sources/TestLocals/TestLocals.swift b/Sources/TestLocals/TestLocals.swift index 88c39bd0..2ff92890 100644 --- a/Sources/TestLocals/TestLocals.swift +++ b/Sources/TestLocals/TestLocals.swift @@ -1,7 +1,7 @@ #if canImport(CloudKit) - import CloudKit + package import CloudKit + package import SQLiteData import Testing - import SQLiteData @TaskLocal package var prepareDatabase: @Sendable (UserDatabase) async throws -> Void = { _ in } @TaskLocal package var startImmediately = true diff --git a/Tests/SQLiteDataTests/Internal/BaseCloudKitTests.swift b/Tests/SQLiteDataTests/Internal/BaseCloudKitTests.swift index f55e5a64..e5ebbd31 100644 --- a/Tests/SQLiteDataTests/Internal/BaseCloudKitTests.swift +++ b/Tests/SQLiteDataTests/Internal/BaseCloudKitTests.swift @@ -4,10 +4,10 @@ import ConcurrencyExtrasTestSupport import DependenciesTestSupport import OrderedCollections - import SQLiteData + public import SQLiteData import SnapshotTesting import Testing -import TestLocals + import TestLocals import os @Suite( diff --git a/Tests/SQLiteDataTests/Internal/CloudKit+CustomDump.swift b/Tests/SQLiteDataTests/Internal/CloudKit+CustomDump.swift index 16d1903b..9d2cbf6c 100644 --- a/Tests/SQLiteDataTests/Internal/CloudKit+CustomDump.swift +++ b/Tests/SQLiteDataTests/Internal/CloudKit+CustomDump.swift @@ -1,6 +1,6 @@ #if canImport(CloudKit) - import CustomDump - import CloudKit + public import CustomDump + public import CloudKit import SQLiteData extension CKDatabase.Scope: @retroactive CustomDumpStringConvertible { diff --git a/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift b/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift index 4716be7b..dd7d6f95 100644 --- a/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift +++ b/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift @@ -1,8 +1,8 @@ -import CloudKit +package import CloudKit import ConcurrencyExtras import CustomDump -import OrderedCollections -import SQLiteData +package import OrderedCollections +package import SQLiteData import Testing @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) From 336082fb0eb6303ee8c9c149062a3702e81765b9 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 28 May 2026 17:20:11 -0500 Subject: [PATCH 02/15] better fix --- Sources/SQLiteData/CloudKit/CloudKitSharing.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift index a998c2c4..be3af3c1 100644 --- a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift +++ b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift @@ -69,7 +69,7 @@ /// [Apple's documentation](https://developer.apple.com/documentation/cloudkit/ckshare/systemfieldkey) /// for more info on what can be configured. public func share( - record: sending T, + record: T, configure: @Sendable (CKShare) -> Void ) async throws -> SharedRecord where T.TableColumns.PrimaryKey.QueryOutput: IdentifierStringConvertible { @@ -118,7 +118,7 @@ ) } let recordName = record.recordName - let lastKnownServerRecord = try await { + let lastKnownServerRecord = try await { [rawIdentifier = record.primaryKey.rawIdentifier] in let lastKnownServerRecord = try await metadatabase.read { db in try SyncMetadata @@ -130,7 +130,7 @@ else { throw SharingError( recordTableName: T.tableName, - recordPrimaryKey: record.primaryKey.rawIdentifier, + recordPrimaryKey: rawIdentifier, reason: .recordMetadataNotFound, debugDescription: """ No sync metadata found for record. Has the record been saved to the database \ From 783a152a6f9535620156a7a7126dbb758b939959 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 28 May 2026 18:32:50 -0500 Subject: [PATCH 03/15] wip --- .../xcshareddata/swiftpm/Package.resolved | 10 +++++----- Sources/SQLiteData/CloudKit/CloudKitSharing.swift | 2 +- .../CloudKit/Internal/DefaultNotificationCenter.swift | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Examples/Examples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Examples/Examples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index e5aa49c9..f9c3d89b 100644 --- a/Examples/Examples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Examples/Examples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "c133bf7d10c8ce1e5d6506c3d2f080eac8b4c8c2827044d53a9b925e903564fd", + "originHash" : "c56e7b70de4fe8bcc798354797a8405c0eeb2e9bc68bc0f202c14a8b11a0a97f", "pins" : [ { "identity" : "combine-schedulers", @@ -51,8 +51,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-concurrency-extras", "state" : { - "revision" : "5a3825302b1a0d744183200915a47b508c828e6f", - "version" : "1.3.2" + "revision" : "a90e2e40a7a840a853dd29e57cbef5dbb72c9d5b", + "version" : "1.4.0" } }, { @@ -123,8 +123,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/pointfreeco/swift-structured-queries", "state" : { - "branch" : "xcode-26-4", - "revision" : "31dd6609d8398016011b418374d82fb6f716c944" + "revision" : "8da8818fccd9959bd683934ddc62cf45bb65b3c8", + "version" : "0.31.1" } }, { diff --git a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift index be3af3c1..b8f0bf73 100644 --- a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift +++ b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift @@ -1,7 +1,7 @@ #if canImport(CloudKit) public import CloudKit import Dependencies - import SwiftUI + public import SwiftUI #if canImport(UIKit) import UIKit diff --git a/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift b/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift index d1423e4e..c0b2147e 100644 --- a/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift +++ b/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) && canImport(UIKit) - import UIKit + public import UIKit private enum DefaultNotificationCenterKey: DependencyKey { static let liveValue = NotificationCenter.default From 6b35876b66bfd32a9c6a8d8c402f83d1724649f4 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 28 May 2026 20:14:31 -0500 Subject: [PATCH 04/15] wip --- Examples/Reminders/RemindersApp.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Examples/Reminders/RemindersApp.swift b/Examples/Reminders/RemindersApp.swift index 93b7b845..429db4c8 100644 --- a/Examples/Reminders/RemindersApp.swift +++ b/Examples/Reminders/RemindersApp.swift @@ -63,7 +63,9 @@ class RemindersSyncEngineDelegate: SyncEngineDelegate { case .signIn: break case .signOut, .switchAccounts: - isDeleteLocalDataAlertPresented = true + await MainActor.run { + isDeleteLocalDataAlertPresented = true + } @unknown default: break } From 595fcc980d7e9b334bbf283cf544530e7d1b0467 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 28 May 2026 20:17:01 -0500 Subject: [PATCH 05/15] wip --- .github/workflows/ci.yml | 14 ++++++------- Sources/SQLiteData/Internal/Exports.swift | 24 ++++++++++++----------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6139ded0..726079c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,7 +6,7 @@ on: - main pull_request: branches: - - '*' + - "*" workflow_dispatch: jobs: @@ -14,23 +14,23 @@ jobs: name: macOS strategy: matrix: - xcode: ['26.2'] - config: ['debug', 'release'] + xcode: ["26.2"] + config: ["debug", "release"] runs-on: macos-26 steps: - uses: actions/checkout@v5 - name: Select Xcode ${{ matrix.xcode }} run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode }}.app - name: Run ${{ matrix.config }} tests - run: swift test -c ${{ matrix.config }} + run: swift test -c ${{ matrix.config }} -Xswiftc -D -Xswiftc EXCLUDE_EXPORTS examples: name: Examples strategy: matrix: - xcode: ['26.2'] - config: ['debug'] - scheme: ['Reminders', 'CaseStudies', 'SyncUps'] + xcode: ["26.2"] + config: ["debug"] + scheme: ["Reminders", "CaseStudies", "SyncUps"] runs-on: macos-26 continue-on-error: true steps: diff --git a/Sources/SQLiteData/Internal/Exports.swift b/Sources/SQLiteData/Internal/Exports.swift index e59b61a1..c918ec4d 100644 --- a/Sources/SQLiteData/Internal/Exports.swift +++ b/Sources/SQLiteData/Internal/Exports.swift @@ -1,12 +1,14 @@ -@_exported import Dependencies -@_exported import StructuredQueriesSQLite +#if !EXCLUDE_EXPORTS + @_exported import Dependencies + @_exported import StructuredQueriesSQLite -@_exported import struct GRDB.Configuration -@_exported import class GRDB.Database -@_exported import struct GRDB.DatabaseError -@_exported import struct GRDB.DatabaseMigrator -@_exported import class GRDB.DatabasePool -@_exported import class GRDB.DatabaseQueue -@_exported import protocol GRDB.DatabaseReader -@_exported import protocol GRDB.DatabaseWriter -@_exported import protocol GRDB.ValueObservationScheduler + @_exported import struct GRDB.Configuration + @_exported import class GRDB.Database + @_exported import struct GRDB.DatabaseError + @_exported import struct GRDB.DatabaseMigrator + @_exported import class GRDB.DatabasePool + @_exported import class GRDB.DatabaseQueue + @_exported import protocol GRDB.DatabaseReader + @_exported import protocol GRDB.DatabaseWriter + @_exported import protocol GRDB.ValueObservationScheduler +#endif From 08e921ca95f7d39e9d9341bf7173a8e575fad245 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 28 May 2026 20:51:01 -0500 Subject: [PATCH 06/15] wip --- .../CloudKit/CloudKit+StructuredQueries.swift | 4 ++- .../SQLiteData/CloudKit/CloudKitSharing.swift | 4 ++- .../CloudKit/DefaultSyncEngine.swift | 3 +- .../CloudKit/Internal/CloudKitFunctions.swift | 2 ++ .../CloudKit/Internal/DataManager.swift | 1 + .../CloudKit/Internal/ForeignKey.swift | 2 +- .../CloudKit/Internal/Metadatabase.swift | 3 ++ .../Internal/MockCloudContainer.swift | 2 ++ .../CloudKit/Internal/MockCloudDatabase.swift | 2 ++ .../CloudKit/Internal/MockSyncEngine.swift | 1 + .../Internal/PendingRecordZoneChange.swift | 1 + .../CloudKit/Internal/Pragmas.swift | 2 ++ .../CloudKit/Internal/RecordType.swift | 2 ++ .../CloudKit/Internal/SQLiteSchema.swift | 2 ++ .../Internal/StateSerialization.swift | 2 +- .../CloudKit/Internal/TableInfo.swift | 2 +- .../CloudKit/Internal/Triggers.swift | 2 ++ .../CloudKit/Internal/UnsyncedRecordID.swift | 2 +- .../CloudKit/Internal/UserDatabase.swift | 1 + .../CloudKit/PrimaryKeyMigration.swift | 3 ++ Sources/SQLiteData/CloudKit/SyncEngine.swift | 7 +++-- .../CloudKit/SyncEngineDelegate.swift | 1 + .../SQLiteData/CloudKit/SyncMetadata.swift | 2 ++ Sources/SQLiteData/Fetch.swift | 3 ++ Sources/SQLiteData/FetchAll.swift | 3 ++ Sources/SQLiteData/FetchKeyRequest.swift | 2 ++ Sources/SQLiteData/FetchOne.swift | 16 ++++++----- Sources/SQLiteData/FetchSubscription.swift | 1 + Sources/SQLiteData/Internal/Exports.swift | 28 +++++++++---------- .../Internal/FetchKey+SwiftUI.swift | 1 + Sources/SQLiteData/Internal/ISO8601.swift | 1 + .../SQLiteData/Internal/StatementKey.swift | 2 ++ .../CustomFunctions.swift | 2 ++ .../DefaultDatabase.swift | 3 +- .../StructuredQueries+GRDB/QueryCursor.swift | 4 +-- .../SQLiteFunctionDecoder.swift | 2 +- .../SQLiteQueryDecoder.swift | 2 +- .../StructuredQueries+GRDB/Seed.swift | 3 +- .../Statement+GRDB.swift | 3 +- .../StructuredQueries+GRDB/Table+GRDB.swift | 3 +- .../SQLiteDataTestSupport/AssertQuery.swift | 3 +- Tests/SQLiteDataTests/AssertQueryTests.swift | 2 ++ .../CloudKitTests/AccountLifecycleTests.swift | 2 ++ .../CloudKitTests/AssetsTests.swift | 2 ++ .../CloudKitTests/AtomicTests.swift | 2 ++ .../AttachedMetadatabaseTests.swift | 1 + .../CloudKitTests/CloudKitTests.swift | 3 ++ .../FetchRecordZoneChangesTests.swift | 3 ++ .../FetchedDatabaseChangesTests.swift | 1 + .../ForeignKeyConstraintTests.swift | 2 ++ .../CloudKitTests/MergeConflictTests.swift | 2 ++ .../CloudKitTests/MetadataTests.swift | 2 ++ .../CloudKitTests/NewTableSyncTests.swift | 1 + .../NextRecordZoneChangeBatchTests.swift | 2 ++ .../CloudKitTests/PreviewTests.swift | 2 ++ .../CloudKitTests/RecordTypeTests.swift | 3 ++ .../ReferenceViolationTests.swift | 2 ++ .../CloudKitTests/SchemaChangeTests.swift | 2 ++ .../CloudKitTests/ScopedTableSyncTests.swift | 1 + .../SharingPermissionsTests.swift | 3 ++ .../CloudKitTests/SharingTests.swift | 2 ++ .../SyncEngineDelegateTests.swift | 2 ++ .../SyncEngineLifecycleTests.swift | 2 ++ .../CloudKitTests/SyncEngineTests.swift | 4 +++ .../SyncEngineValidationTests.swift | 2 ++ .../CloudKitTests/TriggerTests.swift | 1 + .../UnattachedSyncEngineTests.swift | 1 + .../CloudKitTests/UserlandTests.swift | 3 ++ Tests/SQLiteDataTests/CompileTimeTests.swift | 2 ++ .../SQLiteDataTests/CustomFunctionTests.swift | 3 ++ .../DatabaseFunctionTests.swift | 2 ++ Tests/SQLiteDataTests/DateTests.swift | 3 ++ Tests/SQLiteDataTests/FetchAllTests.swift | 3 ++ Tests/SQLiteDataTests/FetchOneTests.swift | 3 ++ .../FetchSubscriptionTests.swift | 3 ++ Tests/SQLiteDataTests/FetchTests.swift | 3 ++ Tests/SQLiteDataTests/IntegrationTests.swift | 3 ++ .../Internal/BaseCloudKitTests.swift | 3 ++ .../Internal/CloudKit+CustomDump.swift | 1 + .../Internal/CloudKitTestHelpers.swift | 1 + Tests/SQLiteDataTests/Internal/Schema.swift | 2 ++ .../Internal/UserDatabaseHelpers.swift | 1 + Tests/SQLiteDataTests/MigrationTests.swift | 2 ++ .../PrimaryKeyMigrationTests.swift | 4 +++ Tests/SQLiteDataTests/QueryCursorTests.swift | 2 ++ 85 files changed, 192 insertions(+), 39 deletions(-) diff --git a/Sources/SQLiteData/CloudKit/CloudKit+StructuredQueries.swift b/Sources/SQLiteData/CloudKit/CloudKit+StructuredQueries.swift index a46e79cc..d2f0726e 100644 --- a/Sources/SQLiteData/CloudKit/CloudKit+StructuredQueries.swift +++ b/Sources/SQLiteData/CloudKit/CloudKit+StructuredQueries.swift @@ -1,7 +1,9 @@ #if canImport(CloudKit) public import CloudKit import CryptoKit - import StructuredQueriesCore + import Dependencies + import IssueReporting + public import StructuredQueriesCore extension CKRecord { public typealias _AllFieldsRepresentation = SQLiteData._AllFieldsRepresentation diff --git a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift index b8f0bf73..846b0e28 100644 --- a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift +++ b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift @@ -1,7 +1,9 @@ #if canImport(CloudKit) public import CloudKit import Dependencies - public import SwiftUI + import GRDB + import SwiftUI + public import StructuredQueries #if canImport(UIKit) import UIKit diff --git a/Sources/SQLiteData/CloudKit/DefaultSyncEngine.swift b/Sources/SQLiteData/CloudKit/DefaultSyncEngine.swift index 9a2c27be..a8edd53c 100644 --- a/Sources/SQLiteData/CloudKit/DefaultSyncEngine.swift +++ b/Sources/SQLiteData/CloudKit/DefaultSyncEngine.swift @@ -1,6 +1,7 @@ #if canImport(CloudKit) import CloudKit - import Dependencies + import GRDB + public import Dependencies @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) extension DependencyValues { diff --git a/Sources/SQLiteData/CloudKit/Internal/CloudKitFunctions.swift b/Sources/SQLiteData/CloudKit/Internal/CloudKitFunctions.swift index afab5b52..b367ee92 100644 --- a/Sources/SQLiteData/CloudKit/Internal/CloudKitFunctions.swift +++ b/Sources/SQLiteData/CloudKit/Internal/CloudKitFunctions.swift @@ -1,6 +1,8 @@ #if canImport(CloudKit) import CloudKit + import Dependencies import Foundation + import StructuredQueriesSQLite @DatabaseFunction("sqlitedata_icloud_currentTime") func currentTime() -> Int64 { diff --git a/Sources/SQLiteData/CloudKit/Internal/DataManager.swift b/Sources/SQLiteData/CloudKit/Internal/DataManager.swift index deb475e9..9a67b42e 100644 --- a/Sources/SQLiteData/CloudKit/Internal/DataManager.swift +++ b/Sources/SQLiteData/CloudKit/Internal/DataManager.swift @@ -1,4 +1,5 @@ #if canImport(CloudKit) && canImport(CryptoKit) + package import ConcurrencyExtras import CryptoKit import Dependencies package import Foundation diff --git a/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift b/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift index ae329bb6..3f5e81bb 100644 --- a/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift +++ b/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift @@ -1,6 +1,6 @@ #if canImport(CloudKit) import Foundation - import StructuredQueriesCore + public import StructuredQueries @Table package struct ForeignKey { diff --git a/Sources/SQLiteData/CloudKit/Internal/Metadatabase.swift b/Sources/SQLiteData/CloudKit/Internal/Metadatabase.swift index c8efa856..d8571a95 100644 --- a/Sources/SQLiteData/CloudKit/Internal/Metadatabase.swift +++ b/Sources/SQLiteData/CloudKit/Internal/Metadatabase.swift @@ -1,6 +1,9 @@ #if canImport(CloudKit) + import Dependencies + import GRDB import Foundation import os + import StructuredQueries @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) func defaultMetadatabase( diff --git a/Sources/SQLiteData/CloudKit/Internal/MockCloudContainer.swift b/Sources/SQLiteData/CloudKit/Internal/MockCloudContainer.swift index 0d1be63c..3af32acf 100644 --- a/Sources/SQLiteData/CloudKit/Internal/MockCloudContainer.swift +++ b/Sources/SQLiteData/CloudKit/Internal/MockCloudContainer.swift @@ -1,5 +1,7 @@ #if canImport(CloudKit) + package import ConcurrencyExtras package import CloudKit + import Dependencies @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) package final class MockCloudContainer: CloudContainer { diff --git a/Sources/SQLiteData/CloudKit/Internal/MockCloudDatabase.swift b/Sources/SQLiteData/CloudKit/Internal/MockCloudDatabase.swift index fbbd23ea..510d1f5c 100644 --- a/Sources/SQLiteData/CloudKit/Internal/MockCloudDatabase.swift +++ b/Sources/SQLiteData/CloudKit/Internal/MockCloudDatabase.swift @@ -1,5 +1,7 @@ #if canImport(CloudKit) + package import ConcurrencyExtras package import CloudKit + import Dependencies import IssueReporting @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Sources/SQLiteData/CloudKit/Internal/MockSyncEngine.swift b/Sources/SQLiteData/CloudKit/Internal/MockSyncEngine.swift index 33be6fde..c8ef0113 100644 --- a/Sources/SQLiteData/CloudKit/Internal/MockSyncEngine.swift +++ b/Sources/SQLiteData/CloudKit/Internal/MockSyncEngine.swift @@ -1,4 +1,5 @@ #if canImport(CloudKit) + package import ConcurrencyExtras package import CloudKit import IssueReporting package import OrderedCollections diff --git a/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift b/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift index aef8991f..f44ec370 100644 --- a/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift +++ b/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift @@ -1,5 +1,6 @@ #if canImport(CloudKit) package import CloudKit + public import StructuredQueries @Table("sqlitedata_icloud_pendingRecordZoneChanges") @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift b/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift index e30a254f..f9df703e 100644 --- a/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift +++ b/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift @@ -1,4 +1,6 @@ #if canImport(CloudKit) + package import StructuredQueries + @Table struct PragmaDatabaseList { static var tableAlias: String? { "databases" } diff --git a/Sources/SQLiteData/CloudKit/Internal/RecordType.swift b/Sources/SQLiteData/CloudKit/Internal/RecordType.swift index 4c610b80..286bbb31 100644 --- a/Sources/SQLiteData/CloudKit/Internal/RecordType.swift +++ b/Sources/SQLiteData/CloudKit/Internal/RecordType.swift @@ -1,4 +1,6 @@ #if canImport(CloudKit) + public import StructuredQueries + @Table("sqlitedata_icloud_recordTypes") package struct RecordType: Hashable { @Column(primaryKey: true) diff --git a/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift b/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift index 40fa7d87..c8ad92ea 100644 --- a/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift +++ b/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift @@ -1,4 +1,6 @@ #if canImport(CloudKit) + public import StructuredQueries + @Table("sqlite_schema") package struct SQLiteSchema { package let type: ObjectType diff --git a/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift b/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift index 1283ffec..0698e49c 100644 --- a/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift +++ b/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift @@ -1,6 +1,6 @@ #if canImport(CloudKit) package import CloudKit - import StructuredQueriesCore + public import StructuredQueries @Table("sqlitedata_icloud_stateSerialization") @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift b/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift index 2207ce94..12a31d9f 100644 --- a/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift +++ b/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - import StructuredQueriesCore + package import StructuredQueries @Table package struct TableInfo: Codable, Hashable { diff --git a/Sources/SQLiteData/CloudKit/Internal/Triggers.swift b/Sources/SQLiteData/CloudKit/Internal/Triggers.swift index 93411a74..729a1485 100644 --- a/Sources/SQLiteData/CloudKit/Internal/Triggers.swift +++ b/Sources/SQLiteData/CloudKit/Internal/Triggers.swift @@ -1,6 +1,8 @@ #if canImport(CloudKit) import CloudKit import Foundation + import StructuredQueries + import StructuredQueriesSQLite @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) extension PrimaryKeyedTable { diff --git a/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift b/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift index 606ff12c..16b440ca 100644 --- a/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift +++ b/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift @@ -1,6 +1,6 @@ #if canImport(CloudKit) package import CloudKit - import StructuredQueriesCore + package import StructuredQueries @Table("sqlitedata_icloud_unsyncedRecordIDs") package struct UnsyncedRecordID: Equatable { diff --git a/Sources/SQLiteData/CloudKit/Internal/UserDatabase.swift b/Sources/SQLiteData/CloudKit/Internal/UserDatabase.swift index b0fb5edc..98d601fc 100644 --- a/Sources/SQLiteData/CloudKit/Internal/UserDatabase.swift +++ b/Sources/SQLiteData/CloudKit/Internal/UserDatabase.swift @@ -1,5 +1,6 @@ #if canImport(CloudKit) import Dependencies + package import GRDB package struct UserDatabase { package let database: any DatabaseWriter diff --git a/Sources/SQLiteData/CloudKit/PrimaryKeyMigration.swift b/Sources/SQLiteData/CloudKit/PrimaryKeyMigration.swift index 02297018..098a3ea1 100644 --- a/Sources/SQLiteData/CloudKit/PrimaryKeyMigration.swift +++ b/Sources/SQLiteData/CloudKit/PrimaryKeyMigration.swift @@ -1,6 +1,9 @@ #if canImport(CloudKit) && canImport(CryptoKit) import CryptoKit public import Foundation + public import class GRDB.Database + public import StructuredQueriesCore + public import StructuredQueriesSQLite @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) extension SyncEngine { diff --git a/Sources/SQLiteData/CloudKit/SyncEngine.swift b/Sources/SQLiteData/CloudKit/SyncEngine.swift index 34dffb79..b5112ab5 100644 --- a/Sources/SQLiteData/CloudKit/SyncEngine.swift +++ b/Sources/SQLiteData/CloudKit/SyncEngine.swift @@ -1,11 +1,14 @@ #if canImport(CloudKit) public import CloudKit - import ConcurrencyExtras + package import ConcurrencyExtras import Dependencies + public import GRDB + public import IssueReporting import OrderedCollections public import OSLog import Observation - import StructuredQueriesCore + public import StructuredQueries + public import StructuredQueriesSQLite import SwiftData import TabularData diff --git a/Sources/SQLiteData/CloudKit/SyncEngineDelegate.swift b/Sources/SQLiteData/CloudKit/SyncEngineDelegate.swift index 764dbbbb..7125ff68 100644 --- a/Sources/SQLiteData/CloudKit/SyncEngineDelegate.swift +++ b/Sources/SQLiteData/CloudKit/SyncEngineDelegate.swift @@ -1,6 +1,7 @@ #if canImport(CloudKit) public import CloudKit import CustomDump + import IssueReporting /// An interface for observing ``SyncEngine`` events and customizing ``SyncEngine`` behavior. @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Sources/SQLiteData/CloudKit/SyncMetadata.swift b/Sources/SQLiteData/CloudKit/SyncMetadata.swift index b5795234..262b5b75 100644 --- a/Sources/SQLiteData/CloudKit/SyncMetadata.swift +++ b/Sources/SQLiteData/CloudKit/SyncMetadata.swift @@ -1,5 +1,7 @@ #if canImport(CloudKit) public import CloudKit + import StructuredQueries + public import StructuredQueriesCore /// A table that tracks metadata related to synchronized data. /// diff --git a/Sources/SQLiteData/Fetch.swift b/Sources/SQLiteData/Fetch.swift index b8f50027..ea645873 100644 --- a/Sources/SQLiteData/Fetch.swift +++ b/Sources/SQLiteData/Fetch.swift @@ -1,3 +1,6 @@ +public import GRDB +public import Sharing +import StructuredQueriesCore public import Sharing #if canImport(Combine) diff --git a/Sources/SQLiteData/FetchAll.swift b/Sources/SQLiteData/FetchAll.swift index 468dd76e..ec118cdf 100644 --- a/Sources/SQLiteData/FetchAll.swift +++ b/Sources/SQLiteData/FetchAll.swift @@ -1,3 +1,6 @@ +public import GRDB +public import Sharing +public import StructuredQueriesCore public import Sharing #if canImport(Combine) diff --git a/Sources/SQLiteData/FetchKeyRequest.swift b/Sources/SQLiteData/FetchKeyRequest.swift index 428dc0a8..9ac3f27f 100644 --- a/Sources/SQLiteData/FetchKeyRequest.swift +++ b/Sources/SQLiteData/FetchKeyRequest.swift @@ -1,3 +1,5 @@ +public import GRDB + /// A type that can request a value from a database. /// /// This type can be used to describe a transaction to read data from SQLite: diff --git a/Sources/SQLiteData/FetchOne.swift b/Sources/SQLiteData/FetchOne.swift index 0dfbca03..8300b84a 100644 --- a/Sources/SQLiteData/FetchOne.swift +++ b/Sources/SQLiteData/FetchOne.swift @@ -1,4 +1,6 @@ +public import GRDB public import Sharing +public import StructuredQueriesCore #if canImport(Combine) public import Combine @@ -82,13 +84,13 @@ public struct FetchOne: Sendable { /// Initializes this property with a wrapped value. /// /// - Parameter wrappedValue: A default value to associate with this property. - public init(wrappedValue: sending Value) - where - Value: _Selection, - Value.QueryOutput == Value - { - sharedReader = SharedReader(value: wrappedValue) - } +// public init(wrappedValue: sending Value) +// where +// Value: _Selection, +// Value.QueryOutput == Value +// { +// sharedReader = SharedReader(value: wrappedValue) +// } /// Initializes this property with a query that fetches the first row from a table. /// diff --git a/Sources/SQLiteData/FetchSubscription.swift b/Sources/SQLiteData/FetchSubscription.swift index 10565f14..de794216 100644 --- a/Sources/SQLiteData/FetchSubscription.swift +++ b/Sources/SQLiteData/FetchSubscription.swift @@ -1,3 +1,4 @@ +import ConcurrencyExtras import Perception import Sharing diff --git a/Sources/SQLiteData/Internal/Exports.swift b/Sources/SQLiteData/Internal/Exports.swift index c918ec4d..1724b4c2 100644 --- a/Sources/SQLiteData/Internal/Exports.swift +++ b/Sources/SQLiteData/Internal/Exports.swift @@ -1,14 +1,14 @@ -#if !EXCLUDE_EXPORTS - @_exported import Dependencies - @_exported import StructuredQueriesSQLite - - @_exported import struct GRDB.Configuration - @_exported import class GRDB.Database - @_exported import struct GRDB.DatabaseError - @_exported import struct GRDB.DatabaseMigrator - @_exported import class GRDB.DatabasePool - @_exported import class GRDB.DatabaseQueue - @_exported import protocol GRDB.DatabaseReader - @_exported import protocol GRDB.DatabaseWriter - @_exported import protocol GRDB.ValueObservationScheduler -#endif +//#if !EXCLUDE_EXPORTS +// @_exported import Dependencies +// @_exported import StructuredQueriesSQLite +// +// @_exported import struct GRDB.Configuration +// @_exported import class GRDB.Database +// @_exported import struct GRDB.DatabaseError +// @_exported import struct GRDB.DatabaseMigrator +// @_exported import class GRDB.DatabasePool +// @_exported import class GRDB.DatabaseQueue +// @_exported import protocol GRDB.DatabaseReader +// @_exported import protocol GRDB.DatabaseWriter +// @_exported import protocol GRDB.ValueObservationScheduler +//#endif diff --git a/Sources/SQLiteData/Internal/FetchKey+SwiftUI.swift b/Sources/SQLiteData/Internal/FetchKey+SwiftUI.swift index 238f2456..d7cb2b3c 100644 --- a/Sources/SQLiteData/Internal/FetchKey+SwiftUI.swift +++ b/Sources/SQLiteData/Internal/FetchKey+SwiftUI.swift @@ -1,4 +1,5 @@ #if canImport(SwiftUI) + package import GRDB import Sharing package import SwiftUI diff --git a/Sources/SQLiteData/Internal/ISO8601.swift b/Sources/SQLiteData/Internal/ISO8601.swift index ea81c225..95e2757c 100644 --- a/Sources/SQLiteData/Internal/ISO8601.swift +++ b/Sources/SQLiteData/Internal/ISO8601.swift @@ -1,4 +1,5 @@ public import Foundation +import StructuredQueriesCore extension Date { @usableFromInline diff --git a/Sources/SQLiteData/Internal/StatementKey.swift b/Sources/SQLiteData/Internal/StatementKey.swift index ba65b826..b9172ac3 100644 --- a/Sources/SQLiteData/Internal/StatementKey.swift +++ b/Sources/SQLiteData/Internal/StatementKey.swift @@ -1,3 +1,5 @@ +import StructuredQueriesCore + protocol StatementKeyRequest: FetchKeyRequest { associatedtype QueryValue var statement: SQLQueryExpression { get } diff --git a/Sources/SQLiteData/StructuredQueries+GRDB/CustomFunctions.swift b/Sources/SQLiteData/StructuredQueries+GRDB/CustomFunctions.swift index b9defb55..12ccb4e5 100644 --- a/Sources/SQLiteData/StructuredQueries+GRDB/CustomFunctions.swift +++ b/Sources/SQLiteData/StructuredQueries+GRDB/CustomFunctions.swift @@ -1,5 +1,7 @@ import Foundation +public import class GRDB.Database import GRDBSQLite +public import StructuredQueriesSQLiteCore extension Database { /// Adds a user-defined scalar `@DatabaseFunction` to a connection. diff --git a/Sources/SQLiteData/StructuredQueries+GRDB/DefaultDatabase.swift b/Sources/SQLiteData/StructuredQueries+GRDB/DefaultDatabase.swift index 31a0cf13..9221e895 100644 --- a/Sources/SQLiteData/StructuredQueries+GRDB/DefaultDatabase.swift +++ b/Sources/SQLiteData/StructuredQueries+GRDB/DefaultDatabase.swift @@ -1,4 +1,5 @@ -import Dependencies +public import Dependencies +public import GRDB import Foundation /// Prepares a context-sensitive database writer. diff --git a/Sources/SQLiteData/StructuredQueries+GRDB/QueryCursor.swift b/Sources/SQLiteData/StructuredQueries+GRDB/QueryCursor.swift index 735ab8c3..587365dc 100644 --- a/Sources/SQLiteData/StructuredQueries+GRDB/QueryCursor.swift +++ b/Sources/SQLiteData/StructuredQueries+GRDB/QueryCursor.swift @@ -1,7 +1,7 @@ public import Foundation -import GRDB +public import GRDB import GRDBSQLite -import StructuredQueriesCore +public import StructuredQueriesCore /// A cursor of a structured query. /// diff --git a/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteFunctionDecoder.swift b/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteFunctionDecoder.swift index ffc6133b..fed7aa11 100644 --- a/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteFunctionDecoder.swift +++ b/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteFunctionDecoder.swift @@ -1,6 +1,6 @@ public import Foundation public import GRDBSQLite -import StructuredQueriesCore +public import StructuredQueriesCore @usableFromInline struct SQLiteFunctionDecoder: QueryDecoder { diff --git a/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteQueryDecoder.swift b/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteQueryDecoder.swift index da3419df..8e926e0f 100644 --- a/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteQueryDecoder.swift +++ b/Sources/SQLiteData/StructuredQueries+GRDB/SQLiteQueryDecoder.swift @@ -1,6 +1,6 @@ public import Foundation public import GRDBSQLite -import StructuredQueriesCore +public import StructuredQueriesCore @usableFromInline struct SQLiteQueryDecoder: QueryDecoder { diff --git a/Sources/SQLiteData/StructuredQueries+GRDB/Seed.swift b/Sources/SQLiteData/StructuredQueries+GRDB/Seed.swift index f124b70e..1ba94c3a 100644 --- a/Sources/SQLiteData/StructuredQueries+GRDB/Seed.swift +++ b/Sources/SQLiteData/StructuredQueries+GRDB/Seed.swift @@ -1,5 +1,6 @@ import Dependencies -import StructuredQueriesCore +public import GRDB +public import StructuredQueriesCore extension Database { /// Seeds a database with the given values. diff --git a/Sources/SQLiteData/StructuredQueries+GRDB/Statement+GRDB.swift b/Sources/SQLiteData/StructuredQueries+GRDB/Statement+GRDB.swift index c2c990c1..862a41e3 100644 --- a/Sources/SQLiteData/StructuredQueries+GRDB/Statement+GRDB.swift +++ b/Sources/SQLiteData/StructuredQueries+GRDB/Statement+GRDB.swift @@ -1,4 +1,5 @@ -import StructuredQueriesCore +public import GRDB +public import StructuredQueriesCore extension StructuredQueriesCore.Statement { /// Executes a structured query on the given database connection. diff --git a/Sources/SQLiteData/StructuredQueries+GRDB/Table+GRDB.swift b/Sources/SQLiteData/StructuredQueries+GRDB/Table+GRDB.swift index 8e55d707..872a08a5 100644 --- a/Sources/SQLiteData/StructuredQueries+GRDB/Table+GRDB.swift +++ b/Sources/SQLiteData/StructuredQueries+GRDB/Table+GRDB.swift @@ -1,4 +1,5 @@ -import StructuredQueriesCore +public import GRDB +public import StructuredQueriesCore extension StructuredQueriesCore.Table { /// Returns an array of all values fetched from the database. diff --git a/Sources/SQLiteDataTestSupport/AssertQuery.swift b/Sources/SQLiteDataTestSupport/AssertQuery.swift index ee6ed3ca..7bd68b6f 100644 --- a/Sources/SQLiteDataTestSupport/AssertQuery.swift +++ b/Sources/SQLiteDataTestSupport/AssertQuery.swift @@ -1,9 +1,10 @@ import CustomDump import Dependencies import Foundation +public import GRDB import InlineSnapshotTesting public import SQLiteData -import StructuredQueriesCore +public import StructuredQueriesCore import StructuredQueriesTestSupport /// An end-to-end snapshot testing helper for database content. diff --git a/Tests/SQLiteDataTests/AssertQueryTests.swift b/Tests/SQLiteDataTests/AssertQueryTests.swift index 39fcbd73..93d6e1f4 100644 --- a/Tests/SQLiteDataTests/AssertQueryTests.swift +++ b/Tests/SQLiteDataTests/AssertQueryTests.swift @@ -1,7 +1,9 @@ import DependenciesTestSupport import Foundation +import GRDB import SQLiteData import SQLiteDataTestSupport +import StructuredQueries import SnapshotTesting import Testing diff --git a/Tests/SQLiteDataTests/CloudKitTests/AccountLifecycleTests.swift b/Tests/SQLiteDataTests/CloudKitTests/AccountLifecycleTests.swift index dd8f0ef9..a7fa45dc 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/AccountLifecycleTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/AccountLifecycleTests.swift @@ -3,12 +3,14 @@ import CloudKit import CustomDump import Foundation + import GRDB import InlineSnapshotTesting import SQLiteData import SnapshotTestingCustomDump import Testing import TestLocals import SQLiteDataTestSupport + import StructuredQueries extension BaseCloudKitTests { @MainActor diff --git a/Tests/SQLiteDataTests/CloudKitTests/AssetsTests.swift b/Tests/SQLiteDataTests/CloudKitTests/AssetsTests.swift index 467e85f3..803bc21b 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/AssetsTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/AssetsTests.swift @@ -2,11 +2,13 @@ import CloudKit import ConcurrencyExtras import CustomDump + import Dependencies import InlineSnapshotTesting import OrderedCollections import SQLiteData import SQLiteDataTestSupport import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/AtomicTests.swift b/Tests/SQLiteDataTests/CloudKitTests/AtomicTests.swift index 4b17da1d..563aa061 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/AtomicTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/AtomicTests.swift @@ -2,11 +2,13 @@ import CloudKit import ConcurrencyExtras import CustomDump + import Dependencies import InlineSnapshotTesting import OrderedCollections import SQLiteData import SQLiteDataTestSupport import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/AttachedMetadatabaseTests.swift b/Tests/SQLiteDataTests/CloudKitTests/AttachedMetadatabaseTests.swift index dbec8bb2..408f9d1f 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/AttachedMetadatabaseTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/AttachedMetadatabaseTests.swift @@ -8,6 +8,7 @@ import SQLiteData import SQLiteDataTestSupport import SnapshotTestingCustomDump + import StructuredQueries import Testing import TestLocals diff --git a/Tests/SQLiteDataTests/CloudKitTests/CloudKitTests.swift b/Tests/SQLiteDataTests/CloudKitTests/CloudKitTests.swift index fa989369..d15a457d 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/CloudKitTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/CloudKitTests.swift @@ -2,11 +2,14 @@ import CloudKit import ConcurrencyExtras import CustomDump + import Dependencies + import GRDB import InlineSnapshotTesting import OrderedCollections import SQLiteData import SQLiteDataTestSupport import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/FetchRecordZoneChangesTests.swift b/Tests/SQLiteDataTests/CloudKitTests/FetchRecordZoneChangesTests.swift index 60242f49..bce5abd9 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/FetchRecordZoneChangesTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/FetchRecordZoneChangesTests.swift @@ -1,12 +1,15 @@ #if canImport(CloudKit) import CloudKit import CustomDump + import Dependencies import Foundation + import GRDB import InlineSnapshotTesting import OrderedCollections import SQLiteData import SQLiteDataTestSupport import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/FetchedDatabaseChangesTests.swift b/Tests/SQLiteDataTests/CloudKitTests/FetchedDatabaseChangesTests.swift index 3b52db96..f42194eb 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/FetchedDatabaseChangesTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/FetchedDatabaseChangesTests.swift @@ -6,6 +6,7 @@ import OrderedCollections import SQLiteData import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/ForeignKeyConstraintTests.swift b/Tests/SQLiteDataTests/CloudKitTests/ForeignKeyConstraintTests.swift index 071688d1..0fe10f15 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/ForeignKeyConstraintTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/ForeignKeyConstraintTests.swift @@ -1,11 +1,13 @@ #if canImport(CloudKit) import CloudKit import CustomDump + import Dependencies import Foundation import SQLiteDataTestSupport import InlineSnapshotTesting import SQLiteData import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/MergeConflictTests.swift b/Tests/SQLiteDataTests/CloudKitTests/MergeConflictTests.swift index b9840148..bcee3643 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/MergeConflictTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/MergeConflictTests.swift @@ -2,12 +2,14 @@ import CloudKit import ConcurrencyExtrasTestSupport import CustomDump + import Dependencies import Foundation import InlineSnapshotTesting import OrderedCollections import SQLiteData import SQLiteDataTestSupport import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/MetadataTests.swift b/Tests/SQLiteDataTests/CloudKitTests/MetadataTests.swift index bd81326d..45aa043b 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/MetadataTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/MetadataTests.swift @@ -2,12 +2,14 @@ import CloudKit import ConcurrencyExtrasTestSupport import CustomDump + import Dependencies import SQLiteDataTestSupport import Foundation import InlineSnapshotTesting import OrderedCollections import SQLiteData import SnapshotTestingCustomDump + import StructuredQueries import Testing import TestLocals diff --git a/Tests/SQLiteDataTests/CloudKitTests/NewTableSyncTests.swift b/Tests/SQLiteDataTests/CloudKitTests/NewTableSyncTests.swift index 568184a5..5743e276 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/NewTableSyncTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/NewTableSyncTests.swift @@ -7,6 +7,7 @@ import InlineSnapshotTesting import SQLiteData import SnapshotTestingCustomDump + import StructuredQueries import Testing import TestLocals diff --git a/Tests/SQLiteDataTests/CloudKitTests/NextRecordZoneChangeBatchTests.swift b/Tests/SQLiteDataTests/CloudKitTests/NextRecordZoneChangeBatchTests.swift index 8a3c2066..593a5cf3 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/NextRecordZoneChangeBatchTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/NextRecordZoneChangeBatchTests.swift @@ -2,11 +2,13 @@ import CloudKit import ConcurrencyExtrasTestSupport import CustomDump + import Dependencies import Foundation import InlineSnapshotTesting import SQLiteData import SQLiteDataTestSupport import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/PreviewTests.swift b/Tests/SQLiteDataTests/CloudKitTests/PreviewTests.swift index 0a8c5df1..275a5bf1 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/PreviewTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/PreviewTests.swift @@ -1,8 +1,10 @@ #if DEBUG && canImport(DeveloperToolsSupport) && canImport(CloudKit) + import Dependencies import DependenciesTestSupport import InlineSnapshotTesting import SnapshotTestingCustomDump import SQLiteData + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/RecordTypeTests.swift b/Tests/SQLiteDataTests/CloudKitTests/RecordTypeTests.swift index 2891b3e2..3900b881 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/RecordTypeTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/RecordTypeTests.swift @@ -2,9 +2,12 @@ import CloudKit import ConcurrencyExtras import CustomDump + import Dependencies + import GRDB import InlineSnapshotTesting import SQLiteData import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/ReferenceViolationTests.swift b/Tests/SQLiteDataTests/CloudKitTests/ReferenceViolationTests.swift index eaabf060..8489415a 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/ReferenceViolationTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/ReferenceViolationTests.swift @@ -2,10 +2,12 @@ import CloudKit import ConcurrencyExtras import CustomDump + import Dependencies import InlineSnapshotTesting import SQLiteData import SQLiteDataTestSupport import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/SchemaChangeTests.swift b/Tests/SQLiteDataTests/CloudKitTests/SchemaChangeTests.swift index 98601572..88e0200e 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/SchemaChangeTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/SchemaChangeTests.swift @@ -1,11 +1,13 @@ #if canImport(CloudKit) import CloudKit import CustomDump + import Dependencies import Foundation import InlineSnapshotTesting import SQLiteData import SQLiteDataTestSupport import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/ScopedTableSyncTests.swift b/Tests/SQLiteDataTests/CloudKitTests/ScopedTableSyncTests.swift index 17d68bb0..a541c1fc 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/ScopedTableSyncTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/ScopedTableSyncTests.swift @@ -6,6 +6,7 @@ import SQLiteData import SQLiteDataTestSupport import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift b/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift index c91a178b..69adc650 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/SharingPermissionsTests.swift @@ -1,11 +1,14 @@ #if canImport(CloudKit) import CloudKit import CustomDump + import Dependencies import Foundation + import GRDB import InlineSnapshotTesting import OrderedCollections import SQLiteData import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/SharingTests.swift b/Tests/SQLiteDataTests/CloudKitTests/SharingTests.swift index 9d6705f4..7ba53d86 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/SharingTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/SharingTests.swift @@ -1,12 +1,14 @@ #if canImport(CloudKit) import CloudKit import CustomDump + import Dependencies import SQLiteDataTestSupport import Foundation import InlineSnapshotTesting import OrderedCollections import SQLiteData import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/SyncEngineDelegateTests.swift b/Tests/SQLiteDataTests/CloudKitTests/SyncEngineDelegateTests.swift index 395be01e..ba211473 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/SyncEngineDelegateTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/SyncEngineDelegateTests.swift @@ -1,4 +1,5 @@ #if canImport(CloudKit) + import ConcurrencyExtras import CloudKit import ConcurrencyExtrasTestSupport import CustomDump @@ -8,6 +9,7 @@ import SQLiteData import SQLiteDataTestSupport import SnapshotTestingCustomDump + import StructuredQueries import Testing import TestLocals diff --git a/Tests/SQLiteDataTests/CloudKitTests/SyncEngineLifecycleTests.swift b/Tests/SQLiteDataTests/CloudKitTests/SyncEngineLifecycleTests.swift index 229d6b02..bb28eb81 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/SyncEngineLifecycleTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/SyncEngineLifecycleTests.swift @@ -1,6 +1,7 @@ #if canImport(CloudKit) import CloudKit import ConcurrencyExtrasTestSupport + import Dependencies import DependenciesTestSupport import InlineSnapshotTesting import SQLiteDataTestSupport @@ -8,6 +9,7 @@ import SQLiteData import SnapshotTesting import SnapshotTestingCustomDump + import StructuredQueries import Testing import TestLocals import os diff --git a/Tests/SQLiteDataTests/CloudKitTests/SyncEngineTests.swift b/Tests/SQLiteDataTests/CloudKitTests/SyncEngineTests.swift index 1a695fcb..65492b98 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/SyncEngineTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/SyncEngineTests.swift @@ -1,11 +1,15 @@ #if canImport(CloudKit) import CloudKit import CustomDump + import Dependencies import DependenciesTestSupport import Foundation + import GRDB import InlineSnapshotTesting import SQLiteData import SnapshotTestingCustomDump + import StructuredQueries + import StructuredQueriesSQLite import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/SyncEngineValidationTests.swift b/Tests/SQLiteDataTests/CloudKitTests/SyncEngineValidationTests.swift index be2e3945..fe115191 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/SyncEngineValidationTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/SyncEngineValidationTests.swift @@ -2,9 +2,11 @@ import CloudKit import CustomDump import Foundation + import GRDB import InlineSnapshotTesting import SQLiteData import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/TriggerTests.swift b/Tests/SQLiteDataTests/CloudKitTests/TriggerTests.swift index e8d12d9f..18b3fef5 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/TriggerTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/TriggerTests.swift @@ -4,6 +4,7 @@ import InlineSnapshotTesting import SQLiteData import SnapshotTestingCustomDump + import StructuredQueries import Testing extension BaseCloudKitTests { diff --git a/Tests/SQLiteDataTests/CloudKitTests/UnattachedSyncEngineTests.swift b/Tests/SQLiteDataTests/CloudKitTests/UnattachedSyncEngineTests.swift index 1133fa7a..8f79284b 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/UnattachedSyncEngineTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/UnattachedSyncEngineTests.swift @@ -1,5 +1,6 @@ import CloudKit import CustomDump +import GRDB import InlineSnapshotTesting import SQLiteData import SnapshotTestingCustomDump diff --git a/Tests/SQLiteDataTests/CloudKitTests/UserlandTests.swift b/Tests/SQLiteDataTests/CloudKitTests/UserlandTests.swift index 4f755037..85f38285 100644 --- a/Tests/SQLiteDataTests/CloudKitTests/UserlandTests.swift +++ b/Tests/SQLiteDataTests/CloudKitTests/UserlandTests.swift @@ -1,6 +1,9 @@ #if canImport(CloudKit) + import Dependencies import Foundation + import GRDB import SQLiteData + import StructuredQueries import Testing @Suite struct UserlandTests { diff --git a/Tests/SQLiteDataTests/CompileTimeTests.swift b/Tests/SQLiteDataTests/CompileTimeTests.swift index 0a080bb9..a00451af 100644 --- a/Tests/SQLiteDataTests/CompileTimeTests.swift +++ b/Tests/SQLiteDataTests/CompileTimeTests.swift @@ -1,4 +1,6 @@ import SQLiteData +import StructuredQueries +import StructuredQueriesSQLite #if canImport(CloudKit) import CloudKit diff --git a/Tests/SQLiteDataTests/CustomFunctionTests.swift b/Tests/SQLiteDataTests/CustomFunctionTests.swift index 3c9436e8..d8f19ca1 100644 --- a/Tests/SQLiteDataTests/CustomFunctionTests.swift +++ b/Tests/SQLiteDataTests/CustomFunctionTests.swift @@ -1,5 +1,8 @@ import Foundation +import GRDB import SQLiteData +import StructuredQueries +import StructuredQueriesSQLite import Testing @Suite struct CustomFunctionsTests { diff --git a/Tests/SQLiteDataTests/DatabaseFunctionTests.swift b/Tests/SQLiteDataTests/DatabaseFunctionTests.swift index f4555e0b..21991cd1 100644 --- a/Tests/SQLiteDataTests/DatabaseFunctionTests.swift +++ b/Tests/SQLiteDataTests/DatabaseFunctionTests.swift @@ -1,7 +1,9 @@ import DependenciesTestSupport import Foundation +import GRDB import SQLiteData import SQLiteDataTestSupport +import StructuredQueriesSQLite import Testing struct DatabaseFunctionTests { diff --git a/Tests/SQLiteDataTests/DateTests.swift b/Tests/SQLiteDataTests/DateTests.swift index 5415a916..dbad3c43 100644 --- a/Tests/SQLiteDataTests/DateTests.swift +++ b/Tests/SQLiteDataTests/DateTests.swift @@ -1,7 +1,10 @@ +import Dependencies import DependenciesTestSupport import Foundation +import GRDB import SQLiteData import SQLiteDataTestSupport +import StructuredQueries import Testing @Suite(.dependency(\.defaultDatabase, try .database())) diff --git a/Tests/SQLiteDataTests/FetchAllTests.swift b/Tests/SQLiteDataTests/FetchAllTests.swift index 83cdbc60..24c1f732 100644 --- a/Tests/SQLiteDataTests/FetchAllTests.swift +++ b/Tests/SQLiteDataTests/FetchAllTests.swift @@ -1,6 +1,9 @@ +import Dependencies import DependenciesTestSupport import Foundation +import GRDB import SQLiteData +import StructuredQueries import Testing #if canImport(SwiftUI) diff --git a/Tests/SQLiteDataTests/FetchOneTests.swift b/Tests/SQLiteDataTests/FetchOneTests.swift index 1bfffe48..16841838 100644 --- a/Tests/SQLiteDataTests/FetchOneTests.swift +++ b/Tests/SQLiteDataTests/FetchOneTests.swift @@ -1,6 +1,9 @@ +import Dependencies import DependenciesTestSupport import Foundation +import GRDB import SQLiteData +import StructuredQueries import Testing #if canImport(SwiftUI) diff --git a/Tests/SQLiteDataTests/FetchSubscriptionTests.swift b/Tests/SQLiteDataTests/FetchSubscriptionTests.swift index e9599535..a25e4d52 100644 --- a/Tests/SQLiteDataTests/FetchSubscriptionTests.swift +++ b/Tests/SQLiteDataTests/FetchSubscriptionTests.swift @@ -1,6 +1,9 @@ +import Dependencies import DependenciesTestSupport import Foundation +import GRDB import SQLiteData +import StructuredQueries import Testing @Suite(.dependency(\.defaultDatabase, try .database())) struct FetchSubscriptionTests { diff --git a/Tests/SQLiteDataTests/FetchTests.swift b/Tests/SQLiteDataTests/FetchTests.swift index 7461e035..c6aac619 100644 --- a/Tests/SQLiteDataTests/FetchTests.swift +++ b/Tests/SQLiteDataTests/FetchTests.swift @@ -1,6 +1,9 @@ +import Dependencies import DependenciesTestSupport import Foundation +import GRDB import SQLiteData +import StructuredQueries import Testing @Suite(.dependency(\.defaultDatabase, try .database())) diff --git a/Tests/SQLiteDataTests/IntegrationTests.swift b/Tests/SQLiteDataTests/IntegrationTests.swift index 8323c923..edc2449d 100644 --- a/Tests/SQLiteDataTests/IntegrationTests.swift +++ b/Tests/SQLiteDataTests/IntegrationTests.swift @@ -1,6 +1,9 @@ +import Dependencies import DependenciesTestSupport import Foundation +import GRDB import SQLiteData +import StructuredQueries import Testing @Suite(.dependency(\.defaultDatabase, try .syncUps())) diff --git a/Tests/SQLiteDataTests/Internal/BaseCloudKitTests.swift b/Tests/SQLiteDataTests/Internal/BaseCloudKitTests.swift index e5ebbd31..97057c46 100644 --- a/Tests/SQLiteDataTests/Internal/BaseCloudKitTests.swift +++ b/Tests/SQLiteDataTests/Internal/BaseCloudKitTests.swift @@ -2,10 +2,13 @@ import Clocks import CloudKit import ConcurrencyExtrasTestSupport + import Dependencies import DependenciesTestSupport + import GRDB import OrderedCollections public import SQLiteData import SnapshotTesting + import StructuredQueries import Testing import TestLocals import os diff --git a/Tests/SQLiteDataTests/Internal/CloudKit+CustomDump.swift b/Tests/SQLiteDataTests/Internal/CloudKit+CustomDump.swift index 9d2cbf6c..81f5cbc8 100644 --- a/Tests/SQLiteDataTests/Internal/CloudKit+CustomDump.swift +++ b/Tests/SQLiteDataTests/Internal/CloudKit+CustomDump.swift @@ -1,6 +1,7 @@ #if canImport(CloudKit) public import CustomDump public import CloudKit + import Dependencies import SQLiteData extension CKDatabase.Scope: @retroactive CustomDumpStringConvertible { diff --git a/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift b/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift index dd7d6f95..96026532 100644 --- a/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift +++ b/Tests/SQLiteDataTests/Internal/CloudKitTestHelpers.swift @@ -3,6 +3,7 @@ import ConcurrencyExtras import CustomDump package import OrderedCollections package import SQLiteData +import StructuredQueries import Testing @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Tests/SQLiteDataTests/Internal/Schema.swift b/Tests/SQLiteDataTests/Internal/Schema.swift index f6aff6cf..7d0767f7 100644 --- a/Tests/SQLiteDataTests/Internal/Schema.swift +++ b/Tests/SQLiteDataTests/Internal/Schema.swift @@ -1,4 +1,6 @@ import Foundation +import GRDB +import StructuredQueries import SQLiteData // NB: The IDs in this schema are integers for ease of testing. You should _not_ use integer IDs diff --git a/Tests/SQLiteDataTests/Internal/UserDatabaseHelpers.swift b/Tests/SQLiteDataTests/Internal/UserDatabaseHelpers.swift index da9b09cd..710c6b07 100644 --- a/Tests/SQLiteDataTests/Internal/UserDatabaseHelpers.swift +++ b/Tests/SQLiteDataTests/Internal/UserDatabaseHelpers.swift @@ -1,3 +1,4 @@ +import GRDB import SQLiteData extension UserDatabase { diff --git a/Tests/SQLiteDataTests/MigrationTests.swift b/Tests/SQLiteDataTests/MigrationTests.swift index 42e5f24b..bd552f6c 100644 --- a/Tests/SQLiteDataTests/MigrationTests.swift +++ b/Tests/SQLiteDataTests/MigrationTests.swift @@ -1,5 +1,7 @@ import Foundation +import GRDB import SQLiteData +import StructuredQueries import Testing @Suite struct MigrationTests { diff --git a/Tests/SQLiteDataTests/PrimaryKeyMigrationTests.swift b/Tests/SQLiteDataTests/PrimaryKeyMigrationTests.swift index 6435d68a..0c97b57c 100644 --- a/Tests/SQLiteDataTests/PrimaryKeyMigrationTests.swift +++ b/Tests/SQLiteDataTests/PrimaryKeyMigrationTests.swift @@ -1,11 +1,15 @@ +import Dependencies import DependenciesTestSupport import Foundation +import GRDB import InlineSnapshotTesting import SQLite3 import SQLiteData import SQLiteDataTestSupport import SnapshotTesting import SnapshotTestingCustomDump +import StructuredQueries +import StructuredQueriesSQLite import Testing @MainActor diff --git a/Tests/SQLiteDataTests/QueryCursorTests.swift b/Tests/SQLiteDataTests/QueryCursorTests.swift index 1e608a34..a8bfb52c 100644 --- a/Tests/SQLiteDataTests/QueryCursorTests.swift +++ b/Tests/SQLiteDataTests/QueryCursorTests.swift @@ -1,4 +1,6 @@ +import GRDB import SQLiteData +import StructuredQueries import Testing @Suite struct QueryCursorTests { From ccd04902b3a793fe99d6d5dc573eabe7254fe3d9 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 28 May 2026 20:51:18 -0500 Subject: [PATCH 07/15] wip --- Sources/SQLiteData/Internal/Exports.swift | 28 +++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Sources/SQLiteData/Internal/Exports.swift b/Sources/SQLiteData/Internal/Exports.swift index 1724b4c2..c918ec4d 100644 --- a/Sources/SQLiteData/Internal/Exports.swift +++ b/Sources/SQLiteData/Internal/Exports.swift @@ -1,14 +1,14 @@ -//#if !EXCLUDE_EXPORTS -// @_exported import Dependencies -// @_exported import StructuredQueriesSQLite -// -// @_exported import struct GRDB.Configuration -// @_exported import class GRDB.Database -// @_exported import struct GRDB.DatabaseError -// @_exported import struct GRDB.DatabaseMigrator -// @_exported import class GRDB.DatabasePool -// @_exported import class GRDB.DatabaseQueue -// @_exported import protocol GRDB.DatabaseReader -// @_exported import protocol GRDB.DatabaseWriter -// @_exported import protocol GRDB.ValueObservationScheduler -//#endif +#if !EXCLUDE_EXPORTS + @_exported import Dependencies + @_exported import StructuredQueriesSQLite + + @_exported import struct GRDB.Configuration + @_exported import class GRDB.Database + @_exported import struct GRDB.DatabaseError + @_exported import struct GRDB.DatabaseMigrator + @_exported import class GRDB.DatabasePool + @_exported import class GRDB.DatabaseQueue + @_exported import protocol GRDB.DatabaseReader + @_exported import protocol GRDB.DatabaseWriter + @_exported import protocol GRDB.ValueObservationScheduler +#endif From 0df7a0ed5865b108e1b6b2cba2b73a38eebb6a38 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 28 May 2026 20:52:20 -0500 Subject: [PATCH 08/15] wip --- Sources/SQLiteData/CloudKit/CloudKitSharing.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift index 846b0e28..0f73dea7 100644 --- a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift +++ b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift @@ -2,11 +2,11 @@ public import CloudKit import Dependencies import GRDB - import SwiftUI + public import SwiftUI public import StructuredQueries #if canImport(UIKit) - import UIKit + public import UIKit #endif /// A shared record that can be used to present a ``CloudSharingView``. From 6b53835a448140c6a297d53f1a5526edf0d77652 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Thu, 28 May 2026 21:03:05 -0500 Subject: [PATCH 09/15] wip --- Sources/SQLiteData/CloudKit/CloudKitSharing.swift | 14 +++++++------- .../Internal/DefaultNotificationCenter.swift | 2 +- .../SQLiteData/CloudKit/Internal/ForeignKey.swift | 2 +- .../Internal/PendingRecordZoneChange.swift | 2 +- Sources/SQLiteData/CloudKit/Internal/Pragmas.swift | 2 +- .../SQLiteData/CloudKit/Internal/RecordType.swift | 2 +- .../CloudKit/Internal/SQLiteSchema.swift | 2 +- .../CloudKit/Internal/StateSerialization.swift | 2 +- .../SQLiteData/CloudKit/Internal/TableInfo.swift | 2 +- .../CloudKit/Internal/UnsyncedRecordID.swift | 2 +- Sources/SQLiteData/CloudKit/SyncEngine.swift | 2 +- Sources/SQLiteDataTestSupport/AssertQuery.swift | 2 +- 12 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift index 0f73dea7..15ab3f26 100644 --- a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift +++ b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift @@ -2,7 +2,7 @@ public import CloudKit import Dependencies import GRDB - public import SwiftUI + import SwiftUI public import StructuredQueries #if canImport(UIKit) @@ -264,7 +264,7 @@ public struct CloudSharingView: View { let sharedRecord: SharedRecord let availablePermissions: UICloudSharingController.PermissionOptions - let didFinish: (Result) -> Void + let didFinish: (Result) -> Void let didStopSharing: () -> Void let syncEngine: SyncEngine @Dependency(\.context) var context @@ -272,7 +272,7 @@ public init( sharedRecord: SharedRecord, availablePermissions: UICloudSharingController.PermissionOptions = [], - didFinish: @escaping (Result) -> Void = { _ in }, + didFinish: @escaping (Result) -> Void = { _ in }, didStopSharing: @escaping () -> Void = {}, syncEngine: SyncEngine = { @Dependency(\.defaultSyncEngine) var defaultSyncEngine @@ -383,13 +383,13 @@ private struct CloudSharingViewRepresentable: UIViewControllerRepresentable { let sharedRecord: SharedRecord let availablePermissions: UICloudSharingController.PermissionOptions - let didFinish: (Result) -> Void + let didFinish: (Result) -> Void let didStopSharing: () -> Void let syncEngine: SyncEngine public init( sharedRecord: SharedRecord, availablePermissions: UICloudSharingController.PermissionOptions = [], - didFinish: @escaping (Result) -> Void = { _ in }, + didFinish: @escaping (Result) -> Void = { _ in }, didStopSharing: @escaping () -> Void = {}, syncEngine: SyncEngine = { @Dependency(\.defaultSyncEngine) var defaultSyncEngine @@ -432,12 +432,12 @@ @available(iOS 17, macOS 14, tvOS 17, *) public final class _CloudSharingDelegate: NSObject, UICloudSharingControllerDelegate { let share: CKShare - let didFinish: (Result) -> Void + let didFinish: (Result) -> Void let didStopSharing: () -> Void let syncEngine: SyncEngine init( share: CKShare, - didFinish: @escaping (Result) -> Void, + didFinish: @escaping (Result) -> Void, didStopSharing: @escaping () -> Void, syncEngine: SyncEngine ) { diff --git a/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift b/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift index c0b2147e..80a66a1f 100644 --- a/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift +++ b/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) && canImport(UIKit) - public import UIKit + package import UIKit private enum DefaultNotificationCenterKey: DependencyKey { static let liveValue = NotificationCenter.default diff --git a/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift b/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift index 3f5e81bb..8b45b3f6 100644 --- a/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift +++ b/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift @@ -1,6 +1,6 @@ #if canImport(CloudKit) import Foundation - public import StructuredQueries + import StructuredQueries @Table package struct ForeignKey { diff --git a/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift b/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift index f44ec370..d306cf39 100644 --- a/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift +++ b/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift @@ -1,6 +1,6 @@ #if canImport(CloudKit) package import CloudKit - public import StructuredQueries + import StructuredQueries @Table("sqlitedata_icloud_pendingRecordZoneChanges") @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift b/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift index f9df703e..178119a3 100644 --- a/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift +++ b/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - package import StructuredQueries + import StructuredQueries @Table struct PragmaDatabaseList { diff --git a/Sources/SQLiteData/CloudKit/Internal/RecordType.swift b/Sources/SQLiteData/CloudKit/Internal/RecordType.swift index 286bbb31..18caa7bd 100644 --- a/Sources/SQLiteData/CloudKit/Internal/RecordType.swift +++ b/Sources/SQLiteData/CloudKit/Internal/RecordType.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - public import StructuredQueries + import StructuredQueries @Table("sqlitedata_icloud_recordTypes") package struct RecordType: Hashable { diff --git a/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift b/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift index c8ad92ea..f79fb3cd 100644 --- a/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift +++ b/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - public import StructuredQueries + import StructuredQueries @Table("sqlite_schema") package struct SQLiteSchema { diff --git a/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift b/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift index 0698e49c..e5d949ad 100644 --- a/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift +++ b/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift @@ -1,6 +1,6 @@ #if canImport(CloudKit) package import CloudKit - public import StructuredQueries + import StructuredQueries @Table("sqlitedata_icloud_stateSerialization") @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift b/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift index 12a31d9f..ac4d79b6 100644 --- a/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift +++ b/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift @@ -1,5 +1,5 @@ #if canImport(CloudKit) - package import StructuredQueries + import StructuredQueries @Table package struct TableInfo: Codable, Hashable { diff --git a/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift b/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift index 16b440ca..9fdcd4c6 100644 --- a/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift +++ b/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift @@ -1,6 +1,6 @@ #if canImport(CloudKit) package import CloudKit - package import StructuredQueries + import StructuredQueries @Table("sqlitedata_icloud_unsyncedRecordIDs") package struct UnsyncedRecordID: Equatable { diff --git a/Sources/SQLiteData/CloudKit/SyncEngine.swift b/Sources/SQLiteData/CloudKit/SyncEngine.swift index b5112ab5..242e44f0 100644 --- a/Sources/SQLiteData/CloudKit/SyncEngine.swift +++ b/Sources/SQLiteData/CloudKit/SyncEngine.swift @@ -8,7 +8,7 @@ public import OSLog import Observation public import StructuredQueries - public import StructuredQueriesSQLite + import StructuredQueriesSQLite import SwiftData import TabularData diff --git a/Sources/SQLiteDataTestSupport/AssertQuery.swift b/Sources/SQLiteDataTestSupport/AssertQuery.swift index 7bd68b6f..fe71187b 100644 --- a/Sources/SQLiteDataTestSupport/AssertQuery.swift +++ b/Sources/SQLiteDataTestSupport/AssertQuery.swift @@ -3,7 +3,7 @@ import Dependencies import Foundation public import GRDB import InlineSnapshotTesting -public import SQLiteData +import SQLiteData public import StructuredQueriesCore import StructuredQueriesTestSupport From 28ff3b73f0555efb8ab516f667bf21fcb3d7c268 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Fri, 29 May 2026 09:35:38 -0500 Subject: [PATCH 10/15] wip --- .../CloudKit/Internal/ForeignKey.swift | 1 + .../Internal/PendingRecordZoneChange.swift | 1 + .../CloudKit/Internal/Pragmas.swift | 1 + .../CloudKit/Internal/RecordType.swift | 1 + .../CloudKit/Internal/SQLiteSchema.swift | 1 + .../Internal/StateSerialization.swift | 2 +- .../CloudKit/Internal/TableInfo.swift | 1 + .../CloudKit/Internal/UnsyncedRecordID.swift | 1 + Sources/SQLiteData/CloudKit/SyncEngine.swift | 1 + Sources/SQLiteData/Internal/Exports.swift | 28 +++++++++---------- 10 files changed, 23 insertions(+), 15 deletions(-) diff --git a/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift b/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift index 8b45b3f6..d4080165 100644 --- a/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift +++ b/Sources/SQLiteData/CloudKit/Internal/ForeignKey.swift @@ -1,6 +1,7 @@ #if canImport(CloudKit) import Foundation import StructuredQueries + public import StructuredQueriesCore @Table package struct ForeignKey { diff --git a/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift b/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift index d306cf39..50b12881 100644 --- a/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift +++ b/Sources/SQLiteData/CloudKit/Internal/PendingRecordZoneChange.swift @@ -1,6 +1,7 @@ #if canImport(CloudKit) package import CloudKit import StructuredQueries + public import StructuredQueriesCore @Table("sqlitedata_icloud_pendingRecordZoneChanges") @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift b/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift index 178119a3..07247170 100644 --- a/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift +++ b/Sources/SQLiteData/CloudKit/Internal/Pragmas.swift @@ -1,5 +1,6 @@ #if canImport(CloudKit) import StructuredQueries + public import StructuredQueriesCore @Table struct PragmaDatabaseList { diff --git a/Sources/SQLiteData/CloudKit/Internal/RecordType.swift b/Sources/SQLiteData/CloudKit/Internal/RecordType.swift index 18caa7bd..5efb96a8 100644 --- a/Sources/SQLiteData/CloudKit/Internal/RecordType.swift +++ b/Sources/SQLiteData/CloudKit/Internal/RecordType.swift @@ -1,5 +1,6 @@ #if canImport(CloudKit) import StructuredQueries + package import StructuredQueriesCore @Table("sqlitedata_icloud_recordTypes") package struct RecordType: Hashable { diff --git a/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift b/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift index f79fb3cd..7547d1fd 100644 --- a/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift +++ b/Sources/SQLiteData/CloudKit/Internal/SQLiteSchema.swift @@ -1,5 +1,6 @@ #if canImport(CloudKit) import StructuredQueries + package import StructuredQueriesCore @Table("sqlite_schema") package struct SQLiteSchema { diff --git a/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift b/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift index e5d949ad..330cd1c3 100644 --- a/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift +++ b/Sources/SQLiteData/CloudKit/Internal/StateSerialization.swift @@ -1,6 +1,6 @@ #if canImport(CloudKit) package import CloudKit - import StructuredQueries + package import StructuredQueries @Table("sqlitedata_icloud_stateSerialization") @available(iOS 17, macOS 14, tvOS 17, watchOS 10, *) diff --git a/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift b/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift index ac4d79b6..f3be6e3b 100644 --- a/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift +++ b/Sources/SQLiteData/CloudKit/Internal/TableInfo.swift @@ -1,5 +1,6 @@ #if canImport(CloudKit) import StructuredQueries + package import StructuredQueriesCore @Table package struct TableInfo: Codable, Hashable { diff --git a/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift b/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift index 9fdcd4c6..80b525c1 100644 --- a/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift +++ b/Sources/SQLiteData/CloudKit/Internal/UnsyncedRecordID.swift @@ -1,6 +1,7 @@ #if canImport(CloudKit) package import CloudKit import StructuredQueries + package import StructuredQueriesCore @Table("sqlitedata_icloud_unsyncedRecordIDs") package struct UnsyncedRecordID: Equatable { diff --git a/Sources/SQLiteData/CloudKit/SyncEngine.swift b/Sources/SQLiteData/CloudKit/SyncEngine.swift index 242e44f0..d221e17b 100644 --- a/Sources/SQLiteData/CloudKit/SyncEngine.swift +++ b/Sources/SQLiteData/CloudKit/SyncEngine.swift @@ -9,6 +9,7 @@ import Observation public import StructuredQueries import StructuredQueriesSQLite + public import StructuredQueriesSQLiteCore import SwiftData import TabularData diff --git a/Sources/SQLiteData/Internal/Exports.swift b/Sources/SQLiteData/Internal/Exports.swift index c918ec4d..1724b4c2 100644 --- a/Sources/SQLiteData/Internal/Exports.swift +++ b/Sources/SQLiteData/Internal/Exports.swift @@ -1,14 +1,14 @@ -#if !EXCLUDE_EXPORTS - @_exported import Dependencies - @_exported import StructuredQueriesSQLite - - @_exported import struct GRDB.Configuration - @_exported import class GRDB.Database - @_exported import struct GRDB.DatabaseError - @_exported import struct GRDB.DatabaseMigrator - @_exported import class GRDB.DatabasePool - @_exported import class GRDB.DatabaseQueue - @_exported import protocol GRDB.DatabaseReader - @_exported import protocol GRDB.DatabaseWriter - @_exported import protocol GRDB.ValueObservationScheduler -#endif +//#if !EXCLUDE_EXPORTS +// @_exported import Dependencies +// @_exported import StructuredQueriesSQLite +// +// @_exported import struct GRDB.Configuration +// @_exported import class GRDB.Database +// @_exported import struct GRDB.DatabaseError +// @_exported import struct GRDB.DatabaseMigrator +// @_exported import class GRDB.DatabasePool +// @_exported import class GRDB.DatabaseQueue +// @_exported import protocol GRDB.DatabaseReader +// @_exported import protocol GRDB.DatabaseWriter +// @_exported import protocol GRDB.ValueObservationScheduler +//#endif From 36bad2fb33f22c10acd612203c26e211e588053c Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Fri, 29 May 2026 11:53:09 -0500 Subject: [PATCH 11/15] wip --- Package.resolved | 2 +- Package.swift | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Package.resolved b/Package.resolved index 05ebe497..c4d3f979 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "331e95a9e67db363c63a9a11d77e2c329584c69879e043f099ad4b54aa1ff405", + "originHash" : "725d8f778c84290ef81225fe8c548ff0a0169261b1f4fb6567dc64db04374bbd", "pins" : [ { "identity" : "combine-schedulers", diff --git a/Package.swift b/Package.swift index 9ac96213..61ea5371 100644 --- a/Package.swift +++ b/Package.swift @@ -104,7 +104,6 @@ for target in package.targets { .enableUpcomingFeature("InferIsolatedConformances"), .enableUpcomingFeature("InternalImportsByDefault"), .enableUpcomingFeature("MemberImportVisibility"), - .enableUpcomingFeature("NonisolatedNonsendingByDefault"), ]) #if compiler(>=6.4) target.swiftSettings?.append(contentsOf: [ From a5e6cc91a3e8ae5ec0d51b6942d359386711291b Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Fri, 29 May 2026 11:57:13 -0500 Subject: [PATCH 12/15] wip --- Sources/SQLiteData/FetchOne.swift | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Sources/SQLiteData/FetchOne.swift b/Sources/SQLiteData/FetchOne.swift index 8300b84a..4e6b799d 100644 --- a/Sources/SQLiteData/FetchOne.swift +++ b/Sources/SQLiteData/FetchOne.swift @@ -84,13 +84,13 @@ public struct FetchOne: Sendable { /// Initializes this property with a wrapped value. /// /// - Parameter wrappedValue: A default value to associate with this property. -// public init(wrappedValue: sending Value) -// where -// Value: _Selection, -// Value.QueryOutput == Value -// { -// sharedReader = SharedReader(value: wrappedValue) -// } + public init(wrappedValue: sending Value) + where + Value: _Selection, + Value.QueryOutput == Value + { + sharedReader = SharedReader(value: wrappedValue) + } /// Initializes this property with a query that fetches the first row from a table. /// From 3ef21780caf934f7b61385d0cb45f976cee2037a Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Fri, 29 May 2026 17:39:59 -0500 Subject: [PATCH 13/15] wip --- .github/workflows/ci.yml | 4 ++- Examples/CaseStudies/DynamicQuery.swift | 1 + Examples/CaseStudies/TransactionDemo.swift | 1 + Examples/Reminders/SearchReminders.swift | 1 + Examples/Reminders/TagsForm.swift | 1 + .../SQLiteData/CloudKit/CloudKitSharing.swift | 4 +-- .../Internal/DefaultNotificationCenter.swift | 1 + Sources/SQLiteData/Internal/Exports.swift | 28 +++++++++---------- 8 files changed, 24 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 726079c3..1b8a02b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,8 +21,10 @@ jobs: - uses: actions/checkout@v5 - name: Select Xcode ${{ matrix.xcode }} run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode }}.app + - name: Build ${{ matrix.config }} without exports + run: swift build -c ${{ matrix.config }} -Xswiftc -D -Xswiftc EXCLUDE_EXPORTS - name: Run ${{ matrix.config }} tests - run: swift test -c ${{ matrix.config }} -Xswiftc -D -Xswiftc EXCLUDE_EXPORTS + run: swift test -c ${{ matrix.config }} examples: name: Examples diff --git a/Examples/CaseStudies/DynamicQuery.swift b/Examples/CaseStudies/DynamicQuery.swift index a8936870..9d388edd 100644 --- a/Examples/CaseStudies/DynamicQuery.swift +++ b/Examples/CaseStudies/DynamicQuery.swift @@ -1,3 +1,4 @@ +import GRDB import SQLiteData import SwiftUI diff --git a/Examples/CaseStudies/TransactionDemo.swift b/Examples/CaseStudies/TransactionDemo.swift index dc4404eb..52e59300 100644 --- a/Examples/CaseStudies/TransactionDemo.swift +++ b/Examples/CaseStudies/TransactionDemo.swift @@ -1,3 +1,4 @@ +import GRDB import SQLiteData import SwiftUI diff --git a/Examples/Reminders/SearchReminders.swift b/Examples/Reminders/SearchReminders.swift index be22878f..caca0e59 100644 --- a/Examples/Reminders/SearchReminders.swift +++ b/Examples/Reminders/SearchReminders.swift @@ -1,3 +1,4 @@ +import GRDB import IssueReporting import SQLiteData import SwiftUI diff --git a/Examples/Reminders/TagsForm.swift b/Examples/Reminders/TagsForm.swift index ae97a2b4..250d193c 100644 --- a/Examples/Reminders/TagsForm.swift +++ b/Examples/Reminders/TagsForm.swift @@ -1,3 +1,4 @@ +import GRDB import SQLiteData import SwiftUI import SwiftUINavigation diff --git a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift index 15ab3f26..8fb00a0c 100644 --- a/Sources/SQLiteData/CloudKit/CloudKitSharing.swift +++ b/Sources/SQLiteData/CloudKit/CloudKitSharing.swift @@ -1,8 +1,8 @@ #if canImport(CloudKit) public import CloudKit - import Dependencies + public import Dependencies import GRDB - import SwiftUI + public import SwiftUI public import StructuredQueries #if canImport(UIKit) diff --git a/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift b/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift index 80a66a1f..0f0fb6b6 100644 --- a/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift +++ b/Sources/SQLiteData/CloudKit/Internal/DefaultNotificationCenter.swift @@ -1,4 +1,5 @@ #if canImport(CloudKit) && canImport(UIKit) + import Dependencies package import UIKit private enum DefaultNotificationCenterKey: DependencyKey { diff --git a/Sources/SQLiteData/Internal/Exports.swift b/Sources/SQLiteData/Internal/Exports.swift index 1724b4c2..c918ec4d 100644 --- a/Sources/SQLiteData/Internal/Exports.swift +++ b/Sources/SQLiteData/Internal/Exports.swift @@ -1,14 +1,14 @@ -//#if !EXCLUDE_EXPORTS -// @_exported import Dependencies -// @_exported import StructuredQueriesSQLite -// -// @_exported import struct GRDB.Configuration -// @_exported import class GRDB.Database -// @_exported import struct GRDB.DatabaseError -// @_exported import struct GRDB.DatabaseMigrator -// @_exported import class GRDB.DatabasePool -// @_exported import class GRDB.DatabaseQueue -// @_exported import protocol GRDB.DatabaseReader -// @_exported import protocol GRDB.DatabaseWriter -// @_exported import protocol GRDB.ValueObservationScheduler -//#endif +#if !EXCLUDE_EXPORTS + @_exported import Dependencies + @_exported import StructuredQueriesSQLite + + @_exported import struct GRDB.Configuration + @_exported import class GRDB.Database + @_exported import struct GRDB.DatabaseError + @_exported import struct GRDB.DatabaseMigrator + @_exported import class GRDB.DatabasePool + @_exported import class GRDB.DatabaseQueue + @_exported import protocol GRDB.DatabaseReader + @_exported import protocol GRDB.DatabaseWriter + @_exported import protocol GRDB.ValueObservationScheduler +#endif From d4fc56ea929f65f6b6c7a144ab406e46d31daee0 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Fri, 29 May 2026 17:40:15 -0500 Subject: [PATCH 14/15] wip --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1b8a02b1..0be9ca92 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: xcode: ["26.2"] - config: ["debug", "release"] + config: ["release"] runs-on: macos-26 steps: - uses: actions/checkout@v5 From d728025676e3c7746f1a6efa2e2c4c8032b75ab6 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Fri, 29 May 2026 17:52:48 -0500 Subject: [PATCH 15/15] wip --- Package@swift-6.0.swift | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/Package@swift-6.0.swift b/Package@swift-6.0.swift index 3b6db09a..683fd81e 100644 --- a/Package@swift-6.0.swift +++ b/Package@swift-6.0.swift @@ -70,18 +70,20 @@ let package = Package( swiftLanguageModes: [.v6] ) -let swiftSettings: [SwiftSetting] = [ - .enableUpcomingFeature("MemberImportVisibility") - // .unsafeFlags([ - // "-Xfrontend", - // "-warn-long-function-bodies=50", - // "-Xfrontend", - // "-warn-long-expression-type-checking=50", - // ]) -] - -for index in package.targets.indices { - package.targets[index].swiftSettings = swiftSettings +for target in package.targets { + target.swiftSettings = target.swiftSettings ?? [] + target.swiftSettings?.append(contentsOf: [ + .enableUpcomingFeature("ExistentialAny"), + .enableUpcomingFeature("ImmutableWeakCaptures"), + .enableUpcomingFeature("InferIsolatedConformances"), + .enableUpcomingFeature("InternalImportsByDefault"), + .enableUpcomingFeature("MemberImportVisibility"), + ]) + #if compiler(>=6.4) + target.swiftSettings?.append(contentsOf: [ + .treatAllWarnings(as: .error) + ]) + #endif } #if !os(Windows)